2010-07-21 47 views
3

我已經建立了我控制我的窗口WM_CREATE消息是這樣的:如何使製表符與win32一起工作?我使用的不是一個對話框

case WM_CREATE: 
{ 
    CreateWindowA("button", "Refresh Listview", 
        BS_MULTILINE | WS_CHILD | WS_VISIBLE, 10, 10, 70, 50, 
        hwnd, (HMENU)IDC_REFRESHLW, g_hInst, NULL); 
    break; 
} 

當我按下標籤什麼都不做,我一定以某種方式初始化呢?

我注意到,如果我使用對話框,它已經自動具有標籤初始化,標籤順序是您在.rc文件中創建控件的順序。

但我不想要一個對話框!

感謝

回答

8

若要tab鍵切換到您需要構建到IsDialogMessage打電話到你的消息循環的對話工作。

你的消息循環應該是這個樣子:通過檢查郵件,看到如果一個VK_TAB或相關消息

HWND hwnd; // main window handle 

MSG msg; 
while(GetMessage(&msg,0,0,0)>0) 
{ 
    if(!IsDialogMessage(hwnd,&msg)) 
    { 
    TranslateMessage(&msg); 
    DispatchMessage(&msg); 
    } 
} 

IsDialogMessage作品 - 它會查看傳入的HWND看到其中的子窗口具有焦點,並且如果子窗口具有焦點,則使用WS_TABSTOP樣式搜索其他子窗口,並將焦點移動到窗口上的下一個啓用TABSTOP的控件。該窗口不必是使用此功能的對話框,只需具有可接受焦點的子窗口並具有WS_TABSTOP樣式。

+0

哇,謝謝。作品完美。我曾經看到過這個調用,但我認爲只有在使用對話框的情況下才能使用它。 非常感謝! – Kaije 2010-07-21 12:45:48

+0

@Chris謝謝你,最近設法打破了我的應用程序中的tab鍵和默認鍵,並修復了它。如果沒有你的答案,永遠不會解決問題! – 2011-10-24 11:33:59

相關問題