在VC6为什么用DialogBox()函数只能弹出一次对话框啊?
case 103:
{
  DialogBox(hInst,(LPSTR)IDD_UP,hwnd,(DLGPROC)DiaUPProc);//pop name password dialog
}break;
就是这一句,程序运行起来后,只有第一次点这个ID为103的BOTTOM,才会弹出这个对话框,关闭了弹出的对话框后再点这个ID为103的BOTTOM就不会弹出这个对话框,大家看看这是为什么啊??

解决方案 »

  1.   

    完整的程序块是这样的,在运行的时候MessageBox(hwnd,"","",MB_OK);每次都可以正常的出现,不过后面的DialogBox(hInst,(LPSTR)IDD_UP,hwnd,(DLGPROC)DiaUPProc);//pop name password dialog却只能出现一次,case 103:
    {
    MessageBox(hwnd,"","",MB_OK);
    DialogBox(hInst,(LPSTR)IDD_UP,hwnd,(DLGPROC)DiaUPProc
    usingNet=true;
    bool suc = true;
    //WSAStartup function returns zero if successful
    if(WSAStartup(MAKEWORD(1,1),&wsd)!=0){
    //MessageBox();
    WSACleanup();
    suc = false;
    }
    if(suc &&( s=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET ){
    WSACleanup();
    suc = false;
    } server.sin_family=AF_INET;
    server.sin_addr.s_addr=inet_addr(_IP);
    server.sin_port=htons(_PORT);
    WSAAsyncSelect(s,hWnd,UM_SOCK,FD_CONNECT|FD_READ|FD_WRITE|FD_CLOSE);
    connect(s,(struct sockaddr *)&server,sizeof(server));
    }break;
      

  2.   

    DiaUPProc
    这函数呢
    创建,销毁都在这里进行!麻烦干吗不用mfc的dialog !
      

  3.   

    DialogBox(hInst,MAKEINTRESOURCE(IDD_UP),hwnd,(DLGPROC)DiaUPProc);
    试试看,这个问题倒确实是第一次听说。
    有可能是你的内存已经出现问题了,可以看看你的内存情况。
      

  4.   

    DialogBox完了之后要EndDialog销毁,你做了吗?
      

  5.   

    BOOL CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {
    switch (uMsg)
    {
    case WM_CLOSE:
    EndDialog(hwndDlg,IDCANCEL);
    break;
    }
    return 0;
    }DialogBox(NULL,(LPSTR)IDD_ABOUTBOX,m_hWnd,(DLGPROC)DialogProc);如果还有不明白的,我给你作一个,[email protected]
      

  6.   

    DialogBox創建的是模式對話框,當然只能彈出一個了!
      

  7.   

    楼上:DialogBox創建的是模式對話框,當然只能彈出一個了!
    这个与模式对话框、非模式对话框无关吧?