INT_PTR CALLBACK SearchDlg(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { NMHDR *nmhdr; static BOOL fMouseDown = FALSE; static POINT ptLastPos; static BOOL fFirstTime = TRUE; HWND hwndCombo; HWND hwndHV = g_hwndHexView; switch(msg) { case WM_INITDIALOG: AddSearchTabs(hwnd); // text (UTF8/UTF16/UTF32) hwndCombo = GetDlgItem(g_hwndFindPane[1], IDC_COMBO_DATATYPE); AddSearchTypes(hwndCombo, SEARCHTYPE_ASCII, SEARCHTYPE_UTF32, 0); //AddComboStrings(g_hwndFindPane[1], IDC_COMBO_DATATYPE, szTextNames); // numbers (byte/word/dword/float/double) hwndCombo = GetDlgItem(g_hwndFindPane[2], IDC_COMBO_DATATYPE); AddSearchTypes(hwndCombo, SEARCHTYPE_BYTE, SEARCHTYPE_DOUBLE, 0); //AddComboStrings(g_hwndFindPane[2], IDC_COMBO_DATATYPE, szNumberNames); // replace (everything) hwndCombo = GetDlgItem(g_hwndFindPane[3], IDC_COMBO_DATATYPE); AddSearchTypes(hwndCombo, SEARCHTYPE_HEX, SEARCHTYPE_HEX, 0); AddSearchTypes(hwndCombo, SEARCHTYPE_ASCII, SEARCHTYPE_UTF32, 0); AddSearchTypes(hwndCombo, SEARCHTYPE_BYTE, SEARCHTYPE_DOUBLE, 0); //AddComboStrings(g_hwndFindPane[3], IDC_COMBO3, szHexNames); //AddComboStrings(g_hwndFindPane[3], IDC_COMBO3, szTextNames); //AddComboStrings(g_hwndFindPane[3], IDC_COMBO3, szNumberNames); if(fFirstTime) { CenterWindow(hwnd); fFirstTime = FALSE; } else { SetWindowXY(hwnd, ptLastPos.x, ptLastPos.y, NULL); } return FALSE; //case WM_SETFOC case WM_NOTIFY: nmhdr = (NMHDR *)lParam; if(nmhdr->code == TCN_SELCHANGE) { nCurrentFindTab = TabCtrl_GetCurSel(nmhdr->hwndFrom); SetFindTab(hwnd, nCurrentFindTab, fMouseDown); return TRUE; } else if(nmhdr->code == TCN_SELCHANGING) { fMouseDown = (GetKeyState(VK_LBUTTON) & 0x80000000) ? TRUE : FALSE; } else if(nmhdr->code == NM_RELEASEDCAPTURE) { fMouseDown = FALSE; } break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDCANCEL: DestroyWindow(hwnd); return TRUE; case IDC_REPLACE: Replace(GetCurFindTab(hwnd), hwndHV); return TRUE; case IDC_REPLACEALL: return TRUE; case IDOK: Find(GetCurFindTab(hwnd), hwndHV); return TRUE; } return TRUE; case WM_MOVE: { RECT rect; GetWindowRect(hwnd, &rect); ptLastPos.x = rect.left;//(short)LOWORD(lParam); ptLastPos.y = rect.top;//(short)HIWORD(lParam); } return TRUE; case WM_CLOSE: DestroyWindow(hwnd); return TRUE; case WM_DESTROY: g_hwndSearch = 0; return TRUE; } return FALSE; }
BOOL CALLBACK SearchDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { NMHDR *nmhdr; static BOOL fMouseDown = FALSE; switch(msg) { case WM_INITDIALOG: AddSearchTabs(hwnd); return FALSE; case WM_NOTIFY: nmhdr = (NMHDR *)lParam; if(nmhdr->code == TCN_SELCHANGE) { int i; int idx = TabCtrl_GetCurSel(nmhdr->hwndFrom); HWND hwndPanel; for(i = 0; i < MAX_FIND_PANES; i++) { if(i != idx) { //DelStyle(g_hwndFindPane[i], WS_VISIBLE); ShowWindow(g_hwndFindPane[i], SW_HIDE); } } hwndPanel = g_hwndFindPane[idx]; SetWindowPos(g_hwndFindPane[idx], HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW); if(fMouseDown) { SetFocus(GetDlgItem(hwndPanel, IDC_COMBO1)); PostMessage(hwndPanel, WM_NEXTDLGCTL, IDC_COMBO1, TRUE); } return TRUE; } else if(nmhdr->code == TCN_SELCHANGING) { fMouseDown = (GetKeyState(VK_LBUTTON) & 0x80000000) ? TRUE : FALSE; } else if(nmhdr->code == NM_RELEASEDCAPTURE) { fMouseDown = FALSE; } break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDCANCEL: DestroyWindow(hwnd); return TRUE; } return TRUE; case WM_CLOSE: DestroyWindow(hwnd); return TRUE; case WM_DESTROY: g_hwndSearchDlg = 0; return TRUE; } return FALSE; }