Klassenname für Dialog selbst festlegen

Rick-VB

Grünschnabel
Hallo,
ich möchte den Standard-Klassenname #Nummer (Dialog) in einen eigenen umändern. Der Code:

Code:
    WNDCLASS wndcls; 
    memset(&wndcls, 0, sizeof(WNDCLASS)); 

    wndcls.style         = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW; 
    wndcls.lpfnWndProc   = DefWindowProc; 
    wndcls.hInstance     = AfxGetInstanceHandle(); 
    wndcls.hIcon         = LoadIcon(IDR_MAINFRAME); 
    wndcls.hCursor       = LoadCursor(IDC_ARROW); 
    wndcls.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1); 
    wndcls.lpszMenuName  = NULL; 
    wndcls.lpszClassName = MY_CLASSNAME; // define MY_CLASSNAME = "MeineKLasse" 

    if(0 == AfxRegisterClass(&wndcls)) 
    { 
        TRACE("Class Registation Failed\n"); 
//        return FALSE; 
    } 

    m_bClassRegistered = true;

funktioniert (AfxRegisterClass() gibt ungleich 0 zurück) zwar, aber in Spy++ und mit GetClassName bekomme ich allerdings immer nur den Standardnamen.

Was mache ich da falsch oder habe vergessen? Ich verwende Studio 6.0 mit SP5 und ein MFC-Projekt (Dialog basierte Anwendung).
 
Äh, du musst die Klasse auch beim Erstellen des Fensters angeben. Und zwar musst du dann über die Create-Funktion von CWnd gehen:

CWnd::Create(
LPCTSTR lpszClassName,
LPCTSTR lpszWindowName,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID,
CCreateContext* pContext = NULL
);

Da kannst du deinen Klassennamen mit angeben. Wenn du deinen MFC-Hauptdialog als deine Klasse haben willst, musst du in der CMyApp::InitInstance das DoModal durch einen eigenen modalen MessageLoop ersetzen (der das Create aufruft).
 
Zurück