Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Чекбокс в меню
Показать сообщение отдельно

Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


Maksim V
Исходник давать нет смысла, т.к. я писал на ассемблере, но заметки дам.

При объявлении ресурса меню необходимо выставить свойство CHECKED следующим образом:
Код: Выделить весь код
101 MENU
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
{
POPUP "Действие"
{
MENUITEM "Поверх окон", 1001, CHECKED
}
}
Далее в оконной процедуре диалога нужно добавить обработку сообщения WM_INITDIALOG, т.е. когда диалог будет инициализироваться.В это время вызвать функцию CheckMenuItem, чтобы убрать галочку(MF_UNCHECKED),если ты хочешь,чтобы галка была по-умолчанию снята.
Ты её(функцию) кстати походу неправильно вызываешь, должно быть:
Код: Выделить весь код
var
 g_hMenu : HANDLE

function MainDlgProc(hWin, uMsg, wParam, lParam : Integer) : Integer; stdcall;
begin
...
 g_hMenu := GetMenu(hWin);
 CheckMenuItem(g_hMenu, MENU_ON_TOP, MF_UNCHECKED);
...
Ещё...при вызове функции GetMenuState первым параметром должен быть описатель(handle), а не идентификатор(identificator).Это разные вещи.Именно поэтому я использовал функцию GetMenu для получения описателя меню.


Используй теги кода в сообщениях.
На этом форуме практикуется нажатие на кнопочку "полезное сообщение" под конкретным сообщением,которое тебе помогло.

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 14:50, 15-07-2007 | #2

Название темы: Чекбокс в меню