C 对话框不工作-win32 api

C 对话框不工作-win32 api,c,windows,winapi,C,Windows,Winapi,l使用MSVC++2010制作程序。在对话框过程工作之前,代码会编译并显示messagebox,但对话框不会弹出。但是,如果我将相同的代码带到Dev-C++中,它运行良好,但并非所有的下拉列表组合框都会显示出来 switch (message) { case WM_CREATE: MessageBox(hWnd, L"Run",L"Message",0);//Just for clarity DialogBox(((LPCREATESTRUCT)lParam)->hInst

l使用MSVC++2010制作程序。在对话框过程工作之前,代码会编译并显示messagebox,但对话框不会弹出。但是,如果我将相同的代码带到Dev-C++中,它运行良好,但并非所有的下拉列表组合框都会显示出来

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;


在资源文件中,将
的“选择类别”替换为
L的“选择类别”
的“MS Shell Dlg”
替换为
L的“MS Shell Dlg”
,等等


下一次请发布一个完整的代码,我们可以编译和测试。

考虑到最后对汉字的评论

要使用PCWSTR而不是const char*或PCSTR的数据类型。 因此正确的语法应该是
pcwstrchoice[]={L“string1”,L“string2”,L“etc”}


还请考虑每个字符串之前的L,这是因为MSVC++使用Unicode或Unicode打开IDE。

对不起,只是我觉得整个代码会有很大的变化,这就是为什么我把它切成大小的原因。然而,你救了我。嗯,问题又回来了。当我重新启动我的系统时,代码仍在编译,对话框不起作用。可能是我出了什么问题吗?完整源代码的链接看起来没有问题。我在我的机器上测试了它,它正常工作了。这里是VS2013解决方案,没有重大更改(只有文件名和#include可能不同,我已经删除了您尚未发送的图标):无论如何,不要混合使用ANSI、Unicode和TCHAR字符串。一个项目只使用一个字符集。推荐的字符集是Unicode或至少TChar。要点很简单:考虑写你的意思,而不是写一些东西,并希望有人可能得到,你的意思。我不知道你所说的“推荐字符集至少是[…]TCHAR”是什么意思。
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