информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеАтака на InternetГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[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-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach