2010-11-05 16 views
0

我創建了一個編輯框,但它不顯示在窗口上。它顯示如果窗口不是全屏。如果它是全屏,則編輯框會放在它後面。這裏是編輯框C++編輯框放在主窗口後面

HWND editbox=CreateWindowA("EDIT", NULL, 
         WS_VISIBLE | WS_EX_TOPMOST | WS_BORDER | ES_LEFT, 
         87, 81, 150, 17, 
         hWnd, 
         (HMENU)5, hInstance, NULL); 

我不知道爲什麼它,我將其設置爲WS_EX_TOPMOST,它仍然去它背後的功能。我使用的DirectX 9,使我的程序以全屏幕

回答

2

所有WS_EX_**的風格應該爲CreateWindowEx第一的說法,中CreateWindow不是第三傳遞。這可能會導致問題。改爲使用CreateWindowExACreateWindowEx中的所有參數都保持不變,開頭只有一個附加參數。

HWND editbox=CreateWindowExA(WS_EX_TOPMOST, "EDIT", NULL, 
        WS_VISIBLE | WS_BORDER | ES_LEFT, 
        87, 81, 150, 17, 
        hWnd, 
        (HMENU)5, hInstance, NULL); 



編輯:我知道什麼是錯誤的。您在第三個參數中忘記了WS_CHILD樣式。 Windows需要這樣才能知道這是一個子窗口。

HWND editbox=CreateWindowA("EDIT", NULL, 
       WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT, 
       87, 81, 150, 17, 
       hWnd, 
       (HMENU)5, hInstance, NULL); 
+0

試過沒有工作;/ – Ramilol 2010-11-05 21:48:46

+0

什麼我試過,複製粘貼它仍然無法正常工作 – Ramilol 2010-11-05 21:51:33

+0

你對。檢查我的編輯,它現在應該工作。 – rhino 2010-11-05 21:55:53

2

HWND編輯框= CreateWindowA( 「EDIT」,NULL, WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT, 87,81,150,17, 的hWnd, (HMENU)5,的hInstance,NULL);

,如果你想顯示的新的控制之上的窗口WS_CHILD需要...