你把样式改成下面这样试试,多一个WS_SYSMENU:
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU如果还是有问题,那很可能是你的代码里改了风格、颜色什么的.

解决方案 »

  1.   


    谢谢你,不过我按你的说法改了之后还是不行,我在想是不是win7环境下运行的原因,毕竟VC6.0太久远了
      

  2.   

    我用win7好几年了,也经常用VC6,没发现你说的问题.
      

  3.   


    BOOL CALLBACK AboutDialogProc(
    HWND hwnd,
    UINT message,
    WPARAM wParam,
    LPARAM lParam
    )
    {
    switch(message)
    {
    case WM_INITDIALOG:
    return TRUE;
    case WM_COMMAND:
    switch(LOWORD(wParam))
    {
    case IDOK:
    EndDialog(hwnd,IDOK);
    break;
    case IDCANCEL:
    EndDialog(hwnd,IDCANCEL);
    break;
    default:
    return FALSE;
    }
    break;
    }
    return TRUE;
    }
      

  4.   


    case ID_MENU_ABOUTSOFTWARE:
    int dialogreturn = DialogBox(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_ABOUTDIALOG),hwnd,AboutDialogProc);
    switch(dialogreturn)
    {
    case IDOK:
    MessageBox(hwnd,"OK!","Dialogreturn",MB_OK);
    break;
    case IDCANCEL:
    MessageBox(hwnd,"CANCEL!","Dialogreturn",MB_OK);
    break;
    }
    break;
      

  5.   

    最后一个return改成return FALSE;
      

  6.   

    Typically, the dialog box procedure should return TRUE if it processed the message, and FALSE if it did not. If the dialog box procedure returns FALSE, the dialog manager performs the default dialog operation in response to the message.
      

  7.   

    BOOL CALLBACK AboutDialogProc(
    HWND hwnd,
    UINT message,
    WPARAM wParam,
    LPARAM lParam
    )
    {
    switch(message)
    {
    case WM_INITDIALOG:
    return TRUE;
    case WM_COMMAND:
    switch(LOWORD(wParam))
    {
    case IDOK:
    EndDialog(hwnd,IDOK);
    break;
    case IDCANCEL:
    EndDialog(hwnd,IDCANCEL);
    break;
    default:
    return FALSE;
    }
    break;
    }
    return TRUE;
    }
    26行 最后这个返回FALSE。不是TRUE
      

  8.   

    我调了一下才发现。VisualEleven一眼就看出来了,厉害啊