добрый день. никак не могу найти в чем ошибка - создал контесктное меню, хочу показать его для выбора пункта, но popup окно не отображается Код (Text): invoke CreatePopupMenu mov [hPopupMenu], eax invoke AppendMenu, hPopupMenu, MF_STRING, IDM_PREV, PREV_String invoke AppendMenu, hPopupMenu, MF_STRING, IDM_NEXT, NEXT_String Код (Text): invoke GetCursorPos, mPoint invoke TrackPopupMenu, [hPopupMenu], TPM_RIGHTALIGN + TPM_RIGHTBUTTON, [mPoint.x], [mPoint.y], NULL, [hWnd], NULL помогите, пожалуста, советом
Код (Text): invoke AppendMenu, [hPopupMenu], MF_STRING, IDM_PREV, PREV_String 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): xor eax,eax invoke GetCursorPos, esp,eax,eax,eax,[hWnd],eax invoke TrackPopupMenu, [hPopupMenu], TPM_RIGHTALIGN + TPM_RIGHTBUTTON Esp это указатель на stack, а в стеке мы храним параметры для TrackPopupMenu и первые 2 параметра как раз такие же как POINT! Вообщем это работает
спасибо! а то сам сижу смотрю на код и вроде все в порядке, всю голову поломал все оказалось менно так, переношу приблуду с masm на fasm и с квадратными скобками напутал.