Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}