[MFC] Cum schimbam numele clasei unui dialog?

Despre MFC, ATL si alte biblioteci C++ de la Microsoft (forum moderat)
Post Reply
User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

[MFC] Cum schimbam numele clasei unui dialog?

Post by Ovidiu Cucu » 16 Jul 2007, 12:38

Problema
Dialogurile 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
  1. In fereastra "ResourceView" dau right-click pe radacina tree-ului si selectez "Properties".
  2. In dialogul "Resource File Properties" decheckuiesc "Enable MFC features".
  3. Dau right-click pe dialog template si aleg "Properties".
  4. In dialogul "Dialog Properties", introduc noul nume al clasei, ex. "Mama Leone"; NOTA: in lipsa primilor doi pasi, campul "Class name" este disabled.
  5. In sfarsit, in functia InitInstance al aplicatiei MFC adaug urmatorul cod:

    Code: Select all

       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);
VS2003, VS2005
  1. In fereastra "Resource View" dau right-click pe numele fisierului .rc si selectez "Properties"
  2. Schimb "MFC Mode" din True in False.
  3. ...Urmeaza pasi similari cu cei de la VS6.0...
NOTA: Numele clasei se poate adauga si manual in fisierul de resurse (.rc) folosind optiunea "CLASS".
Exemplu

Code: Select all

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"
Resurse << Back to MFC index
Last edited by Ovidiu Cucu on 31 May 2009, 14:07, edited 4 times in total.



User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: [MFC] Cum schimbam numele clasei unui dialog?

Post by Ovidiu Cucu » 24 May 2011, 18:30

Nota importanta
Dupa ce se schimba numele clasei trebuia check-uit la loc "Enable MFC features" (VS6.0) sau pus din nou pe True proprietatea "MFC Mode" (VS200x).
Altfel, editorul de resurse nu mai ofera suport specific MFC (adaugare controale ActiveX, adaugare de continut pentru combobox-uri, etc).

Vezi << Back to MFC index

Post Reply