не показывается контекстное меню

Тема в разделе "WASM.WIN32", создана пользователем author, 17 фев 2007.

  1. author

    author New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2007
    Сообщения:
    4
    добрый день.
    никак не могу найти в чем ошибка - создал контесктное меню, хочу показать его для выбора пункта, но popup окно не отображается

    Код (Text):
    1. invoke CreatePopupMenu  
    2. mov    [hPopupMenu], eax
    3.  
    4. invoke AppendMenu, hPopupMenu, MF_STRING, IDM_PREV, PREV_String
    5. invoke AppendMenu, hPopupMenu, MF_STRING, IDM_NEXT, NEXT_String
    Код (Text):
    1. invoke  GetCursorPos, mPoint                                                                                      
    2. invoke  TrackPopupMenu, [hPopupMenu], TPM_RIGHTALIGN + TPM_RIGHTBUTTON, [mPoint.x], [mPoint.y], NULL, [hWnd], NULL
    помогите, пожалуста, советом
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Где ты вызываешь TrackPopupMenu? (в процедуру обработки какого события этот вызов входит?)
     
  3. Songoku

    Songoku Эдгар

    Публикаций:
    0
    Регистрация:
    1 мар 2003
    Сообщения:
    68
    Адрес:
    Belarus
    Код (Text):
    1. invoke AppendMenu, [hPopupMenu], MF_STRING, IDM_PREV, PREV_String
    2. invoke AppendMenu, [hPopupMenu], MF_STRING, IDM_NEXT, NEXT_String
    Ты должен указывать сам дескпритор а не указатель на него!

    BOOL AppendMenu(

    HMENU hMenu, // вот если бы тут было написано LPHMENU, то тогда было-бы всё правильно :)
    UINT uFlags, // menu-item flags
    UINT uIDNewItem, // menu-item identifier or handle of drop-down menu or submenu
    LPCTSTR lpNewItem // menu-item content
    );


    А и вот ещё тебе один способ как сохранения памяти и увиличения скорости :)
    На самом деле mPoint тебе не нужен можно так сделать

    Код (Text):
    1. xor      eax,eax
    2. invoke  GetCursorPos, esp,eax,eax,eax,[hWnd],eax                                                                                      
    3. invoke  TrackPopupMenu, [hPopupMenu], TPM_RIGHTALIGN + TPM_RIGHTBUTTON
    Esp это указатель на stack, а в стеке мы храним параметры для TrackPopupMenu и первые 2 параметра как раз такие же как POINT! Вообщем это работает :)
     
  4. author

    author New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2007
    Сообщения:
    4
    спасибо!
    а то сам сижу смотрю на код и вроде все в порядке, всю голову поломал:)
    все оказалось менно так, переношу приблуду с masm на fasm и с квадратными скобками напутал.