Cum schimbam numele clasei unui dialog?
Problema:Dialoagele fac parte din clasa fereastra predefinita "#32770". Se poate ivi cerinta de a schimba numele clasei unuia sau mai multe dialoage din aplicatie, de exemplu cu scopul de a fi usor diferentiate atunci cand le cautam cu FindWindow, FindWindowEx, etc sau atunci cand folosim o scula de testare automata.
Rezolvare:
VS6.0
- In fereastra "ResourceView" dau right-click pe radacina tree-ului si selectez "Properties".
- In dialogul "Resource File Properties" decheckuiesc "Enable MFC features".
- Dau right-click pe dialog template si aleg "Properties".
- In dialogul "Dialog Properties", introduc noul nume al clasei, ex. "Mama Leone"; NOTA: in lipsa primilor doi pasi, campul "Class name" este disabled.
- In sfarsit, in functia InitInstance al aplicatiei MFC adaug urmatorul cod:
Cod: WNDCLASS wc;
// Get the info for this class.
// #32770 is the default class name for dialogs boxes.
::GetClassInfo(AfxGetInstanceHandle(), _T("#32770"), &wc);
// Change the name of the class.
wc.lpszClassName = _T("Mama Leone");
// Register this class so that MFC can use it.
AfxRegisterClass(&wc);
- In fereastra "Resource View" dau right-click pe numele fisierului .rc si selectez "Properties"
- Schimb "MFC Mode" din True in False.
- ...Urmeaza pasi similari cu cei de la VS6.0...
Exemplu:
Cod: |
IDD_MY_DIALOG DIALOGEX 0, 0, 320, 200 STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_MODALFRAME | WS_SYSMENU EXSTYLE WS_EX_APPWINDOW CAPTION "My Dialog" CLASS "Mama Leone" |