Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
Ребята, извните за беспокойство. Я сам решил эту проблему... 12.11.05 10:18 Число просмотров: 1565
Автор: Vedrus <Serokhvostov Anton> Статус: Member Отредактировано 12.11.05 10:57 Количество правок: 1
|
Ребята, извните за беспокойство. Я сам решил эту проблему. Если кому интересно - смотрите. Здесь приведен хук-обработчик. Остальное тривиально. Еще раз огромное спасибо tatar_0x4e за ссылку www.catch22.net.
LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
/* Перехватчик хэндла всех окон приложения */
{
RECT rc;
static HWND hwnd;
if(nCode < 0)
return CallNextHookEx(hMsgBoxHook, nCode, wParam, lParam);
switch(nCode)
{
case HCBT_ACTIVATE:
hwnd = (HWND) wParam;
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) | WS_VISIBLE);
GetWindowRect(hwnd, &rc);
MoveWindow(hwnd, rc.left-2000, rc.top, rc.right-rc.left, rc.bottom-rc.top, TRUE);
MoveWindow(hwnd, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, TRUE);
return 0;
}
return CallNextHookEx(hMsgBoxHook, nCode, wParam, lParam);
} // LRESULT CALLBACK CBTProc
---
|
<programming>
|
[Win32] Проблема отображения MessageBox 11.11.05 17:57
Автор: Vedrus <Serokhvostov Anton> Статус: Member
|
Нужна помощь, проблема в следующем: Есть окно (не диалоговый скрипт), в котором есть несколько элементов управления созданных с помощью CreateWindow. В окно постоянно выводится графическая информация (перерисовка InvalidateXXX). При возникновении некоторых событий нужно вывести сообщение MessageBox'ом. Вот здесь и проблема: оно не отображается. Что оно создается это однозначно: при нажатии Alt оно появляется. При отключении функций InvalidateXXX все нормально.
Сегодня весь день копал MSDN, поднял кучу статей с WASM, не могу найти ответ. Может кто знает. Можно ли как то получить хэндл окна созданного MessageBox'ом, тогда бы можно было просто вызвать UpdateWindow или SetWindowLong с WS_VISIBLE.
|
|
Ребята, извните за беспокойство. Я сам решил эту проблему... 12.11.05 10:18
Автор: Vedrus <Serokhvostov Anton> Статус: Member Отредактировано 12.11.05 10:57 Количество правок: 1
|
Ребята, извните за беспокойство. Я сам решил эту проблему. Если кому интересно - смотрите. Здесь приведен хук-обработчик. Остальное тривиально. Еще раз огромное спасибо tatar_0x4e за ссылку www.catch22.net.
LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
/* Перехватчик хэндла всех окон приложения */
{
RECT rc;
static HWND hwnd;
if(nCode < 0)
return CallNextHookEx(hMsgBoxHook, nCode, wParam, lParam);
switch(nCode)
{
case HCBT_ACTIVATE:
hwnd = (HWND) wParam;
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) | WS_VISIBLE);
GetWindowRect(hwnd, &rc);
MoveWindow(hwnd, rc.left-2000, rc.top, rc.right-rc.left, rc.bottom-rc.top, TRUE);
MoveWindow(hwnd, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, TRUE);
return 0;
}
return CallNextHookEx(hMsgBoxHook, nCode, wParam, lParam);
} // LRESULT CALLBACK CBTProc
---
|
|
|