Window.h in sequentiellem Code benutzen



  • Hallo,

    kann ich in einem sequentiellen Code eine Windowsform erzeugen um mir
    darauf Zwischenergebnisse anzeigen zu lassen?
    Das Problem ist, dass mein Code schon sehr weit fortgeschritten ist und ich würde das jetzt gerne einbauen. Allerdings funktioniert das Programmieren in Ereignisgesteuerten Programmen ja etwas anders.

    Die erste Funktion muss ja ein int WINAPI WinMain(...) sein. Aber ich habe ja schon eine int main(...) Funktion. Außerdem wäre es unschön, wenn ich den ganzen Code von WinMain in meine Main Function schreiben müsste... kann ich diese Funktion dann irgendwie in ein Header packen?

    Die Function sieht wie folgt aus:

    //Header for Windows
    #ifndef WINDOWS_H
    	#define WINDOWS_H
    	#include <windows.h>
    #endif
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){
    	HINSTANCE hProgram;
    	HWND hWnd;
    	MSG msg;
    	WNDCLASSEX wndclass;
    
    	char capname[10];
    
    	//Register window
    	hProgram=hInstance;
    	strcpy(capname, "W0");
    	wndclass.cbSize=sizeof(wndclass);
    	wndclass.style=CS_HREDRAW|CS_VREDRAW;
    	wndclass.lpfnWndProc=W0_WinProc;
    	wndclass.cbClsExtra=0;
    	wndclass.cbWndExtra=0;
    	wndclass.hInstance=hProgram;
    	wndclass.hIcon=NULL;
    	wndclass.hCursor=LoadCursor(NULL, IDC_ARROW);
    	wndclass.hbrBackground=CreateSolidBrush(RGB(00,200,200));
    	wndclass.lpszMenuName=capname;
    	wndclass.lpszClassName=capname;
    	wndclass.hIconSm=NULL;
    	RegisterClassEx(&wndclass);
    
    	hWnd=CreateWindow(capname, "Mesh Output W0", WS_OVERLAPPEDWINDOW, 100,100,400,300,NULL,NULL,hProgram,NULL);
    
    	ShowWindow(hWnd, iCmdShow);
    
    	while(GetMessage(&msg, NULL, 0, 0)){
    	    TranslateMessage(&msg); //Subfunction
                DisparchMessage(&msg); //Subfunction
    	}
    
    	return msg.wParam;
    }
    

    Diese soll nun wie folgt ausgeführt werden:

    int main(){
    
    /*Jede Menge Code
    ...
    ...*/
    
    //Darstellung der aktuellen Werte einer iterativen Berechnung
    WinMain();
    
    return 0;
    


  • Das Windowsprogramm könnte einen Thread starten, der den sequenziellen Code ausführt.



  • Weswegen brauchst du denn überhaupt WinMain und main ? Dass wWinMain bzw. WinMain ein Muss für Programme mit GUI ist, basiert wahrscheinlich auf einen Missverständnis. Mit main hast du zudem (normalerweise) noch die Konsole.

    hInstance erhältst du per __ImageBase und iCmdShow per GetStartupInfo. hPrevInstance ist unnötig (Win16-Überbleibsel) und szCmdLine verwendest du glücklicherweise nicht.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (alle ISO-Standards) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten