الأخوة الأعزاء ..
كنت أستخدم Module في فيجوال بيسك 6.0 لتعريب أزرار المسج بوكس
و الآن و هاأنا أقوم بعمل أول مشروع باستخدام فيجوال ستوديو 2005 واجهت مشكلة لعرض أزارير المسج بوكس بالعربي يعني :
يعني أوافق = OK
نعم = Yes
لا = No
إلخ
هل ممكن ندرج المتغيرات العربية في الــ Resource File
بدلاً عن كتبة الكود الطويل الآتي في الــModule
Module Module1 ' 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 Const WS_EX_LAYOUTRTL = &H400000 Private Const GWL_EXSTYLE = (-20) ' Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex 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 Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long ' Public Sub MessageBoxH(ByVal hwndThreadOwner As Long) ' Dim hInstance As Long Dim hThreadId As Long ' hInstance = GetWindowLong(hwndThreadOwner, GWL_HINSTANCE) hThreadId = GetCurrentThreadId() ' 'm_hHook = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHookPro, hInstance, hThreadId) ' End Sub ' Private Function MsgBoxHookPro(ByVal uMsg As String, 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 ' MsgBoxHookPro = False End Function ' Sub OffMsg() ' UnhookWindowsHookEx(m_hHook) End Sub
الغريب في الكود السابق أنه لا يستطيع فهم AddressOf الموضحة و تحتها خط فوق