Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сделать элемент меню неактивным. Что не так. 
:(
    Опции темы
devmstr
Дата 17.9.2005, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



Пробую.
Код

#include <windows.h>
#include "resource.h"
#define  cw_def CW_USEDEFAULT

HMENU hMn;

LONG WINAPI WndProc(HWND hWNd, UINT msg, WPARAM wPar, LPARAM lPar);

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmd, int nCmdShow)
{
    WNDCLASS wnd;
    memset(&wnd, 0, sizeof(wnd));
    wnd.hbrBackground    = (HBRUSH)COLOR_WINDOW;
    wnd.hCursor            = LoadCursor(NULL, IDC_ARROW);
    wnd.hIcon            = LoadIcon(NULL, IDI_APPLICATION);
    wnd.hInstance        = hInst;
    wnd.lpfnWndProc        = &WndProc;
    wnd.lpszClassName    = "Menu";
    wnd.lpszMenuName    = "IDR_MENU";    
    wnd.style            = CS_HREDRAW|CS_VREDRAW;

    if (!RegisterClass(&wnd))
    {
        MessageBox(NULL,"Error register class", "Error", MB_OK|MB_ICONERROR);
        return 1;
    }

    HWND hWnd = CreateWindow("Menu", "Application", WS_OVERLAPPEDWINDOW, cw_def, cw_def, cw_def, cw_def, NULL, NULL,
                            hInst, NULL);

    if (!hWnd)
    {
        MessageBox(NULL, "Error create window", "Error", MB_OK|MB_ICONERROR);
        return 1;
    }
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

    hMn = GetMenu(hWnd);
    

    MSG msg;
    while (GetMessage(&msg, NULL, 0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.lParam;

 }

LONG WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wPar, LPARAM lPar)
{
    switch(msg)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    case WM_LBUTTONDOWN:
        EnableMenuItem( hMn, ID_MENU_EXIT, MF_BYPOSITION|MF_DISABLED);
               break;
    default:
        return DefWindowProc(hWnd, msg, wPar, lPar);

    return 0;
    }
}


Не пашет!


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
bel_nikita
Дата 17.9.2005, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 4
Всего: 47



Зачем тут MF_BYPOSITION? smile
Попробуй так:
Код

....
    case WM_LBUTTONDOWN:
        EnableMenuItem( hMn, ID_MENU_EXIT, MF_DISABLED);
     break;
...



--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
devmstr
Дата 19.9.2005, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



MSDN:
This parameter must be a combination of either MF_BYCOMMAND or MF_BYPOSITION and MF_ENABLED, MF_DISABLED, or MF_GRAYED.


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
Dreamer_0x01
Дата 19.9.2005, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 12



Цитата

EnableMenuItem( hMn, ID_MENU_EXIT, MF_BYPOSITION|MF_DISABLED);


попробуй добавь еще грей-флаг "принудительно":

EnableMenuItem( hMn, ID_MENU_EXIT, MF_BYPOSITION|MF_DISABLED|MF_GRAYED);

Да, и у меня была еще один раз такая проблема - мое меню состояло из нескольких столбцов. (По аналогии Файл, Команды, Помощь). И когда я запрещал элемент одного их этих подменю (например, мой пунк меню my_MENU_id находился в подменю "команды"), то приходилось пользоваться следующей конструкцией:


Код

HMENU hmn2;
hmn2=GetSubMenu(hmn,1/*здесь это как раз номер столбца*/);
EnableMenuItem( hmn2, my_MENU_id/*мой пункт меню*/, MF_BYPOSITION|MF_DISABLED|MF_GRAYED);


Это сообщение отредактировал(а) Dreamer_0x01 - 19.9.2005, 16:48


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Nastya
Дата 19.9.2005, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 3
Всего: 44



MF_BYPOSITION просто меняем на MF_BYCOMMAND


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
devmstr
Дата 22.9.2005, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



Спасибо всем! Трабла решилась!


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0481 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.