我正在嘗試爲C++應用程序運行GUI,但我遇到按鍵事件的問題。基本上,一切工作正常,只要我不點擊任何按鈕(主窗口註冊關鍵事件),但只要我點擊一個按鈕,主窗口失去焦點,它不再捕獲關鍵事件。這可能是一個愚蠢的問題,但我對C++非常陌生。這是一些我使用的代碼:當按下子按鈕時C++窗口失去焦點
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Application Name", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
540, /* The programs width */
250, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);
的一個按鈕的創作:
主窗口的創建
CreateWindow(TEXT("button"), TEXT("Start"),
WS_VISIBLE | WS_CHILD,
x, y, width, height,
hwnd, (HMENU) 6, NULL, NULL);
我也注意到,每當我點擊一個按鈕,WM_KILLFOCUS
事件被解僱,這就是爲什麼我認爲這是一個焦點問題。我也嘗試捕獲WM_KILLFOCUS事件,然後使用SetActiveWindow
再次設置焦點,但是這使我的程序崩潰。
任何幫助將不勝感激:)
按鈕是主窗口的一部分,誰獲得焦點呢?還是你用按鈕創建一個對話框,並且當你按下對話框中的按鈕時,對話框會獲得焦點? – PlasmaHH 2011-12-15 11:18:07
我只有一個帶有按鈕的主窗口。我在提供的代碼中創建窗口和按鈕,我不創建任何對話框。我不知道誰是重點,因爲每個按鈕都是一個窗口,我假設一旦點擊按鈕,按鈕就會獲得焦點。 – npinti 2011-12-15 11:20:25
我無法理解:(HMENU)6爲什麼需要它? – 2011-12-15 11:29:00