程序是基于 WIN32 APPLICATION的 ,本人初学代码片段:int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow){
int err;err=DialogBox(hInstance,(LPCTSTR)IDD_CHAT_DIALOG,NULL,(DLGPROC)WndProc);
if (err==-1)
MessageBox(NULL,"生成窗体失败!",NULL,NULL);
return 0;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HWND subWnd;
char Buffer[BUFFER_SIZE];
UINT Port;
char serverIP[16];
switch (message)
{
case WM_INITDIALOG:
{
//初始化SOCKET栈
WSADATA wsadata;
if (WSAStartup(MAKEWORD(2,2),&wsadata)!=0)
{
MessageBox(hWnd,"Socket Stack error!","error",IDOK);
return -1;
} }
return TRUE;
case WM_COMMAND://各种控件信息
{
switch(LOWORD(wParam))
{
case IDOK://确定按钮
case IDCANCEL://取消按钮
EndDialog(hWnd,LOWORD(wParam));
break;
case IDC_CONNECT://连接服务器按钮
{
subWnd=GetDlgItem(hWnd,IDC_LISTEN_PORT_C);
GetWindowText(subWnd,Buffer,BUFFER_SIZE);
Port=UINT(atoi(Buffer));
subWnd=GetDlgItem(hWnd,IDC_SERVERIP);
GetWindowText(subWnd,Buffer,BUFFER_SIZE);
strncpy(serverIP,Buffer,16);
ClientInit(hWnd,Port,serverIP);//客户端初始化
}
break;
case IDC_LISTEN://建立服务器按钮
{
if(HIWORD(wParam)==EN_UPDATE)//响应EN——UPDATE消息
{
SendMessageToPeer(hWnd);//调用处理用户输入
}
}
default:
break;
}
}

         。
         。
         。}

解决方案 »

  1.   

    你在对话框上用了什么控件?
    在这句err=DialogBox(hInstance,(LPCTSTR)IDD_CHAT_DIALOG,NULL,(DLGPROC)WndProc); 前调用 InitCommonControls();一下
    example:
    ...
    InitCommonControls(); // 或者InitCommonControlsExerr=DialogBox(hInstance,(LPCTSTR)IDD_CHAT_DIALOG,NULL,(DLGPROC)WndProc); 
    ...
      

  2.   

    我加了四个 EDIT BOX 一个 IP ADDRESS  几个按钮 还有两个GROUP BOX
      

  3.   

    DialogBox(hInstance,MAKEINTRESOURCE(IDD_CHAT_DIALOG),NULL,(DLGPROC)WndProc); 
      

  4.   

    楼上给的这个MAKEINTRESOURCE  我也用了,还是一样啊
      

  5.   

    调用GetLastError看是什么错误。
      

  6.   

    err=DialogBox(hInstance,MAKEINTRESOURCE(IDD_CHAT_DIALOG),NULL,(DLGPROC)WndProc);
    DWORD ERRE=GetLastError();
    出来错误代码ERRE:3435973836
      

  7.   

    改回来:err=DialogBox(hInstance,(LPCTSTR)IDD_CHAT_DIALOG,NULL,(DLGPROC)WndProc);
    DWORD ERRE=GetLastError();
    现在ERRE=0
      

  8.   

    按照 1楼我说的做了没?
    如果按照了还搞不定你发代码给我(压缩好整个工程):[email protected]
    马上帮你看看
      

  9.   

    导致DialogBox失败的主要原因:
    1、参数不正确: IDD_CHAT_DIALOG是否有效资源等
    2、对话框资源所用的控件类型必须都已注册,通过调用InitCommonControlsEx函数若上述手段都无效,建议新建一个项目逐步移植。
      

  10.   

    InitCommonControls 这个吧,我试过了不行,报错。
    我马上发过代码来,感谢。
      

  11.   

    搞定了,你看你的resource.h这个文件有两个宏定义成一样的了
    #define IDS_APP_TITLE                   103
    #define IDD_CHAT_DIALOG                 103我把它改成:#define IDS_APP_TITLE                   103
    #define IDD_CHAT_DIALOG                 101还有按照我在1楼所说的做就好了,否则会生不成窗口小结一下:你这个对话框是自己在资源编辑器可电视化拖放出来的,那资源ID资源编辑器会自动帮你生成的,你没必要手工去改动resource.h这个头文件(除非有特殊要求),结果出错了你弄半天又找不到原因。
      

  12.   

    谢谢dyw 的分析和提示,按照你的思路我接着再试试。
      

  13.   

    是不是改成 #define   IDD_CHAT_DIALOG                                   101 这样就可以了,不再需要InitCommonControls();,而且InitCommonControls();报未定义错误,需要加声明吗?
      

  14.   

    InitCommonControls函数在 commctrl.h这个头文件中声明,需要 #include <commctrl.h>
      

  15.   

    成功了,我把对话框的属性 no createfail 选上,窗口就出来了。太不容易了,谢谢大家一直在这里帮忙,感谢。马上结贴