Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2010, 17:13   #1
Qwe1
Пользователь
 
Регистрация: 15.05.2009
Сообщений: 29
По умолчанию DrawText поверх картинки

Вывел на все диалоговое окно bmp-картинку (из ресурсов), потом хочу вывести текст с помощью DrawText(), но он выводится, но его не видно, так как картинка его закрывает. Подскажите, как это исправить. Текст вывожу так:
Код:
BOOL CALLBACK DlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch(msg)
	{
		HANDLE_MSG(hwnd, WM_INITDIALOG, DlgOnInitDialog);
		HANDLE_MSG(hwnd, WM_COMMAND, DlgOnCommand);

		case WM_PAINT:
			HDC hdc;
			PAINTSTRUCT ps;
			RECT rect;
			HFONT hFont;
			
			hdc = BeginPaint(hwnd, &ps);
            hFont = CreateFont(24,0,0,0, FW_DONTCARE,FALSE,FALSE,FALSE, DEFAULT_CHARSET,OUT_OUTLINE_PRECIS, CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, VARIABLE_PITCH,TEXT("Arial"));
            SelectObject(hdc, hFont);
            SetRect(&rect, 20, 20, 600, 400);
            SetTextColor(hdc, RGB(255,0,0));
			SetBkMode(hdc, TRANSPARENT);
            DrawText(hdc, "Перва строка!", -1, &rect, DT_EDITCONTROL);
			SetRect(&rect, 20, 50, 600, 400);
			DrawText(hdc, "Вторая строка!", -1, &rect, DT_EDITCONTROL);
			EndPaint(hwnd, &ps);
			return 0;
	
		default:
			return 0;
	}
}

BOOL DlgOnInitDialog(HWND hwnd, HWND, LPARAM)
{
	int i, max;
	RECT rect;

	GetWindowRect(hwnd, &rect);
	MoveWindow(hwnd, (GetSystemMetrics(SM_CXSCREEN) / 2) - (rect.right - rect.left) / 2, (GetSystemMetrics(SM_CYSCREEN) / 2) - (rect.bottom - rect.top) / 2, rect.right - rect.left, rect.bottom - rect.top, 1);

	max = 15;
	for(i=1; i<=max; i++)
		ShowWindow(GetDlgItem(hwnd, 100 + i), SW_HIDE);
	srand((unsigned int)time(NULL));
	ShowWindow(GetDlgItem(hwnd, 101 + rand() % max), SW_SHOW);
	
	return TRUE;
}

Последний раз редактировалось Qwe1; 27.12.2010 в 17:17.
Qwe1 вне форума Ответить с цитированием
Старый 28.12.2010, 21:48   #2
reynevan
Пользователь
 
Регистрация: 15.07.2010
Сообщений: 35
По умолчанию

вот как я это делал. Правда, картинку брал не из рессурсов, а напрямую

GetClientRect(hWnd,&Rect);
hDC=BeginPaint(hWnd,&PaintStruct);
hCompatibleDC=CreateCompatibleDC(hD C);
hBitmap=LoadImage(NULL,"1.bmp",IMAG E_BITMAP,0,0,LR_LOADFROMFILE);
SelectObject(hCompatibleDC, hBitmap);
SetBkMode(hCompatibleDC,TRANSPARENT );
/*
выводишь то, что надо
DrawText(hCompatibleDC,...);
*/
GetObject(hBitmap,sizeof(BITMAP),&B itmap);
SetStretchBltMode(hDC, COLORONCOLOR);
BitBlt(hDC, 0, 0, Rect.right - Rect.left, Rect.bottom - Rect.top,hCompatibleDC, 0, 0, SRCCOPY);

DeleteDC(hCompatibleDC);
DeleteObject(hBitmap);
hCompatibleDC = NULL;
EndPaint(hWnd,&PaintStruct);
reynevan вне форума Ответить с цитированием
Старый 28.12.2010, 21:49   #3
reynevan
Пользователь
 
Регистрация: 15.07.2010
Сообщений: 35
По умолчанию

может, и через одно место, но работает)
reynevan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TextOut и DrawText Claster Помощь студентам 3 29.03.2010 18:59
Функция DrawText SNUPY Помощь студентам 6 03.10.2009 11:30
почему DrawText криво работает? STill_ace Общие вопросы C/C++ 11 24.08.2009 15:57
разноцветный WinProcs.DrawText lis_abu Общие вопросы Delphi 10 24.10.2007 14:42
текст поверх картинки Viteef HTML и CSS 3 29.06.2007 16:58