void SetupRSP_RegistersMain (HWND hDlg) { #define WindowWidth 630 #define WindowHeight 325 DWORD X, Y; hTab = CreateWindowEx(0,WC_TABCONTROL,"", WS_TABSTOP | WS_CHILD | WS_VISIBLE,5,6,616,290, hDlg,(HMENU)IDC_TAB_CONTROL,hinstDLL,NULL ); if ( hTab ) { TC_ITEM item; SendMessage(hTab, WM_SETFONT, (WPARAM)GetStockObject( DEFAULT_GUI_FONT ), 0); item.mask = TCIF_TEXT | TCIF_PARAM; item.pszText = " General Purpose "; item.lParam = GeneralPurpose; TabCtrl_InsertItem( hTab,0, &item); item.lParam = ControlProcessor0; item.pszText = " Control Processor 0 "; TabCtrl_InsertItem( hTab,1, &item); item.lParam = HiddenRegisters; item.pszText = " Hidden Registers "; TabCtrl_InsertItem( hTab,2, &item); item.lParam = Vector1; item.pszText = " RSP Vectors $v0 - $v15 "; TabCtrl_InsertItem( hTab,3, &item); item.lParam = Vector2; item.pszText = " RSP Vectors $v16 - $v31 "; TabCtrl_InsertItem( hTab,4, &item); } SetupRSP_HiddenPanel ( hDlg ); SetupRSP_CP0Panel ( hDlg ); SetupRSP_GPRPanel ( hDlg ); SetupRSP_Vect1Panel ( hDlg ); SetupRSP_Vect2Panel ( hDlg ); hStatic = CreateWindowEx(0,"STATIC","", WS_CHILD|WS_VISIBLE, 5,6,616,290,hDlg,0,hinstDLL,NULL ); #ifdef _M_IX86 RefreshProc = (FARPROC)SetWindowLong(hStatic, GWL_WNDPROC, (long)RefreshRSP_RegProc); #else DebugBreak(); #endif UpdateRSPRegistersScreen (); ShowRSP_RegisterPanel ( GeneralPurpose ); SetWindowText(hDlg," RSP Registers"); //if ( !GetStoredWinPos( "RSP Registers", &X, &Y ) ) { X = (GetSystemMetrics( SM_CXSCREEN ) - WindowWidth) / 2; Y = (GetSystemMetrics( SM_CYSCREEN ) - WindowHeight) / 2; //} SetWindowPos(hDlg,NULL,X,Y,WindowWidth,WindowHeight, SWP_NOZORDER | SWP_SHOWWINDOW); }
LRESULT CALLBACK RSP_Registers_Proc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { static RECT rcDisp; static int CurrentPanel = GeneralPurpose; TC_ITEM item; switch (uMsg) { case WM_INITDIALOG: RSP_Registers_hDlg = hDlg; SetupRSP_RegistersMain( hDlg ); break; case WM_MOVE: //StoreCurrentWinPos("RSP Registers",hDlg); break; case WM_SIZE: GetClientRect( hDlg, &rcDisp); TabCtrl_AdjustRect( hTab, FALSE, &rcDisp ); break; case WM_NOTIFY: switch (((NMHDR *)lParam)->code) { case TCN_SELCHANGE: InvalidateRect( hTab, &rcDisp, TRUE ); HideRSP_RegisterPanel (CurrentPanel); item.mask = TCIF_PARAM; TabCtrl_GetItem( hTab, TabCtrl_GetCurSel( hTab ), &item ); CurrentPanel = item.lParam; InvalidateRect( hStatic, NULL, FALSE ); UpdateRSPRegistersScreen(); ShowRSP_RegisterPanel ( CurrentPanel ); break; } break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL: CurrentPanel = GeneralPurpose; EndDialog( hDlg, IDCANCEL ); break; } default: return FALSE; } return TRUE; }