Wie erzeugt man eine Programmoberfläche über Ressourcen?



  • Hallo zusammen,

    leider hab ich zu folgendem noch nicht viel im Internet gefunden:

    Wie kann ich meine Programmoberfläche über eine Ressource gestalten?
    Also ich weiß, dass es Dialog-Ressourcen gibt, die man mit VC auch super erzeugen kann. Aber wie verwende ich diese Resource dann um mir damit meine Oberfläche aufzubauen und sie mit Code zu verknüpfen?

    Ich denke, dass diese Methode nicht so ungebräuchlich ist, weil wer will schon seine case WM_CREATE: mit ewig vielen CreateWindow-Anweisungen pflastern bis er seine gewünschte Oberfläche hat?

    Cool wäre, wenn jemand ein kleines Beispielprogramm hätte...

    Danke schonmal!

    Viele Grüße,

    Matthias



  • Wo ist denn das Problem ?
    Kannst du mit VC umgehen (sry das ich dsa Frage, aber ich versteh deine Frage nit ganz)...

    Aber wie verwende ich diese Resource dann um mir damit meine Oberfläche aufzubauen und sie mit Code zu verknüpfen?

    - script.rc ins Projekt einbinden
    - resource.h ins Programm inkludieren

    ...und ferisch

    Ach ja:
    Wenn du einen Dialog über ne Resource laden wills, musst du zusätzlich den Dialog über DialogBox bzw. CreateDialog erstellen.

    PS: Man unterscheidet zwischen einer "Dialog basierten Anwenung" (modal / nicht modal) und einer 'normelen' Win32-Anwendung... siehe dazu auch:
    [url]
    http://winapi.net/index.php?inhalt=tipp1
    [/url]
    und
    [url]
    http://winapi.net/index.php?inhalt=tipp2
    [/url]
    bzw. der Mix aus beiden:
    [url]
    http://winapi.net/index.php?inhalt=tipp3
    [/url]

    Hoffe ich könnte weiterhelfen...

    MfG CodeFinder



  • Naja, wo ich nicht ganz sicher bin:

    Wenn ich meine Programmoberfläche mit einer Ressource machen will, erzeuge ich dann eine Dialog-Ressource, erzeuge mir ein Fenster mit CreateWindow und erzeuge mir dann als Child davon einen Dialog aus meiner Res?
    Geht das nur so?
    Dabei hab ich dann das Problem, wenn ich die Größe von dem Hauptfenster ändere.

    Anders gefragt - wenn man ein Programm mit einer komplexeren Oberfläche erstellen will, welche ist die einfachste und gebräuchlichste Vorgehensweise?

    Sry für die n00bigen Fragen, aber ich komm aus VB 😉



  • hi, also...
    da du von VB kommst muss man dir ja helfen, armer junge (sry halt nicht viel davon)

    so nochmal dazu:

    Wenn ich meine Programmoberfläche mit einer Ressource machen will, erzeuge ich dann eine Dialog-Ressource, erzeuge mir ein Fenster mit CreateWindow und erzeuge mir dann als Child davon einen Dialog aus meiner Res?

    Also du kannst:
    1. eine dlg res erstellen und direkt in der WinMain einen dialog erstellen (siehe OpenDialog()) (ist dann sozusagen das Hauptfenster bzw. der Hauptdialog)
    2. du kannst ein Hauptfenster erstellen (siehe CreateWindow()) und dann später zB. unter WM_CREATE oder WM_COMMAND ein Dialog erstellen (siehe CreateDialog()), dieser KANN ⚠ dann an das mit CreateWindow erstellte Fenster gebunden sein, ist aber kein Child! ⚠

    hoffe das war verständlich 😉

    MfG CodeFinder



  • Hm, danke!
    Ich werd mal ein bisschen probieren, was am besten klappt.

    VB ist allerdings für grafische Benutzeroberflächen nicht zu unterschätzen!
    Auch wenns meistens nicht für voll genommen wird - es ist halt supereinfach und für Programme die nicht viel leisten müssen aber gut zu bedienen sein solln manchmal einfach die einfachere und erste Wahl.



  • es ist halt supereinfach

    ...eben!

    siehe MFC...naja probieren kann sicherlich nicht schaden 😉

    MfG CodeFinder



  • Wenn ich ein Windows fenster nur von einer Dlg aufrufe mach ich es so

    [code]
    #include "stdafx.h"
    #include "resource.h"
    
    LRESULT CALLBACK	DlgProc( HWND, UINT, WPARAM, LPARAM );
    
    HINSTANCE hDlg;
    
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow )
    {
    	hDlg = LoadLibrary(TEXT("comctl32.dll"));
    	DialogBox(hInstance, (LPCTSTR)IDD_MAIN, NULL, (DLGPROC)DlgProc);
    	return 0;
    }
    
    LRESULT CALLBACK DlgProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
    {
    
    	switch( message )
    	{
    		case WM_INITDIALOG:
    
    		return TRUE;
    
    		case WM_COMMAND:
    			switch(LOWORD(wParam))
    			{
    				case IDCANCEL:
    					EndDialog(hDlg, LOWORD(wParam));
    					return TRUE;
    			}
    			break;
    	}
        return FALSE;
    }
    [/code]
    


  • Wenn ich deine Frage richtig verstanden habe, dann suchst du nach einem Weg im VS dir die Programmoberfläche im Baukastenprinzip zu erstellen. Ich denke da ist VB besser dafür geeignet.



  • Ach ne?! 😉

    Aber ich würd halt gerne auch meine C++-Kenntnisse mit Fenstern versehen 😉



  • fehlersucher schrieb:

    Aber ich würd halt gerne auch meine C++-Kenntnisse mit Fenstern versehen 😉

    Dann nimm MFC oder ein sonstige GUI Framework... WinAPI hat mit C++ nix zu tun.


Anmelden zum Antworten