VB MsgBox  中的VBYES \VBNO  的按钮上显示的 中文如何换成英文?

解决方案 »

  1.   

    新建一个模块放进去
    Option Explicit
    Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
    Private Declare Function SetDlgItemText Lib "user32" Alias "SetDlgItemTextA" (ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal lpString As String) As Long
    Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
    Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
    Private Const WH_CBT = 5
    Private Const HCBT_ACTIVATE = 5
    Private hHook As LongPrivate Function HookProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If nCode = HCBT_ACTIVATE Then
    Dim hwnd As Long
    hwnd = wParam
    SetDlgItemText hwnd, vbOK, ByVal "对拉~~"
    SetDlgItemText hwnd, vbCancel, ByVal "去死!!"
    SetDlgItemText hwnd, vbYes, ByVal "是"
    SetDlgItemText hwnd, vbNo, ByVal "否"
    SetDlgItemText hwnd, vbAbort, ByVal "放弃"
    SetDlgItemText hwnd, vbIgnore, ByVal "忽略"
    SetDlgItemText hwnd, vbRetry, ByVal "重试"
    UnhookWindowsHookEx hHook
    End If
    HookProc = 0
    End FunctionPublic Function MsgBox(Prompt As String, Optional Button As VbMsgBoxStyle = vbOKOnly, Optional Title As String) As VbMsgBoxResult
    If Len(Title) = 0 Then Title = App.Title
    hHook = SetWindowsHookEx(WH_CBT, AddressOf HookProc, App.hInstance, App.ThreadID)
    MsgBox = MessageBox(Form1.hwnd, Prompt, Title, Button)
    End Function
    下面这段在窗体Private Sub Command1_Click()
    If MsgBox("你好", vbOKCancel + vbInformation) = vbOK Then
    Call MsgBox("你按了OK", vbInformation)
    Else
    Call MsgBox("你按了NO", vbInformation)
    End If
    End Sub对啦 去死!!这些可以改成自己需要的英文
      

  2.   

    自己做个MSG BOX最简单,其他都比较麻烦
      

  3.   

    mculoverc
    的代码还是很好的。但最好能封装成类,自己在用的时候定义按钮显示的名称。比如保存时,二个按钮一个显示“保存”,一个显示“取消”,
    这样比较直观。
      

  4.   

    请问怎样将本机的图片贴上去,我给大家发一个直接修改Msgbox的效果图,就知道无所不能改
      

  5.   

    最简单的一个,使用MessageBoxEx函数创建一个MsgBox,在该函数中的最后一个参数可以设置语种Private Declare Function MessageBoxEx Lib "user32" Alias "MessageBoxExA" (ByVal hWnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal uType As Long, ByVal wLanguageId As Long) As Long
      

  6.   

    运行在英文版下就是英文了。我的 VB 是英文版的,但是只要在中文 Windows 下运行它编译的程序,系统对话框还是有汉字。在英文 Windows 下就全是英文。