000
01.08.2004, 22:56 Uhr
~Dirk
Gast
|
Hi,
ich habe in der DLLMain ein Fenster erstellt. Dieses wird ordnungsgemäß angezeigt, sobald die Applikation, die DLL lädt. Wenn ich die Applikation beende bekomme ich nun aber jedes Mal einen Speicherfehler. Was muss ich tun? Muss ich das erstellte Fenster wieder freigeben?
Hier mein Code:
Code: |
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { //unsichtbares Fenster erstellen HWND hwnd ; MSG msg ; WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = (HINSTANCE)hModule ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = "CWindow" ;
RegisterClass (&wndclass);
hwnd = CreateWindow ("CWindow",// Name der Fensterklasse "Window", // Fenstertitel WS_OVERLAPPEDWINDOW, // Fensterstil CW_USEDEFAULT, // X-Position des Fensters CW_USEDEFAULT, // Y-Position des Fensters CW_USEDEFAULT, // Fensterbreite CW_USEDEFAULT, // Fensterhöhe NULL, // übergeordnetes Fenster NULL, // Menü (HINSTANCE)hModule, // Programm-Kopiezähler (Programm-ID) NULL) ; // zusätzliche Parameter
ShowWindow (hwnd, SW_SHOWNORMAL) ;
while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; }
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_DESTROY: PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; }
|
Vielen Dank schonmal
Dirk |