(WinAPI) PB-Gadgets ansteuern

Hier kannst du häufig gestellte Fragen/Antworten und Tutorials lesen und schreiben.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

(WinAPI) PB-Gadgets ansteuern

Beitrag von Danilo »

[ Original FAQ-Beitrag von Rob ]

Mit der [c]SendMessage_()[/c]-Funktion lassen sich Nachrichten an Gadgets schicken, die entweder etwas an ihm verändern oder einen Zustand (Größe, Status, ...) zurückliefern.

Beispiel: Größe der Toolbar ans Fenster anpassen.

1. Schritt: Gadget-Handle ermitteln:

Code: Alles auswählen

toolbarhandle = CreateToolBar(0,0)
2. Schritt
Auf die MSDN-Seite der Windows-Controls gehen, ToolBar und ToolBar Overview auswählen, ein bisschen lesen und TB_AUTOSIZE entdecken.

3. Schritt

Code: Alles auswählen

lResult = SendMessage(
    // returns LRESULT in lResult
   (HWND) hWndControl,
    // handle to destination control
   (UINT) TB_AUTOSIZE,
    // message ID
   (WPARAM) wParam,
    // = 0; not used, must be zero
   (LPARAM) lParam
    // = 0; not used, must be zero
);
ansehen und daraus

Code: Alles auswählen

SendMessage_(toolbarhandle,#TB_AUTOSIZE,0,0)
machen.

4. Schritt:
Das ganze in die Window-Resize-Callback-Prozedur einfügen:

Code: Alles auswählen

Global toolbarhandle

Procedure WindowResize(WindowID, Message, wParam, lParam)
  Result = #PB_ProcessPureBasicEvents
  Select Message
    Case #WM_SIZE
      SendMessage_(toolbarhandle,#TB_AUTOSIZE,0,0)
  EndSelect
  ProcedureReturn Result
EndProcedure


If OpenWindow(0,0,0,300,100,#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered,"ToolBar-Resize")
  SetWindowCallback(@WindowResize())
 
  If CreateMenu(0,WindowID())
    MenuTitle("Bip")
    MenuItem(0,"Bop")
  EndIf
 
  toolbarhandle = CreateToolBar(0,WindowID())
  If toolbarhandle
    ToolBarStandardButton(1,#PB_ToolBarIcon_New)
    ToolBarStandardButton(2,#PB_ToolBarIcon_Open)
    ToolBarStandardButton(3,#PB_ToolBarIcon_Save)
    ToolBarSeparator()
    ToolBarStandardButton(4,#PB_ToolBarIcon_Replace)
    ToolBarStandardButton(5,#PB_ToolBarIcon_Delete)
  EndIf
   
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Nun ändert sich die ToolBar-Begrenzungslinie zum Menü ^_^
pickelrobert
Beiträge: 198
Registriert: 09.12.2004 22:09

Beitrag von pickelrobert »

Dazu fällt mir noch eine Frage ein. Wie ermittle ich das Handle des einzelnen Buttons der Toolbar ? Ich möchte ein Button "gedrückt" und normal - also "nicht gedrückt" darstellen. Hast Du da eine Idee ?
Antworten