  | 
					
						Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!   
						
						
					 | 
				 
			 
			 
	
		| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	 
	
	
		| Autor | 
		Nachricht | 
	 
	
		rix
 
 
  Anmeldungsdatum: 20.03.2007 Beiträge: 20
 
  | 
		
			
				 Verfasst am: 11.08.2008, 19:43    Titel: Info Dialog aus Menü aufrufen | 
				     | 
			 
			
				
  | 
			 
			
				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  
 
(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  
 
 
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  
 
 
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, 16:42, insgesamt einmal bearbeitet | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Elektronix
 
 
  Anmeldungsdatum: 29.06.2006 Beiträge: 742
 
  | 
		
			
				 Verfasst am: 12.08.2008, 08:12    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		rix
 
 
  Anmeldungsdatum: 20.03.2007 Beiträge: 20
 
  | 
		
			
				 Verfasst am: 12.08.2008, 16:47    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				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    
 
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 | 
		 | 
	 
	
		  | 
	 
	
		Elektronix
 
 
  Anmeldungsdatum: 29.06.2006 Beiträge: 742
 
  | 
		
			
				 Verfasst am: 12.08.2008, 20:31    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		rix
 
 
  Anmeldungsdatum: 20.03.2007 Beiträge: 20
 
  | 
		
			
				 Verfasst am: 12.08.2008, 21:18    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				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   | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Elektronix
 
 
  Anmeldungsdatum: 29.06.2006 Beiträge: 742
 
  | 
		
			
				 Verfasst am: 13.08.2008, 07:54    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Gute Einstellung!   _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		28398
 
 
  Anmeldungsdatum: 25.04.2008 Beiträge: 1917
 
  | 
		
			
				 Verfasst am: 21.08.2008, 18:56    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | 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 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
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.
  | 
   
 
     |