PDA

View Full Version : سوال: کد مسج باکس فارسی



Hossis
پنج شنبه 29 مرداد 1388, 07:12 صبح
این کد مسج باکس فارسی هست ،‌اگر ممکنه یکی برام تبدیل به وی بی دات نت بکنه
من تو یه خط به مشکل برخوردم همون خطی که UnderLine شده.



Option Explicit
Private m_hHook As Long
Private Const IDOK = 1
Private Const IDCANCEL = 2
Private Const IDABORT = 3
Private Const IDRETRY = 4
Private Const IDIGNORE = 5
Private Const IDYES = 6
Private Const IDNO = 7
Private Const WH_CBT = 5
Private Const GWL_HINSTANCE = (-6)
Private Const HCBT_ACTIVATE = 5
Private Declare Function GetCurrentThreadId Lib "kernel32" () 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 Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Public Sub MessageBoxH(hwndThreadOwner As Long)

Dim hInstance As Long
Dim hThreadId As Long

hInstance = GetWindowLong(hwndThreadOwner, GWL_HINSTANCE)
hThreadId = GetCurrentThreadId()

m_hHook = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHookProc, hInstance, hThreadId)

End Sub

Private Function MsgBoxHookProc(ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

If uMsg = HCBT_ACTIVATE Then
SetDlgItemText wParam, IDOK, "تایید"
SetDlgItemText wParam, IDCANCEL, "لغو"
SetDlgItemText wParam, IDABORT, "قطع عمل"
SetDlgItemText wParam, IDRETRY, "سعی مجدد"
SetDlgItemText wParam, IDIGNORE, "صرف نظر"
SetDlgItemText wParam, IDYES, "بلی"
SetDlgItemText wParam, IDNO, "نه"

UnhookWindowsHookEx m_hHook
End If
MsgBoxHookProc = False

End Function

Public Function MsgFox(Window As Form, Prompt As String, Optional msgStyle As VbMsgBoxStyle, Optional Title As String) As Long
MessageBoxH Window.hwnd
If IsMissing(msgStyle) Then msgStyle = vbOKOnly
If IsMissing(Title) Then Title = Window.Caption
MsgFox = MsgBox(Prompt, msgStyle + vbMsgBoxRtlReading + vbMsgBoxRight, Title)
End Function