информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаСтрашный баг в WindowsГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
That code is just for discussion. The real one has all the... 09.05.12 18:56  Число просмотров: 2793
Автор: void <Grebnev Valery> Статус: Elderman
<"чистая" ссылка>
That code is just for discussion. The real one has all the checks.
<programming>
[Win32] bitmap на диалоговом окне 18.04.12 06:25  
Автор: void <Grebnev Valery> Статус: Elderman
<"чистая" ссылка>
Код рисующий 16x16 bitmap в нижнет правом углу окна работает нормально.

case WM_PAINT:
	{
	PAINTSTRUCT ps;
	HDC hdc;

	hdc = ::BeginPaint(hDlg, &ps);

	HBITMAP bmp = ::LoadBitmap(::GetModuleHandle(NULL), 
		MAKEINTRESOURCE(IDB_BITMAP1));
		
	HDC memDc = ::CreateCompatibleDC( hdc );

	HBITMAP oldBitmap = (HBITMAP) ::SelectObject( memDc, bmp );

	RECT rct = {0};
	::GetClientRect(hDlg, &rct);

	::BitBlt( hdc, rct.right - 16, rct.bottom - 16, 16, 16,
		memDc, 0, 0, SRCCOPY);

	::SelectObject( memDc, oldBitmap );

	::DeleteDC(memDc);

	::EndPaint(hDlg, &ps);
	}
break;

---

Тот же код не работает для диалогового окна. При увеличении размера диалога, появляется "шлейф" из bitmap-ок. При уменьшении размера - bitmap не отрисовывается. Как это исправить?

Спасибо.
в диалоге это нужно делать в wm_erasebknd 18.04.12 08:33  
Автор: dl <Dmitry Leonov>
<"чистая" ссылка>
Спасибо. Рисует. Код такой: 19.04.12 03:37  
Автор: void <Grebnev Valery> Статус: Elderman
<"чистая" ссылка>
Спасибо. Рисует. Код такой:
case WM_ERASEBKGND:
	{
	HWND hControl = ::GetDlgItem( hDlg, IDC_STATIC1);

	HDC hdc = ::GetDC(hControl);

	HBITMAP bmp = ::LoadBitmap(::GetModuleHandle(NULL), 
			MAKEINTRESOURCE(IDB_BITMAP1));
		
	HDC memDc = ::CreateCompatibleDC( hdc );

	HBITMAP oldBitmap = (HBITMAP) ::SelectObject( memDc, bmp );

	::BitBlt( hdc, 0, 0, 16, 16, memDc, 0, 0, SRCCOPY);

	::SelectObject( memDc, oldBitmap );

	::DeleteDC(memDc);

	::ReleaseDC( hControl, hdc);
	}
	break;

---

Другой эффект - bitmap не отрисовывается, пока я не изменю размеры диалога.
возможно, контрол при первом вызове еще недоступен 19.04.12 05:09  
Автор: dl <Dmitry Leonov>
<"чистая" ссылка>
Мдаа, хоть бы у одной функции проверялось возвращаемое значение:) 09.05.12 16:08  
Автор: AlexD <Alexander> Статус: Member
<"чистая" ссылка>
That code is just for discussion. The real one has all the... 09.05.12 18:56  
Автор: void <Grebnev Valery> Статус: Elderman
<"чистая" ссылка>
That code is just for discussion. The real one has all the checks.
1




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


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