Débutant et API Window

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Fels
Messages : 12
Inscription : ven. 04/mai/2018 21:04

Débutant et API Window

Message par Fels »

Bonjour à tous,
Voilà j' apprend l'API Windows avec PB et certaines choses sont plus complexes que d'autres, notamment ceci :
J'ai pris dans les forums deux supers programmes, l' un permet de colorier les boutons et l'autre d' avoir un beau menu (PopUp) si on y met de belles couleurs, mais quand je les mixe, cela ne fonctionne pas, je n' ai pas le niveau, est-ce que quelqu'un pourrait m' apporter son aide.
Merci d' avance !

Voici les deux programmes :

Code : Tout sélectionner


;==================================== PREMIER PROGRAMME ============================================


;/**********************************************************
;/ Title:         Ownerdraw Hover Buttons
;/ Author:        Sparkie
;/ Date:          January 11, 2008 (original code December 22, 2004)
;/ Modifier :     RASHAD
;/ Date:          23/10/2014
;/ OS Support:    Microsoft Windows All
;/ PB Support:    PureBasic 4.0 and later
;/**********************************************************

#TME_HOVER = 1
#TME_LEAVE = 2
#TME_NONCLIENT = $10
#TME_QUERY = $40000000
#DoHover = 1
#DoLeave = 2
#MyWindow = 0

Enumeration
  #MyButton1 = 100
  #MyButton2
  #MyButton3
EndEnumeration

Structure ButtonData
  oldCallback.i
  brushLeave.l
  brushClick.l
  brushHover.l
  brushDisabled.l
EndStructure

;... Declare Globals
Global mte.TRACKMOUSEEVENT, doWhat
mte\cbSize = SizeOf(TRACKMOUSEEVENT)

;... Create button background brushes
buttonBrushLeave = CreateSolidBrush_(RGB(237, 233, 177))
buttonBrushClick = CreateSolidBrush_(RGB(207, 203, 147))
buttonBrushHover = CreateSolidBrush_(RGB(254, 250, 194))
buttonBrushDisabled = CreateSolidBrush_(RGB(200, 200, 200))
bData.ButtonData
bData\brushHover = buttonBrushHover
bData\brushLeave = buttonBrushLeave
bData\brushClick = buttonBrushClick
bData\brushDisabled = buttonBrushDisabled

;... Main WindowCallback
Procedure myWindowCallback(hwnd, msg, wParam, lParam)
  result = #PB_ProcessPureBasicEvents
  Select msg
    Case #WM_DRAWITEM
      *dis.DRAWITEMSTRUCT = lParam
      If *dis\CtlType = #ODT_BUTTON
        buttonNum = *dis\CtlID
        *bData.ButtonData = GetGadgetData(buttonNum)
        ;... Default button attributes
        SetBkMode_(*dis\hdc, #TRANSPARENT)
        doWhatBrush = *bData\brushLeave
        doFlags = #DFCS_FLAT | #DFCS_BUTTONPUSH | #DFCS_MONO | #DFCS_ADJUSTRECT
        If *dis\itemState > 500
             *dis\itemState = *dis\itemState -768
        EndIf             
        Select *dis\itemState
          Case #ODS_SELECTED
            ;... DoHover or DoLeave
            If *dis\itemAction = 1 And doWhat = #DoHover
              ;... DoHover
              SetTextColor_(*dis\hdc, RGB(255, 0, 0))
              doWhatBrush = *bData\brushHover
              doFlags = #DFCS_BUTTONPUSH | #DFCS_MONO | #DFCS_ADJUSTRECT
            ElseIf *dis\itemAction = 1 And doWhat = #DoLeave
              ;... DoLeave
              SetTextColor_(*dis\hdc, RGB(255, 0, 0))
              doWhatBrush = *bData\brushLeave
              doFlags = #DFCS_FLAT | #DFCS_BUTTONPUSH | #DFCS_MONO | #DFCS_ADJUSTRECT
            EndIf
          Case #ODS_DISABLED
            SetTextColor_(*dis\hdc, RGB(125, 125, 125))
            doWhatBrush = *bData\brushDisabled
           
          Case *dis\itemState & #ODS_FOCUS
            ;... ClickDown
            SetTextColor_(*dis\hdc, RGB(255, 0, 0))
            doWhatBrush = *bData\brushLeave
            doFlags = #DFCS_BUTTONPUSH | #DFCS_MONO | #DFCS_ADJUSTRECT
            ;drawFocus = 1
            If *dis\itemAction = 2 And doWhat = #DoLeave
              ;... DoHover
              doWhatBrush = *bData\brushHover
            EndIf
            If *dis\itemAction = 1 And doWhat = #DoHover
              ;... DoHover
              doWhatBrush = *bData\brushHover
            EndIf
          Case*dis\itemState & ( #ODS_FOCUS | #ODS_SELECTED)
            ;... ClickUp
            SetTextColor_(*dis\hdc, RGB(255, 0, 0))
            doWhatBrush = *bData\brushClick
            doFlags = #DFCS_BUTTONPUSH | #DFCS_PUSHED | #DFCS_ADJUSTRECT
        EndSelect
      EndIf
      DrawFrameControl_(*dis\hdc, *dis\rcItem, #DFC_BUTTON, doFlags)
      FillRect_(*dis\hdc, *dis\rcItem, doWhatBrush)     
      DrawText_(*dis\hdc, GetGadgetText(buttonNum), Len(GetGadgetText(buttonNum)), *dis\rcItem, #DT_CENTER | #DT_SINGLELINE | #DT_VCENTER)
      ;       If drawFocus = 1
      ;         DrawFocusRect_(*dis\hDC, *dis\rcItem)
      ;       EndIf
  EndSelect
  ProcedureReturn result
EndProcedure

;... ButtonCallback
Procedure myButtonCallback(hwnd, msg, wParam, lParam)
  Shared mouseLeave, hover, hot

  buttonID = GetDlgCtrlID_(hwnd)
  *bData.ButtonData = GetGadgetData(buttonID)

  Select msg
    Case #WM_MOUSEMOVE
      If wParam <> #MK_LBUTTON And mouseLeave = 0
        mouseLeave = 1
        doWhat = #DoHover
        ;... Force #WM_DRAWITEM
        InvalidateRect_(GadgetID(buttonID), 0, 0)
        ; Track mouse leaving button
        mte\dwFlags = #TME_LEAVE
        mte\hwndTrack = GadgetID(buttonID)
        TrackMouseEvent_(mte)
      EndIf
    Case #WM_MOUSELEAVE
      mouseLeave = 0
      doWhat = #DoLeave
      ;... Force #WM_DRAWITEM
      InvalidateRect_(GadgetID(buttonID), 0, 0)
    Case #WM_LBUTTONDOWN
      ;... Set flag to reset previous down botton
      doWhat = #DoLeave
  EndSelect
  ProcedureReturn CallWindowProc_(*bData\oldCallback, hwnd, msg, wParam, lParam)
EndProcedure

If OpenWindow(#MyWindow, 100, 100, 250, 200, "Custom Hover Buttons", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
  SetWindowCallback(@myWindowCallback())
  CreateStatusBar(0, WindowID(#MyWindow))
  AddStatusBarField(250)
  StringGadget(0, 75, 10, 100, 20, "Ownerdraw Buttons", #PB_String_BorderLess | #PB_String_ReadOnly)
  ButtonGadget(#MyButton1, 75, 50, 100, 20, "Testing")
  ButtonGadget(#MyButton2, 75, 80, 100, 20, "Customized")
  ButtonGadget(#MyButton3, 75, 110, 100, 20, "Buttons")
  ;... Remove #BS_PUSHBUTTON and add #BS_OWNERDRAW to buttons

  For b = #MyButton1 To #MyButton3
    bStyle = GetWindowLongPtr_(GadgetID(b), #GWL_STYLE)
    SetWindowLongPtr_(GadgetID(b), #GWL_STYLE, bStyle & ~#BS_PUSHBUTTON | #BS_OWNERDRAW)
    bData\oldCallback = SetWindowLongPtr_(GadgetID(b), #GWL_WNDPROC, @myButtonCallback())
    SetGadgetData(b, bData)
  Next b
 
  DisableGadget(#MyButton2,1)
 
  Repeat
    event = WaitWindowEvent()
    Select event
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 0
            StatusBarText(0, 0, "No Button selected")
          Case #MyButton1
            StatusBarText(0, 0, "Selected button ID# " + Str(#MyButton1) + " text is: Testing")
          Case #MyButton2
            StatusBarText(0, 0, "Selected button ID# " + Str(#MyButton2) + " text is: Customized")
          Case #MyButton3
            StatusBarText(0, 0, "Selected button ID# " + Str(#MyButton3) + " text is: Buttons")
        EndSelect
    EndSelect
  Until event = #PB_Event_CloseWindow
EndIf
DeleteObject_(buttonBrushLeave)
DeleteObject_(buttonBrushClick)
DeleteObject_(buttonBrushHover)
DeleteObject_(buttonBrushDisabled)

;==================================== DEUXIEME PROGRAMME ============================================


Global SFColor.i, SBColor.i

Structure new_mm
Text.s
EndStructure

Global Dim menu.new_mm(6),hFont
;LoadFont(0,"Ms Sans Serif",12,#PB_Font_HighQuality)
LoadFont(0,"Georgia",14,#PB_Font_Bold)
hFont = FontID(0)

Procedure Menu_Owner(hWnd, uMsg, wParam, lParam)
 
   Select uMsg
   
    Case #WM_MEASUREITEM
        hdc = GetDC_(hWnd)
        *nmm.MEASUREITEMSTRUCT = lParam
        *lnew_mm.new_mm = *nmm\itemData
         hFontOld = SelectObject_(hDC,hFont)       
        GetTextExtentPoint32_(hdc,*lnew_mm\Text,Len(*lnew_mm\Text),@size.SIZE);
        *nmm\itemWidth = size\cx
        *nmm\itemHeight = size\cy
        ReleaseDC_(hWnd,hdc)
       
    Case #WM_DRAWITEM
        *nmd.DRAWITEMSTRUCT = lParam
        *llnew_mm.new_mm = *nmd\itemData
        If *nmd\itemState & #ODS_SELECTED
             hFontOld = SelectObject_(*nmd\hDC,hFont)
            SetTextColor_(*nmd\hDC,SFColor)
            SetBkColor_(*nmd\hDC,SBColor)
            ntx = *nmd\rcItem\left
            nty = *nmd\rcItem\top
            ExtTextOut_(*nmd\hDC,ntx,nty,#ETO_OPAQUE,*nmd\rcItem,*llnew_mm\Text,Len(*llnew_mm\Text),0)
        Else
            ntx = *nmd\rcItem\left
            nty = *nmd\rcItem\top
             hFontOld = SelectObject_(*nmd\hDC,hFont)
            ExtTextOut_(*nmd\hDC,ntx,nty,#ETO_OPAQUE,*nmd\rcItem,*llnew_mm\Text,Len(*llnew_mm\Text),0)
        EndIf
       
  EndSelect
        ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure




If OpenWindow(0, 0, 0,400,300, "PopupMenu Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)

  ListIconGadget(0, 10, 10, 280, 240, "Tools", 200)
    AddGadgetItem(0, -1, "Hammer")
    AddGadgetItem(0, -1, "Screwdriver")
   
 hMenu = CreatePopupMenu(0)
  MenuItem(1, "")
  MenuItem(2, "")
  MenuItem(3, "")
  MenuBar()
 OpenSubMenu("")
    MenuItem(4, "")
    MenuItem(5, "")
 CloseSubMenu()
  MenuBar()
  MenuItem( 6, "")
 

    ModifyMenu_(hMenu,1,#MF_BYCOMMAND|#MF_OWNERDRAW,1,menu(0))
    ModifyMenu_(hMenu,2,#MF_BYCOMMAND|#MF_OWNERDRAW,2,menu(1))
    ModifyMenu_(hMenu,3,#MF_BYCOMMAND|#MF_OWNERDRAW,3,menu(2))
    ModifyMenu_(hMenu,4,#MF_BYPOSITION|#MF_OWNERDRAW,0,menu(6))   
    ModifyMenu_(hMenu,4,#MF_BYCOMMAND|#MF_OWNERDRAW,4,menu(3))
    ModifyMenu_(hMenu,5,#MF_BYCOMMAND|#MF_OWNERDRAW,5,menu(4))
    ModifyMenu_(hMenu,6,#MF_BYCOMMAND|#MF_OWNERDRAW,6,menu(5))
       

    menu(0)\Text = " Cut"
    menu(1)\Text = " Copy"
    menu(2)\Text = " Paste"
    menu(3)\Text = " Window..."
    menu(4)\Text = " Gadget..."
    menu(5)\Text = " Quit"
    menu(6)\Text = " Options"
   
    SFColor = $00FFFF
    SBColor = $EAAB0D
   
   
    SetWindowCallback(@Menu_Owner())
  Repeat

    Select WaitWindowEvent()
       
      Case #PB_Event_Gadget
        If EventGadget() = 0 And EventType() = #PB_EventType_RightClick
          DisplayPopupMenu(0, WindowID(0))
        EndIf
         
      Case #PB_Event_Menu
     
        Select EventMenu()  ; To see which menu has been selected

          Case 1 ; Cut
            MessageRequester("PureBasic", "Cut", 0)

          Case 2 ; Copy
            MessageRequester("PureBasic", "Copy", 0)

          Case 3 ; Paste
            MessageRequester("PureBasic", "Paste", 0)

          Case 6 ; Quit
            Quit = 1

        EndSelect
       
      Case #PB_Event_CloseWindow
        Quit = 1

    EndSelect

  Until Quit = 1
EndIf
End
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Débutant et API Window

Message par Ar-S »

Bonjour, pense à mettre ton code entre balises Code et de l'indenter pour une meilleur lisibilité et pour éviter que des erreurs de syntaxes apparaissent
ex : Si tu mets deux points : et fermer les parentheses dans ton code, il va se transformer en :( si tu ne le mets pas entre balises code.
Pour ta question je regarderai plus tard si personne ne répond mais là je n'ai vraiment pas le temps.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Christophe
Messages : 43
Inscription : lun. 22/oct./2018 19:34
Localisation : Haisnes (62)

Re: Débutant et API Window

Message par Christophe »

Bonjour Fels
essaie ceci

Code : Tout sélectionner


;/**********************************************************
;/ Title: Ownerdraw Hover Buttons
;/ Author: Sparkie
;/ Date: January 11, 2008 (original code December 22, 2004)
;/ Modifier : RASHAD
;/ Date: 23/10/2014
;/ OS Support: Microsoft Windows All
;/ PB Support: PureBasic 4.0 and later
;/**********************************************************

#TME_HOVER = 1
#TME_LEAVE = 2
#TME_NONCLIENT = $10
#TME_QUERY = $40000000
#DoHover = 1
#DoLeave = 2
#MyWindow = 0

Enumeration
#MyButton1 = 100
#MyButton2
#MyButton3
EndEnumeration

Structure ButtonData
oldCallback.i
brushLeave.l
brushClick.l
brushHover.l
brushDisabled.l
EndStructure

;... Declare Globals
Global mte.TRACKMOUSEEVENT, doWhat
mte\cbSize = SizeOf(TRACKMOUSEEVENT)

;... Create button background brushes
buttonBrushLeave = CreateSolidBrush_(RGB(237, 233, 177))
buttonBrushClick = CreateSolidBrush_(RGB(207, 203, 147))
buttonBrushHover = CreateSolidBrush_(RGB(254, 250, 194))
buttonBrushDisabled = CreateSolidBrush_(RGB(200, 200, 200))
bData.ButtonData
bData\brushHover = buttonBrushHover
bData\brushLeave = buttonBrushLeave
bData\brushClick = buttonBrushClick
bData\brushDisabled = buttonBrushDisabled

Global SFColor.i, SBColor.i

Structure new_mm
Text.s
EndStructure

Global Dim menu.new_mm(6),hFont
;LoadFont(0,"Ms Sans Serif",12,#PB_Font_HighQuality)
LoadFont(0,"Georgia",14,#PB_Font_Bold)
hFont = FontID(0)

;... Main WindowCallback
Procedure myWindowCallback(hwnd, msg, wParam, lParam)
 Protected  uMsg = msg 
 
result = #PB_ProcessPureBasicEvents
Select msg
Case #WM_DRAWITEM
*dis.DRAWITEMSTRUCT = lParam
If *dis\CtlType = #ODT_BUTTON
buttonNum = *dis\CtlID
*bData.ButtonData = GetGadgetData(buttonNum)
;... Default button attributes
SetBkMode_(*dis\hdc, #TRANSPARENT)
doWhatBrush = *bData\brushLeave
doFlags = #DFCS_FLAT | #DFCS_BUTTONPUSH | #DFCS_MONO | #DFCS_ADJUSTRECT
If *dis\itemState > 500
*dis\itemState = *dis\itemState -768
EndIf

Select *dis\itemState
Case #ODS_SELECTED
;... DoHover or DoLeave
If *dis\itemAction = 1 And doWhat = #DoHover
;... DoHover
SetTextColor_(*dis\hdc, RGB(255, 0, 0))
doWhatBrush = *bData\brushHover
doFlags = #DFCS_BUTTONPUSH | #DFCS_MONO | #DFCS_ADJUSTRECT
ElseIf *dis\itemAction = 1 And doWhat = #DoLeave
;... DoLeave
SetTextColor_(*dis\hdc, RGB(255, 0, 0))
doWhatBrush = *bData\brushLeave
doFlags = #DFCS_FLAT | #DFCS_BUTTONPUSH | #DFCS_MONO | #DFCS_ADJUSTRECT
EndIf
Case #ODS_DISABLED
SetTextColor_(*dis\hdc, RGB(125, 125, 125))
doWhatBrush = *bData\brushDisabled

Case *dis\itemState & #ODS_FOCUS
;... ClickDown
SetTextColor_(*dis\hdc, RGB(255, 0, 0))
doWhatBrush = *bData\brushLeave
doFlags = #DFCS_BUTTONPUSH | #DFCS_MONO | #DFCS_ADJUSTRECT
;drawFocus = 1
If *dis\itemAction = 2 And doWhat = #DoLeave
;... DoHover
doWhatBrush = *bData\brushHover
EndIf
If *dis\itemAction = 1 And doWhat = #DoHover
;... DoHover
doWhatBrush = *bData\brushHover
EndIf
Case*dis\itemState & ( #ODS_FOCUS | #ODS_SELECTED)
;... ClickUp
SetTextColor_(*dis\hdc, RGB(255, 0, 0))
doWhatBrush = *bData\brushClick
doFlags = #DFCS_BUTTONPUSH | #DFCS_PUSHED | #DFCS_ADJUSTRECT
EndSelect
EndIf
DrawFrameControl_(*dis\hdc, *dis\rcItem, #DFC_BUTTON, doFlags)
FillRect_(*dis\hdc, *dis\rcItem, doWhatBrush)
DrawText_(*dis\hdc, GetGadgetText(buttonNum), Len(GetGadgetText(buttonNum)), *dis\rcItem, #DT_CENTER | #DT_SINGLELINE | #DT_VCENTER)
; If drawFocus = 1
; DrawFocusRect_(*dis\hDC, *dis\rcItem)
; EndIf
;ProcedureReturn result
EndSelect

If wParam = 0
Select uMsg

Case #WM_MEASUREITEM
hdc = GetDC_(hWnd)
*nmm.MEASUREITEMSTRUCT = lParam
*lnew_mm.new_mm = *nmm\itemData
hFontOld = SelectObject_(hDC,hFont)
GetTextExtentPoint32_(hdc,*lnew_mm\Text,Len(*lnew_mm\Text),@size.SIZE);
*nmm\itemWidth = size\cx
*nmm\itemHeight = size\cy
ReleaseDC_(hWnd,hdc)

Case #WM_DRAWITEM
*nmd.DRAWITEMSTRUCT = lParam
*llnew_mm.new_mm = *nmd\itemData
If *nmd\itemState & #ODS_SELECTED
hFontOld = SelectObject_(*nmd\hDC,hFont)
SetTextColor_(*nmd\hDC,SFColor)
SetBkColor_(*nmd\hDC,SBColor)
ntx = *nmd\rcItem\left
nty = *nmd\rcItem\top
ExtTextOut_(*nmd\hDC,ntx,nty,#ETO_OPAQUE,*nmd\rcItem,*llnew_mm\Text,Len(*llnew_mm\Text),0)
Else
ntx = *nmd\rcItem\left
nty = *nmd\rcItem\top
hFontOld = SelectObject_(*nmd\hDC,hFont)
ExtTextOut_(*nmd\hDC,ntx,nty,#ETO_OPAQUE,*nmd\rcItem,*llnew_mm\Text,Len(*llnew_mm\Text),0)
EndIf
EndSelect
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents

EndProcedure

;... ButtonCallback
Procedure myButtonCallback(hwnd, msg, wParam, lParam)
Shared mouseLeave, hover, hot

buttonID = GetDlgCtrlID_(hwnd)
*bData.ButtonData = GetGadgetData(buttonID)

Select msg
Case #WM_MOUSEMOVE
If wParam <> #MK_LBUTTON And mouseLeave = 0
mouseLeave = 1
doWhat = #DoHover
;... Force #WM_DRAWITEM
InvalidateRect_(GadgetID(buttonID), 0, 0)
; Track mouse leaving button
mte\dwFlags = #TME_LEAVE
mte\hwndTrack = GadgetID(buttonID)
TrackMouseEvent_(mte)
EndIf
Case #WM_MOUSELEAVE
mouseLeave = 0
doWhat = #DoLeave
;... Force #WM_DRAWITEM
InvalidateRect_(GadgetID(buttonID), 0, 0)
Case #WM_LBUTTONDOWN
;... Set flag to reset previous down botton
doWhat = #DoLeave
EndSelect
ProcedureReturn CallWindowProc_(*bData\oldCallback, hwnd, msg, wParam, lParam)
EndProcedure

If OpenWindow(#MyWindow, 100, 100, 500, 400, "Custom Hover Buttons", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
CreateStatusBar(0, WindowID(#MyWindow))
AddStatusBarField(250)
StringGadget(10, 375, 10, 100, 20, "Ownerdraw Buttons", #PB_String_BorderLess | #PB_String_ReadOnly)
ButtonGadget(#MyButton1, 375, 50, 100, 20, "Testing")
ButtonGadget(#MyButton2, 375, 80, 100, 20, "Customized")
ButtonGadget(#MyButton3, 375, 110, 100, 20, "Buttons")
;... Remove #BS_PUSHBUTTON and add #BS_OWNERDRAW to buttons

For b = #MyButton1 To #MyButton3
bStyle = GetWindowLongPtr_(GadgetID(b), #GWL_STYLE)
SetWindowLongPtr_(GadgetID(b), #GWL_STYLE, bStyle & ~#BS_PUSHBUTTON | #BS_OWNERDRAW)
bData\oldCallback = SetWindowLongPtr_(GadgetID(b), #GWL_WNDPROC, @myButtonCallback())
SetGadgetData(b, bData)
Next b

DisableGadget(#MyButton2,1)


ListIconGadget(0, 10, 10, 280, 240, "Tools", 200)
AddGadgetItem(0, -1, "Hammer")
AddGadgetItem(0, -1, "Screwdriver")

hMenu = CreatePopupMenu(0)
MenuItem(1, "")
MenuItem(2, "")
MenuItem(3, "")
MenuBar()
OpenSubMenu("")
MenuItem(4, "")
MenuItem(5, "")
CloseSubMenu()
MenuBar()
MenuItem( 6, "")


ModifyMenu_(hMenu,1,#MF_BYCOMMAND|#MF_OWNERDRAW,1,menu(0))
ModifyMenu_(hMenu,2,#MF_BYCOMMAND|#MF_OWNERDRAW,2,menu(1))
ModifyMenu_(hMenu,3,#MF_BYCOMMAND|#MF_OWNERDRAW,3,menu(2))
ModifyMenu_(hMenu,4,#MF_BYPOSITION|#MF_OWNERDRAW,0,menu(6))
ModifyMenu_(hMenu,4,#MF_BYCOMMAND|#MF_OWNERDRAW,4,menu(3))
ModifyMenu_(hMenu,5,#MF_BYCOMMAND|#MF_OWNERDRAW,5,menu(4))
ModifyMenu_(hMenu,6,#MF_BYCOMMAND|#MF_OWNERDRAW,6,menu(5))


menu(0)\Text = " Cut"
menu(1)\Text = " Copy"
menu(2)\Text = " Paste"
menu(3)\Text = " Window..."
menu(4)\Text = " Gadget..."
menu(5)\Text = " Quit"
menu(6)\Text = " Options"

SFColor = $00FFFF
SBColor = $EAAB0D

SetWindowCallback(@myWindowCallback())
Repeat
  event = WaitWindowEvent()
  
  If EventGadget() = 0 And EventType() = #PB_EventType_RightClick
DisplayPopupMenu(0, WindowID(0))
EndIf
  
Select event
    
  Case #PB_Event_Gadget
    
    
Select EventGadget()
Case 0
StatusBarText(0, 0, "No Button selected")
Case #MyButton1
StatusBarText(0, 0, "Selected button ID# " + Str(#MyButton1) + " text is: Testing")
Case #MyButton2
StatusBarText(0, 0, "Selected button ID# " + Str(#MyButton2) + " text is: Customized")
Case #MyButton3
  StatusBarText(0, 0, "Selected button ID# " + Str(#MyButton3) + " text is: Buttons")
EndSelect

 Case #PB_Event_Gadget


Case #PB_Event_Menu

Select EventMenu() ; To see which menu has been selected

Case 1 ; Cut
MessageRequester("PureBasic", "Cut", 0)

Case 2 ; Copy
MessageRequester("PureBasic", "Copy", 0)

Case 3 ; Paste
MessageRequester("PureBasic", "Paste", 0)

Case 6 ; Quit
Quit = 1


 EndSelect
EndSelect
Until event = #PB_Event_CloseWindow Or Quit = 1
EndIf
DeleteObject_(buttonBrushLeave)
DeleteObject_(buttonBrushClick)
DeleteObject_(buttonBrushHover)
DeleteObject_(buttonBrushDisabled)
Fels
Messages : 12
Inscription : ven. 04/mai/2018 21:04

Re: Débutant et API Window

Message par Fels »

Merci beaucoup Christophe !!!
Et en fait désolé, je n' ai pas l' habitude de poser des questions sur les forums (balise code...).
Répondre