Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Info Dialog aus Menü aufrufen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
rix



Anmeldungsdatum: 20.03.2007
Beiträge: 20

BeitragVerfasst am: 11.08.2008, 20:43    Titel: Info Dialog aus Menü aufrufen Antworten mit Zitat

Hallo!

So, ich versuche mich gerade in die Win32 API Funktionen rein zu arbeiten...
Leider verstehe ich im Moment nur die Hälfte... Kann mir mal einer erklären wie ich einen 2. Dialog aus einem Menü heraus öffne?
(IDM_HILFE_INFO)

Ich habe das Forum schon durchsucht, nur mit den gefundenen Beiträgen komm ich gar nicht klar traurig
(http://forum.qbasic.at/viewtopic.php?t=5505)

Kurz und knapp, es soll einer vorhandener Dialog (IDD_INFO) geöffnet werden.
Nur ich kapiere es nicht mit dem Kopf durch die Mauer wollen

test.bas
Code:

#Include once "windows.bi"
#Include Once "win/commctrl.bi"
#Include Once "win/commdlg.bi"
#Include Once "win/shellapi.bi"
#Include Once "mysql/mysql.bi"
#Include  "test.bi"

Function hauptmenue(ByVal hWin As HWND,ByVal uMsg As UINT,ByVal wParam As WPARAM,ByVal lParam As LPARAM) As Integer

   Select Case uMsg
      Case WM_INITDIALOG
         hWnd=hWin
         '
      Case WM_COMMAND
         Select Case HiWord(wParam)
            Case BN_CLICKED,1
               Select Case LoWord(wParam)
                  Case IDM_PROGRAMM_EINSTELLUNGEN
                     '
                  Case IDM_PROGRAMM_BEENDEN
                     SendMessage(hWin,WM_CLOSE,0,0)
                     '
                  Case IDM_HILFE_INFO
                     ' mach hier einen info dialog auf (IDD_INFO ID: 1100)
                     '
                  Case IDM_HILFE_HILFE
                     '
               End Select
               '
         End Select
         '
      Case WM_CLOSE
         DestroyWindow(hWin)
         '
      Case WM_DESTROY
         PostQuitMessage(NULL)
         '
      Case Else
         Return DefWindowProc(hWin,uMsg,wParam,lParam)
         '
   End Select
   Return 0

End Function

Function hauptfenster(ByVal hInst As HINSTANCE,ByVal hPrevInst As HINSTANCE,ByVal CmdShow As Integer) As Integer
   Dim wc As WNDCLASSEX
   Dim msg As MSG

   wc.cbSize=SizeOf(WNDCLASSEX)
   wc.style=CS_HREDRAW or CS_VREDRAW
   wc.lpfnWndProc=@hauptmenue
   wc.cbClsExtra=0
   wc.cbWndExtra=DLGWINDOWEXTRA
   wc.hInstance=hInst
   wc.hbrBackground=Cast(HBRUSH,COLOR_BTNFACE+2)
   wc.lpszMenuName=Cast(ZString Ptr,IDM_MENU1)
   wc.lpszClassName=@ClassNameMain
   wc.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(200))
   wc.hIconSm=wc.hIcon
   wc.hCursor=LoadCursor(NULL,IDC_ARROW)
   RegisterClassEx(@wc)

   CreateDialogParam(hInstance,Cast(ZString Ptr,IDD_HAUPT),NULL,@hauptmenue,NULL)
   ShowWindow(hWnd,SW_SHOWNORMAL)
   UpdateWindow(hWnd)

   Do While GetMessage(@msg,NULL,0,0)
      TranslateMessage(@msg)
      DispatchMessage(@msg)
   Loop
   Return msg.wParam

End Function

hInstance=GetModuleHandle(NULL)
InitCommonControls
hauptfenster(hInstance,NULL,SW_SHOWDEFAULT)
ExitProcess(0)

End



test.bi
Code:

#Define IDD_HAUPT                        1000      ' Dialog - Hauptfenster
#Define IDD_INFO                        1100      ' Dialog - Info/Hilfe
#Define IDD_EINSTELLUNGEN               1200      ' Dialog - Einstellungen

#Define IDM_MENU1                        10000      ' Hauptmenü -Programm-
#Define IDM_PROGRAMM_EINSTELLUNGEN      10001      ' Hauptmenü -Programm, Einstellungen-
#Define IDM_PROGRAMM_BEENDEN            10002      ' Hauptmenü -Programm, Beeenden-

