hi i hope someone can help me
im having a owner drawn popupmenu when i right click my mouse.
now when i do this  .if .itemID == IDM_MNU_SETUP in my code then when i hover the mouse over it it closes
my menu but i want it to close when i click my left mouse button.this is in my window proc
i hope it is not to much code but thanks for the reply


                 .elseif uMsg == WM_DRAWITEM
                                       mov edi, bParam
                        assume edi:ptr DRAWITEMSTRUCT

 
                    .if aParam == 0
                   
                        mov edi, bParam
                        assume edi:ptr DRAWITEMSTRUCT


; Prep Menu DC
invoke SetBkMode, .hdc, TRANSPARENT
invoke SelectObject, .hdc, hMnuFont


                            ; *******************************************************
    ; ******************* DRAW BACKGROUND *******************
    ; *******************************************************

                            .if .itemState & ODS_SELECTED
  ;.endif            
                                          .if .itemState & ODS_DISABLED
                                                invoke GetSysColor, COLOR_MENU
              invoke SetTextColor,.hdc, eax
      .else
                                                invoke GetSysColor, COLOR_HIGHLIGHTTEXT
              invoke SetTextColor,.hdc, eax
          ; .if(.itemAction==ODA_SELECT)
                                  ; .if .hwndItem== offset hMainMnu
                                   ;invoke MessageBox,hWin,addr AppName,ADDR AppName,MB_OK +MB_ICONINFORMATION
;.
                                  .if .itemData & IDM_MNU_SETUP   ; deze is goed
                                   invoke MessageBox,hWin,addr AppName,ADDR AppName,MB_OK +MB_ICONINFORMATION
.endif
                                   
;.endif                                  
                                       ;.endif
                                        mov eax, .rcItem.left
                                        add eax, 22
                                       
                                        invoke BitBlt, .hdc, eax, .rcItem.top, 129, 20, hMem_Hilite_DC, 0, 0, SRCCOPY
                         ;   .else
                           
                                        .if .itemState & ODS_DISABLED
                                                invoke GetSysColor, COLOR_GRAYTEXT
              invoke SetTextColor,.hdc, eax
      .else
                                                invoke GetSysColor, COLOR_MENUTEXT
              invoke SetTextColor,.hdc, eax
                                        .endif
 
                                        invoke GetSysColorBrush, COLOR_MENU   
      invoke SelectObject, .hdc, eax
 


                                        mov eax, .rcItem.bottom
                                        sub eax, .rcItem.top

      invoke PatBlt, .hdc, .rcItem.left, .rcItem.top, .rcItem.right, eax, PATCOPY
    .endif



                        ; ****************************************************
; ******************* DRAW CONTENT *******************
; ****************************************************




.if .itemState & ODS_CHECKED

invoke LoadImage, hInstance, 1020, IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR
                                          mov hmnuIcon, eax

  .else
 
  .if .itemState & ODS_DISABLED

                                                      mov eax, .itemID
                                                      add eax, 1

  invoke LoadImage, hInstance, eax, IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR
                                                      mov hmnuIcon, eax

.else
  invoke LoadImage, hInstance, .itemID, IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR
                                                      mov hmnuIcon, eax
 
  .if (hmnuIcon != 0) && (.itemState & ODS_FOCUS)
                 
        ;mov nFlag,0 ; als de linker muis button is geklikt zet de vlag op 1 zodat de foto getoond wordt
      ;invoke InvalidateRect,hWin,NULL,TRUE 


  ;
   
  ;.IF(ODA_SELECT==0)
;{
;if((dis.itemState & ODS_SELECTED))
;{
;SelectObject(g_hButtonDC, (HBITMAP)g_hButtonPushedBmp);
;}

  mov eax,.itemID
  mov t,eax
 
                                                            mov eax, .rcItem.left
                                                            add eax, 1
                                                            ; .if  ODS_FOCUS && ODS_SELECTED   ;;   HIER NOG VERDER AAN WERKEN
       ;       invoke MessageBox,hWin,hMem_Box_DC,offset AppName,MB_OK
       .endif
  .endif
  ; .ENDIF
  ;.endif

                                                            invoke BitBlt, .hdc, eax, .rcItem.top, 20, 20, hMem_Box_DC, 0, 0, SRCCOPY
                                                           
.endif



.if ( hmnuIcon != 0 )
                                    mov eax, .rcItem.top
                                    add eax, 2
invoke DrawIconEx, .hdc, 3, eax, hmnuIcon, 16, 16, 0, 0, DI_NORMAL
                              .endif
                             


                              push 26
                              pop .rcItem.left

                              invoke lstrlen, .itemData
                              mov .itemAction, eax

invoke DrawText, .hdc, .itemData, .itemAction, ADDR .rcItem, DT_SINGLELINE or DT_NOCLIP or DT_VCENTER


                              invoke GetStockObject, BLACK_BRUSH
invoke SelectObject, .hdc, eax
                              invoke GetStockObject, BLACK_PEN
invoke SelectObject, .hdc, eax
                              invoke GetStockObject, DEFAULT_GUI_FONT
invoke SelectObject, .hdc, eax
invoke DestroyIcon, hmnuIcon


                    .endif
                   
invoke InvalidateRect,hWin,NULL,TRUE 
;
Solved thank you for reply
Posted on 2009-03-31 05:03:15 by rilm
Where is this
.if .itemID == IDM_MNU_SETUP
located? You need to post a little more of your code.
Posted on 2009-03-31 07:59:29 by JimmyClif