Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Дескриптор окна

12K
06 сентября 2005 года
_ngel
4 / / 06.09.2005
У меня проблема, надо найти дескриптор окна по дескриптору меню, которое к нему подключено. Дескриптор меню я знаю. Плиз, кто знает подскажите функцию, а то я почти весь MSDN перерыл и ничего не нашёл.
А если такой функции нет, может ещё какое решение есть?
299
06 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by _ngel
У меня проблема, надо найти дескриптор окна по дескриптору меню, которое к нему подключено. Дескриптор меню я знаю. Плиз, кто знает подскажите функцию, а то я почти весь MSDN перерыл и ничего не нашёл.
А если такой функции нет, может ещё какое решение есть?


А как ты узнаешь дескриптор меню?

12K
07 сентября 2005 года
_ngel
4 / / 06.09.2005
Объясню подробнее: Я переписал класс CMenu, и пытаюсь переписать функцию MeasureItem, там требуется Контекст устройства (HDC), для ручной отрисовки меню. Он может быть получен функцией
HDC GetDC(HWND hWnd);
соответстенно нужно знать дескриптор того окна на котором я рисую меню.

P.S.
А дескриптор меню хранится в самом классе в
HMENU m_hMenu;
299
07 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by _ngel
Объясню подробнее: Я переписал класс CMenu, и пытаюсь переписать функцию MeasureItem, там требуется Контекст устройства (HDC), для ручной отрисовки меню. Он может быть получен функцией
HDC GetDC(HWND hWnd);
соответстенно нужно знать дескриптор того окна на котором я рисую меню.

P.S.
А дескриптор меню хранится в самом классе в
HMENU m_hMenu;


Я вообще мало разбираюсь в MVС (сам я борладнский), но разве при создания меню не нужно указывать родителя меню? Пусть в конструктор передаётся дескриптор окна.

406
07 сентября 2005 года
vitaly2003s
481 / / 27.07.2004
Можно попробовать такое извращение:

BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
if(GetMenu(hwnd)==*(HMENU*)lParam)
{
*(HWND*)lParam=hwnd;
return FALSE;
}
return TRUE;
}

//функция возвращяет хэндл окна если нашла окно котому принадлежит меню или ноль если ничего не нашла
HWND FindWndByMenu(HMENU hmn)
{
HWND hm=(HWND)hmn;
EnumWindows(EnumWindowsProc,(LPARAM)&hm);
if(hm==(HWND)hmn) return 0;
return hm;
}
299
07 сентября 2005 года
3D Bob
885 / / 18.04.2005
Оно наверное и будет работать как нужно... Но разве поиск, это не лишняя трата ресурсов... Меню на мой взгяд при создании, должно знать кто его создает...
Или создать дополнительное свойство
Как в бильдере например, MainMemu1->Parent....
406
07 сентября 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by 3D Bob
Оно наверное и будет работать как нужно... Но разве поиск, это не лишняя трата ресурсов... Меню на мой взгяд при создании, должно знать кто его создает...
Или создать дополнительное свойство
Как в бильдере например, MainMemu1->Parent....



Это тебе не Билдер...

12K
08 сентября 2005 года
_ngel
4 / / 06.09.2005
Цитата:
Originally posted by vitaly2003s
Можно попробовать такое извращение:

BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
if(GetMenu(hwnd)==*(HMENU*)lParam)
{
*(HWND*)lParam=hwnd;
return FALSE;
}
return TRUE;
}

//функция возвращяет хэндл окна если нашла окно котому принадлежит меню или ноль если ничего не нашла
HWND FindWndByMenu(HMENU hmn)
{
HWND hm=(HWND)hmn;
EnumWindows(EnumWindowsProc,(LPARAM)&hm);
if(hm==(HWND)hmn) return 0;
return hm;
}



Это извращение: перебирать все окна пока не найдешь нужное, уж лучше просто хранить HWND в моем классе, может в винде есть встроенная функция?

406
08 сентября 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by _ngel
Это извращение: перебирать все окна пока не найдешь нужное, уж лучше просто хранить HWND в моем классе, может в винде есть встроенная функция?


Да нет такой функции.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог