2016-01-09 120 views
-3

l使用MSVC++ 2010.製作程序。代碼編譯和對話框過程工作前的消息框但不彈出對話框。但是,如果我採用相同的代碼到Dev-C++,它運行良好,但不是所有的下拉列表組合框顯示。對話框不工作 - win32 api

switch (message) 
{ 
case WM_CREATE: 
    MessageBox(hWnd, L"Run",L"Message",0);//Just for clarity 
    DialogBox(((LPCREATESTRUCT)lParam)->hInstance,L"CHOICEBOX",hWnd,ComboDlg); 
    return 0; 

INT_PTR CALLBACK ComboDlg(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){//Dialog proc 
int i=0; static int firsttime=1; PWSTR input=NULL; 
switch(message) 
{ 
case WM_INITDIALOG: 
    //Dropdown combobox initialization 
     return (INT_PTR)TRUE; 

CHOICEBOX DIALOGEX 0, 0, 385, 279  //.rc 
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME 
CAPTION "Select Category" 
FONT 8, "MS Shell Dlg", 400, 0, 0x1 
BEGIN 
//comboboxes and static text controls 
END 

回答

1

考慮到對漢字的最後評論。

要使用的數據類型PCWSTR而不是const char *或PCSTR。 因此,正確的語法應該是PCWSTR Choice[]={L"string1", L"string2", L"etc"};

請注意每個字符串之前的L,這是因爲MSVC++使用UNICODE或者UNICODE在IDE上處於打開狀態。

1

在你的資源文件,替換"Select Category"L"Select Category""MS Shell Dlg"L"MS Shell Dlg"

而且下一次發佈完整的代碼,我們可以編譯和測試請。

+0

對不起,只是我覺得整個代碼將很多張貼,這就是爲什麼我裁剪它的大小。但是,你救了我。 – user2770352

+0

Humm,問題已經復發。當我重新啓動我的系統時,代碼編譯仍然無法使用對話框。我可能會犯錯嗎?完整源代碼的鏈接是[鏈接](http://pastebin.com/rhBNqjsr) – user2770352

+0

沒有看起來錯誤。我在我的機器上測試過它,它工作。這裏是VS2013的解決方案沒有顯着的變化(只有文件名和#包括可能會有所不同,我已經刪除了你沒有發送的圖標):http://www.megafileupload.com/eeW7/Win32Project1.zip – mikedu95