#Define IDM_HILFE_INFO                  20001      ' Hauptmenü -?, Info-
#Define IDM_HILFE_HILFE                  20002      ' Hauptmenü -?, Hilfe-


Dim Shared hInstance As HMODULE
Dim Shared hWnd As HWND

Const AppName="eic"
Const ClassNameMain="HAUPTKLASSE"
Const ClassNameInfo="INFOKLASSE"
Const ClassNameSet="EINSTKLASSE"


Ich danke schon mal für Eure Antworten, sofern welche kommen zwinkern

EDIT:
Ich denke mal ich muss ne 2. Klasse erstellen für das Fenster, aber wie rufe ich das hier --> Case IDM_HILFE_INFO
' mach hier einen info dialog auf (IDD_INFO ID: 1100) <-- auf?


Zuletzt bearbeitet von rix am 12.08.2008, 17:42, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 12.08.2008, 09:12    Titel: Antworten mit Zitat

Wirklich verstanden hab ich Deine Frage ja nicht. Du willst über ein Menü einen Dialog aufrufen. Dann fragst Du einfach unter WM_COMMAND das ID des Menüpunktes ab und rufst dort den Dialog auf. Eine Fensterklasse für das Menü ist nicht notwendig. Hast Du mal überprüft, ob IDM_HILFE_INFO überhaupt abgefragt wird (einfach mal ne MessageBox reinsetzen)? Den Dialog rufst Du mit DialogBox (für modale Dialoge) oder CreateDialog (nicht modale Dialoge) auf.

Soweit ich es überblicke, ist "test.bi" gar nicht in das Hauptprogramm includiert.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
rix



Anmeldungsdatum: 20.03.2007
Beiträge: 20

BeitragVerfasst am: 12.08.2008, 17:47    Titel: Antworten mit Zitat

Hallo Elektronix.

War leider ein kleiner Übernahmefehler hier in den Post. Die "test.bi" ist in das Hauptprogramm includiert, hatte ich nur vergessen hier im Post zu ändern.

Mein Problem ist, wie rufe ich den Dialog auf?

Hier die Abfrage auf das Menü
Code:

[..]
Case WM_COMMAND
         Select Case HiWord(wParam)
            Case BN_CLICKED,1
               Select Case LoWord(wParam)
[..]


Und hier ja der Teil wo abgefragt wird (nach meinem Verstädnis)
Code:

[..]
 Case IDM_HILFE_INFO
                     ' mach hier einen info dialog auf (IDD_INFO ID: 1100)
                     '
[..]

Ich weiß nicht wie ich den Dialog aufmachen soll happy traurig
Hab hier das Petzoldkompendium vor mir liegen und war auch shcon auf den MSDN Seiten, nur so langsam glaube ich, dass ich den Wald vor lauter Bäumen nicht sehe...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 12.08.2008, 21:31    Titel: Antworten mit Zitat

Vielleicht solltest Du mal ein Tutorial durcharbeiten. Da Du mit dem Petzold arbeitest, scheinst Du C wenigestens einigermaßen zu verstehen. Hier eine Auswahl:

http://www.c-plusplus.de/forum/viewtopic-var-t-is-217065.html
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
rix



Anmeldungsdatum: 20.03.2007
Beiträge: 20

BeitragVerfasst am: 12.08.2008, 22:18    Titel: Antworten mit Zitat

Okay, danke...
Na dann les ich mal weiter und forsche...

P.S:
Zitat:

Da Du mit dem Petzold arbeitest, scheinst Du C wenigestens einigermaßen zu verstehen.


Nicht jeder kommt als Basicmeister auf die Welt und btw... Wenn man nicht die Schieb-Mich klick mich Funktionen unter VB2008 o.ä nutzen will, heißt es halt back.2.the.basics zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 13.08.2008, 08:54    Titel: Antworten mit Zitat

Gute Einstellung! Daumen rauf!
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 21.08.2008, 19:56    Titel: Antworten mit Zitat

Code:
DialogBoxParam(hInstance, Cast(ZString Ptr, IDD_INFO), hWin, @DLGPROC, NULL)


In FBEdit kann man per Doppelklick auf eine leere Fläche im Dialogeditor auch ein Template auswählen (DialogApp.rad in diesem Fall) und sich das Grundgerüst so erstellen lassen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz