I've got a dialog with a tab control. I fill each tab using a dialog resource. When I have another window in front of my app, clicking the blank space within the dialog (or any labels) won't bring it back to the top. It only becomes active again if I click on the title bar or a control (edit, combo box, anything). Any ideas why it would behave that way?
some of the code that might be relevant:
Code:DLG_RENEGADEX DIALOGEX 4,4,400,275 CAPTION PROGRAM_NAME FONT 10,"MS Sans Serif",400,0,0 STYLE WS_VISIBLE|WS_OVERLAPPEDWINDOW|DS_CENTER BEGIN CONTROL "",TAB_MAIN,"SysTabControl32",WS_CHILD|WS_VISIBLE|WS_TABSTOP|TCS_FOCUSNEVER,0,0,400,268 END DLG_HOOK DIALOGEX MOVEABLE PURE LOADONCALL DISCARDABLE 5,5,396,262 FONT 10,"MS Sans Serif",0,0,0 STYLE 0x0004 | WS_CHILD BEGIN CONTROL "",LSV_HOOK_PROCESSES,"SysListView32",WS_CHILD|WS_VISIBLE|WS_TABSTOP|LVS_REPORT|LVS_SINGLESEL,7,24,143,218,WS_EX_CLIENTEDGE CONTROL "",CMB_HOOK_PRESETS,"ComboBox",WS_CHILD|WS_VISIBLE|WS_TABSTOP|CBS_HASSTRINGS|CBS_DROPDOWNLIST,226,27,117,137Code:int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { INITCOMMONCONTROLSEX blah; blah.dwSize = sizeof(INITCOMMONCONTROLSEX); blah.dwICC = -1; InitCommonControlsEx(&blah); hinstMain = hInstance; hwndMain = CreateDialog(hInstance,MAKEINTRESOURCE(DLG_RENEGADEX),HWND_DESKTOP,MainProc); sprintf(ErrTxt, "%u", GetLastError()); if (!hwndMain) { MessageBox(NULL,ErrTxt, "debug",MB_OK); } if (!hwndMain) return FALSE; ShowWindow(hwndMain, nCmdShow); UpdateWindow(hwndMain); MSG msg; // HACCEL AccelMain = LoadAccelerators(hinstMain, "MainAccel"); while(GetMessage(&msg, NULL, 0, 0)) { //msg.hwnd could determine which procedure to translate accelerator for. // if (!TranslateAccelerator(hwndMain, AccelMain, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); // } } return (int)msg.wParam; } BOOL CALLBACK MainProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { HWND hTabCtrl = GetDlgItem(hwnd, TAB_MAIN); switch(Message) { case WM_INITDIALOG: { memset(&HookedProcess, 0, sizeof(PROCESS_INFORMATION)); LoadSettings(); InitTabControl(hwnd, lParam); } break; case WM_NOTIFY: { NMHDR *hdr = (LPNMHDR)lParam; if (hdr->code == TCN_SELCHANGING || hdr->code == TCN_SELCHANGE) { int index = TabCtrl_GetCurSel(hdr->hwndFrom); if (index >= 0 && index < NUM_TABS) ShowWindow(hTabDlgs[index], (hdr->code == TCN_SELCHANGE) ? SW_SHOW : SW_HIDE); } } break; case WM_CLOSE: { // Free........(); if (HookedProcess.hProcess) { CloseHandle(HookedProcess.hProcess); CloseHandle(HookedProcess.hThread); } DestroyWindow(hwnd); } break; case WM_DESTROY: { PostQuitMessage(0); } return 0; default: return FALSE; // return DefWindowProc(hwnd, Message, wParam, lParam); } // return 0; return DefWindowProc(hwnd, Message, wParam, lParam); //return 0 and default to DefWindowProc? } /*************************************************** Tab control ****************************************************/ int InitTabControl(HWND hwnd, LPARAM lParam) { TCITEM tabitem; HWND hTab; hTab = GetDlgItem(hwnd, TAB_MAIN); memset(&tabitem, 0, sizeof(tabitem)); tabitem.mask = TCIF_TEXT; tabitem.cchTextMax = MAX_PATH; tabitem.pszText = "Hook"; SendMessage(hTab, TCM_INSERTITEM, HOOK_TAB, (LPARAM)&tabitem); tabitem.pszText = "Search"; SendMessage(hTab, TCM_INSERTITEM, CODE_SEARCH_TAB, (LPARAM)&tabitem); tabitem.pszText = "Settings"; SendMessage(hTab, TCM_INSERTITEM, SETTINGS_TAB, (LPARAM)&tabitem); // Get the position that the dialogs should be displayed RECT rt,itemrt; // GetWindowRect(GetDlgItem(hwnd, LBL_TAB), &rt); GetWindowRect(hTab, &rt); TabCtrl_GetItemRect(hTab,1,&itemrt); rt.top -= (itemrt.top - itemrt.bottom); rt.bottom -= rt.top; rt.right -= rt.left; ScreenToClient(hTab, (LPPOINT)&rt); // Create the dialogs modelessly and move them appropriately hTabDlgs[HOOK_TAB] = CreateDialog((HINSTANCE)lParam, (LPSTR)DLG_HOOK, hTab, (DLGPROC)HookProc); hTabDlgs[CODE_SEARCH_TAB] = CreateDialog((HINSTANCE)lParam, (LPSTR)DLG_CODE_SEARCH, hTab, (DLGPROC)CodeSearchProc); hTabDlgs[SETTINGS_TAB] = CreateDialog((HINSTANCE)lParam, (LPSTR)DLG_SETTINGS, hTab, (DLGPROC)OptionsProc); MoveWindow(hTabDlgs[HOOK_TAB], rt.left, rt.top, rt.right, rt.bottom, 0); MoveWindow(hTabDlgs[CODE_SEARCH_TAB], rt.left, rt.top, rt.right, rt.bottom, 0); MoveWindow(hTabDlgs[SETTINGS_TAB], rt.left, rt.top, rt.right, rt.bottom, 0); // Show the default dialog ShowWindow(hTabDlgs[HOOK_TAB], SW_SHOW); return 0; }



LinkBack URL
About LinkBacks


