информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Шестой Perl превратится в Raku,... 
 Kik закрывается, все ушли на криптофронт 
 Sophos открывает Sandboxie 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[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

---
1






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2019 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach