怎样才能改变AfxMessageBox提示框确定按钮上的文字

解决方案 »

  1.   

    怕是不行.
    如果你想做的话,自己建一个与MESSAGE BOX差不多的DIALOG.
    至于文字嘛,这时你想怎么改就怎么改了.不过,这有点麻烦,也好像有点笨.不过,我也想不出什么其它的方法了.
      

  2.   

    改变AfxMessageBox的一个参数就可以了,MB_ABORTRETRYIGNORE
    MB_OK 
    MB_OKCANCEL
    MB_RETRYCANCEL
    MB_YESNO 
    MB_YESNOCANCEL   提示框中就这么多种, 可以用“|”,如果需要别的按钮就建个自己的对话框吧如:AfxMessageBox("Name",MB_YESNO);
      

  3.   

    我是说把按钮上的“确定”改为我想要得文字
    重载AfxMessageBox行吗?
    网上找到一篇贴子,不过没看懂:
    是的,你能改变该对话框的按钮的标题,但需要一点小小的工作。你要重载DefWindowProc 函数,在调用MessageBox先登记一个窗口消息,然后在你的DefWindowProc(假定为 MyDefWindowProc)。先检查最顶层的窗口是否是同样你登录的消息对话框,如果是的话使用GetWindowLong你能很容易的发现当前的按钮控件并不是一个静态文本控件,用 SetWindowLong函数来改变按钮的文本。代码象这样 
    LRESULT MyDefwindowProc(...)
    {
    ....
    if(uMsg == YourRegisterMessage)
    {
    // loop for all message box control
    for(hwndControl = GetTopWindow(hwndMess);
        hwndControl && ((lpstrCaption = *(&((MESSAGE_INFO *)
        lParam)->Button1+uLoop)) != NULL);
        hwndControl = GetWindow(hwndControl, GW_HWNDNEXT))
    {
        // if static text, continue.
        if (GetWindowLong(hwndControl, GWL_ID) == -1)
            continue;
        else // change text.
        {
        SetWindowText(hwndControl, lpstrCaption);
        uLoop++;
        }
    }
    SetWindowLong(hwndMess, GWL_HWNDPARENT, (long)hwnd);
    .... // other codes line
    }
    else // if not your register message
        DefWindowProc(...);
    }