DialogBox()我有一堆從資源檔案中的定義創建的對話框。對話框有一堆用EDITTEXT陳述句(和其他一些)創建的控制元件。
我注意到Ctrl A它不能作為選擇所有文本的熱鍵。我該如何添加它?
“全選”出現在彈出的背景關系選單中,如果用滑鼠選擇,則可以正常作業。
uj5u.com熱心網友回復:
編輯控制元件本身不支持Ctrl A(即使它們的背景關系選單中有此命令)。
如果要向編輯控制元件添加Ctrl A處理,可以通過子類化來完成。
例如,
LRESULT CALLBACK CtrlASubProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData)
{
if (uMsg == WM_DESTROY)
RemoveWindowSubclass(hWnd, CtrlASubProc, uIdSubclass);
else if (uMsg == WM_GETDLGCODE && wParam == 'A')
{
if (GetKeyState(VK_CONTROL) < 0)
return DLGC_WANTALLKEYS | DLGC_WANTMESSAGE;
}
else if (uMsg == WM_CHAR && wParam == 1) // ctrl-A
{
SendMessage(hWnd, EM_SETSEL, 0, -1);
return 0;
}
return DefSubclassProc(hWnd, uMsg, wParam, lParam);
}
void AddCtrlAHandlingToEditControl(HWND hwndEdit)
{
SetWindowSubclass(hwndEdit, CtrlASubProc, 0, 0);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/483262.html
