2016-01-09 78 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