>>  Site Map >>  Forums >>  C/C++/C#

Forum module - topics in forum:



C/C++/C# - Ngôn ngữ lập trình cục mạnh, cho các phần mềm trên máy



Việt Hóa Common Dialog

Việt Hóa Common Dialog
Có 1 bạn trên diễn đàn đã đặt ra một câu hỏi là làm thế nào để Việt hóa dc các Common Dialog. (Bên Box C#).
Tôi cũng đã tìm hiểu vấn đề này. Và phát hiện ra 1 giải pháp cho nó. Sau đây tôi minh họa nó bằng C.
Minh họa OpenFileDialog mở 1 file, nhiều file thì các bạn có thể thay đổi 1 tí là xong.
Thứ nhất, bạn phải có 1 HookProc để nó chịu trách nhiệm Thay đổi Text của các control trong Common Dialog. Việc làm này đỏi hỏi bạn phải Biết ID của control trong Dialog đó. Việc này có thể thực hiện dc thông wa 1 tiện ích là Spy++ trong VC.



Visual-C++ Code: | Lựa chọn code | Ẩn/Hiện code |
UINT_PTR CALLBACK HookProc(HWND hdlg,
UINT uiMsg,
WPARAM wParam,
LPARAM lParam
)
{
HWND hDia;
HWND hOk;
switch(uiMsg)
{
case WM_INITDIALOG:
hDia = GetParent(hdlg);
SetDlgItemText(hDia,IDOK,TEXT("Cuxu"));
break;
}
return 0;
}

void OpenFile(HWND hwnd)
{
TCHAR buff[MAX_PATH];
buff[0]=NULL;
OPENFILENAME ofn;
ZeroMemory(&ofn, sizeof(OPENFILENAME));

ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.hInstance = GetModuleHandle(NULL);
//ofn.lpstrFilter = ;
//ofn.lpstrCustomFilter = ;
//ofn.nMaxCustFilter = 0;
//ofn.nFilterIndex = 0;
ofn.lpstrFile = buff;
ofn.nMaxFile = sizeof(buff) / sizeof(buff[0]);
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
// ofn.lpstrInitialDir = ;
// ofn.lpstrTitle = ;
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
// ofn.lpstrDefExt = ;
ofn.lCustData = 0;
ofn.lpfnHook = NULL;
ofn.lpTemplateName = NULL;
ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_ENABLEHOOK ;
ofn.lpfnHook = (LPOFNHOOKPROC) HookProc;
GetOpenFileName(&ofn);
}
Khi Show Dialog này, thì Đoạn Dialog này sẽ thay đổi nút text OK thành chữ Mở File
Như Thế ta hoàn toàn có thể thay đổi toàn bộ OpenDialog Theo ý mà mình muốn.

Demo
http://www.box.net/shared/a4f50tmgwk




Search from ALEXA


put your ads here