Formular wird nicht angezeigt
-
Moin moin und frohe Weihnachten,
Ich habe folgendes Problem:
Im res-editor von VC 2008 habe ich einen Dialog erstellt.
//#define RECURSIV #include <stdio.h> #include <windows.h> #include "resource.h" #include <stdlib.h> #include <memory.h> HWND hWnd=NULL; HANDLE hEvent; HINSTANCE hInst; BOOL WINAPI SudokuProc(HWND hDlg, unsigned msg, WPARAM wP, LPARAM lP) { MessageBox(NULL,L"hallo",L"hallo",NULL); switch(msg) { case WM_INITDIALOG: MessageBox(NULL,L"hallo",L"hallo",NULL); return TRUE; case WM_COMMAND: switch(LOWORD(wP)) { } return TRUE; } return FALSE; } int WINAPI WinMain(HINSTANCE hInst1, HINSTANCE hPrevInst, LPSTR lpCmd, int nShowCmd) { MSG msg; hInst=hInst1; hWnd=CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, SudokuProc, NULL); if(!hWnd) GetLastError(); ShowWindow(hWnd, SW_SHOW); while(GetMessage(&msg, 0,0,0)) { if(IsWindow(hWnd)) if(!IsDialogMessage(hWnd, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } else { TranslateMessage(&msg); DispatchMessage(&msg); } } return 0; }BOOL WINAPI SudokuProc() wird garnicht erst aufgerufen und somit auch kein "hallo" ausgegeben.
CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, SudokuProc, NULL);Gibt laut debugger NULL zurück und hWnd wird somit nicht verändert (NULL).
Das Programm startet, aber es wird kein Fenster angezeigt.
Hat jemand eine Idee wie ich das Problem lösen kann ?Danke
Lusches
-
ich glaube nicht dass man einen dialog so einfach auf dem Desktop aufrufen kann...
wieso machst du kein richtiges Fenster und machst dann darauf deinen Dialog?
-
Ich bin dem Problem auf der Spur.
Nach dem erstellen eines neuen Windows-projekts mit eigenem Hauptfenster bekomme wurde wieder kein Dialog angezeigt.Wenn ich anstatt einer IDD_FORMVIEW-Ressource einen IDD_PROPPAGE_LARGE -dialog verwende funktioniert die ganze Sache mit folgendem Quelltext:
HWND hWnd1; hWnd1 = CreateDialogParam(hInstance, MAKEINTRESOURCE(IDD_MAIN), hWnd, mainwindow, NULL); ShowWindow(hWnd1, SW_SHOW);Wieso funktioniert das ganze nicht mit IDD_FORMVIEW ? Muss ich dazu andere Funktionen verwenden ?
-
hat keine einen Lösung für mein Problem ?
Gruß,
Lusches
-
InitCommonControls()
-
So ganz verstehe ich die Frage nicht!
Da gibt es ein WinMaín mit einer Nachrichtenschleife. Nun soll noch ein Dialog direkt aus WinMain aufgerufen werden. Das geht natürlich. Doch wenn alles in der Hauptnachrichtenschleife von WinMain erledigt werden soll, dann sind einige Dinge zu beachten:
- Der Dialog sollte moduslos sein
- Die Nachrichtenschleife muss um das Handle von hnwdDialog erweitert sein
Wenn dies die gewünschte Zielsetzung ist, findet sich mehr dazu bei Charles Petzold: "Windows Programmierung"