c++ / WinAPI Dialog-based Prog!

hi!
ich hab ein dialog-based Win-Api Programm geschrieben. Es kann ohne Error compiled werden, jedoch wird der Dialog beim ausführen nicht angezeigt.

ich habe viel gegoogled und kam immerwieder auf fast das selbe Ergebnis: diesen Code. Irgendwo habe ich auch gelesen, dass das dritte argument der DialogBox() funktion nicht NULL sein darf. Ich weiß allerdings nicht wie ich ein windowhandle übergeben soll, da ja noch keins existiert. Irgendwo habe ich auch
Code:
HWND hwnd = DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), hwnd, DialogProc);
gelesen. Das funktioniert aber auch nicht.


Code:
#include <windows.h>

#include "rc.h"

BOOL CALLBACK DialogProc (HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                   LPSTR lpCmdLine, int nCmdShow)
{
	DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DialogProc);
	return 0;
}

BOOL CALLBACK DialogProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
		case WM_INITDIALOG:
			return 1;
		case WM_CLOSE:
			EndDialog(hwnd,2);
			return 1;
	}
	return 0;
}

Wär nett wenn mir jmd helfen könnte, vielen dank im vorraus ;D

so long .. eQ
 
aloah,

bei mir ( vc 7 ) funktioniert der Code einwandfrei
prüfe doch mal, was DialogBox zurückgibt? sollte es -1 sein, tuts die Funktion nicht, andernfalls wüßte ich auch nicht viel weiter, vielleicht was an der resource-datei ...

dass hWndParent nicht NULL sein darf wüßt' ich nicht, denn laut MSDN ist DialogBox nur ein Macro mit CreateWindowEx, wo folgendes zu demselben Parameter steht:
hWndParent
[in] Handle to the parent or owner window of the window being created. To create a child window or an owned window, supply a valid window handle. This parameter is optional for pop-up windows.
und soweit ich verstehe bedeutet ein ungültiges Handle ein Fenster/Dialog ohne Eltern :)

und zum ersten Codestück:
Code:
HWND hwnd = DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), hwnd, DialogProc);
imho ist das Blödsinn, hwnd bekommt erst nach dem Aufruf von DialogBox einen Wert zugewisen, davor enthällt die Variable höchstens NULL oder ein rein zufälliger Wert.

maehbar,
aloah.
 
danke für deine Hilfe
ich hab mir flott ne funktion geschrieben:
Code:
void GetErr0rFromDialog(int erCode)
{
	if(erCode < 0) 
	{
		char erBuf[1];
		char erBuf2[16];
		
		wsprintf(erBuf,"%i",erCode);
		DWORD errCode = GetLastError();
		wsprintf(erBuf2,"%i",errCode);
		
		MessageBox(NULL, erBuf,
                       "DialogBox gibt zurück...",
                       MB_ICONINFORMATION | MB_OK | MB_DEFBUTTON1);
		MessageBox(NULL, erBuf2,
                       "Error-code...",
                       MB_ICONINFORMATION | MB_OK | MB_DEFBUTTON1);
	}
}

und bin fix über die in der msdn aufgeführten error-codes auf einen fehler in meiner .rc gestoßen. schuld war der resource-editor :>

gut nächtle ;)
 
Zurück
Oben