gajahputih
Grünschnabel
Halo zusammen,
ich habe ein kleines problem mit WINAPI dll. Ich versuche gerade mittels Listboxs eines WINAPI dlls die Ergebnisse aus einem FORTRAN Programm darzustellen. Das Hauptgerüst besteht aus Unterprogramme die direkt aus FORTRAN aufgerufen wird (bezeichner: __stdcall). Das Callbackfunktion ist auch dabei.
Meine Frage : Warum funktioniert die zweiten Funktion zur Erzeugung des Dialogs nicht? Ich habe schon mal versuch mittels diesen Beiden Unterprogrammen ein Zeichenfenster zu erzeugen. Es funktioniert einwandfrei. Deshalb bin ich ein wenig Ratlos.
Ich bedanke mich im Voraus für euere Hilfe.
mit freundlichen Grüssen
Erwin
Erste void: Funktion : Klasse registrieren
void __stdcall
GWXOPEN(int *xsize, int *ysize, int *depth, int *revflag)
{
gwxInstance = GetModuleHandle(NULL);
gwxWndClass.cbSize = sizeof(gwxWndClass);
gwxWndClass.style = CS_HREDRAW | CS_VREDRAW;
gwxWndClass.lpfnWndProc = (WNDPROC)gwxWndProc;
gwxWndClass.cbClsExtra = 0;
gwxWndClass.cbWndExtra = 0;
gwxWndClass.hInstance = gwxInstance;
gwxWndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
gwxWndClass.hCursor = gwxNormalC;
gwxWndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
gwxWndClass.lpszMenuName = NULL;
gwxWndClass.lpszClassName = lpszAppName;
gwxRegister = RegisterClassEx(&gwxWndClass);
if(gwxRegister == 0) {
MessageBox(NULL, "Window Register Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
exit(1);
}
2. Funktion Die Listbox in Dialog initiieren
void __stdcall
GWXWINOPEN (int *xstart, int *ystart, int *xsize, int *ysize)
{
initthread = 0;
_beginthread(Thread1,0,NULL);
initthread = 1;
while(!initthread) {
Sleep(5);
}
}
Thread1(PVOID pvoid)
{
gwxDlg = CreateDialog(gwxInstance,
MAKEINTRESOURCE(IDD_FORMVIEW),
NULL,DialogProc);
if (gwxDlg == NULL) {
MessageBox(NULL, "Dialog Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
exit(1);
}
initthread =1;
while (1) {
if(PeekMessage(&Message, gwxDlg, 0, 0, PM_REMOVE)) {
if(Message.message==WM_QUIT)
break;
TranslateMessage(&Message);
DispatchMessage(&Message);
Sleep(1);
}
else {
GetCursorPos(&point);
win = WindowFromPoint(point);
Sleep(1);
}
}
}
Und letzendlich den Callback funktion
BOOL CALLBACK
DialogProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
return (TRUE);
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hDlg,0);
return (TRUE);
case IDOK:
Beep (1000,1000);
return (TRUE);
default:
break;
}
return (FALSE);
case WM_CLOSE:
PostQuitMessage(0);
EndDialog(hDlg,0);
return (TRUE);
}
return (FALSE);
}
ich habe ein kleines problem mit WINAPI dll. Ich versuche gerade mittels Listboxs eines WINAPI dlls die Ergebnisse aus einem FORTRAN Programm darzustellen. Das Hauptgerüst besteht aus Unterprogramme die direkt aus FORTRAN aufgerufen wird (bezeichner: __stdcall). Das Callbackfunktion ist auch dabei.
Meine Frage : Warum funktioniert die zweiten Funktion zur Erzeugung des Dialogs nicht? Ich habe schon mal versuch mittels diesen Beiden Unterprogrammen ein Zeichenfenster zu erzeugen. Es funktioniert einwandfrei. Deshalb bin ich ein wenig Ratlos.
Ich bedanke mich im Voraus für euere Hilfe.
mit freundlichen Grüssen
Erwin
Erste void: Funktion : Klasse registrieren
void __stdcall
GWXOPEN(int *xsize, int *ysize, int *depth, int *revflag)
{
gwxInstance = GetModuleHandle(NULL);
gwxWndClass.cbSize = sizeof(gwxWndClass);
gwxWndClass.style = CS_HREDRAW | CS_VREDRAW;
gwxWndClass.lpfnWndProc = (WNDPROC)gwxWndProc;
gwxWndClass.cbClsExtra = 0;
gwxWndClass.cbWndExtra = 0;
gwxWndClass.hInstance = gwxInstance;
gwxWndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
gwxWndClass.hCursor = gwxNormalC;
gwxWndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
gwxWndClass.lpszMenuName = NULL;
gwxWndClass.lpszClassName = lpszAppName;
gwxRegister = RegisterClassEx(&gwxWndClass);
if(gwxRegister == 0) {
MessageBox(NULL, "Window Register Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
exit(1);
}
2. Funktion Die Listbox in Dialog initiieren
void __stdcall
GWXWINOPEN (int *xstart, int *ystart, int *xsize, int *ysize)
{
initthread = 0;
_beginthread(Thread1,0,NULL);
initthread = 1;
while(!initthread) {
Sleep(5);
}
}
Thread1(PVOID pvoid)
{
gwxDlg = CreateDialog(gwxInstance,
MAKEINTRESOURCE(IDD_FORMVIEW),
NULL,DialogProc);
if (gwxDlg == NULL) {
MessageBox(NULL, "Dialog Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
exit(1);
}
initthread =1;
while (1) {
if(PeekMessage(&Message, gwxDlg, 0, 0, PM_REMOVE)) {
if(Message.message==WM_QUIT)
break;
TranslateMessage(&Message);
DispatchMessage(&Message);
Sleep(1);
}
else {
GetCursorPos(&point);
win = WindowFromPoint(point);
Sleep(1);
}
}
}
Und letzendlich den Callback funktion
BOOL CALLBACK
DialogProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
return (TRUE);
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hDlg,0);
return (TRUE);
case IDOK:
Beep (1000,1000);
return (TRUE);
default:
break;
}
return (FALSE);
case WM_CLOSE:
PostQuitMessage(0);
EndDialog(hDlg,0);
return (TRUE);
}
return (FALSE);
}