imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 18.07.2005, 11:52     # 1
Larry
Member
 
Аватар для Larry
 
Регистрация: 18.07.2005
Пол: Male
Сообщения: 232

Larry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форуме
Question Программирвоание в WinAPI

Кто-нибудь программировал на чистом WinAPI?

У меня есть программа на Delphi. Я хочу сэкономить ресурсы компьютера при работе программы и полностью портировать ее на WinAPI. Мне нужно спроектировать форму (с этим я справился) и положить на ее фон рисунок. Подскажите, как это можно сделать?

Заранее благодарен за ответ...
Larry вне форума  
Старый 28.07.2005, 13:38     # 2
hizel
Guest
 
Сообщения: n/a

На сколько я помню: получай HDC от HWND типа hdc=GetDC(hwnd) и уже в нем(hdc) рисуешь, например кидаешь туда Bitmap, с помощью функции BitBlt или подобной. Там еще все зависит от того где у тебя рисунок лежит и в каком формате и на каких виндовсах должно работать.
 
Старый 31.07.2005, 09:53     # 3
EjikVTumane
Member
 
Аватар для EjikVTumane
 
Регистрация: 18.04.2002
Адрес: Ф туманах Новосибирска...
Сообщения: 378

EjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собой
Чтоб положить рисунок на фон надо переопределить обработку сообщения WM_ERASEBKGND.

На сях это выглядит так:

Код:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	int wmId, wmEvent;
	PAINTSTRUCT ps;
	HDC hdc;

	switch (message) 
	{
        // ... пропущена обработка всякой другой фигни
 	case WM_ERASEBKGND:
	{
		RECT clientRect;
		hdc = GetDC(hWnd);
		GetClientRect(hWnd, &clientRect);
		HDC MainFrameDC;
		MainFrameDC = CreateCompatibleDC(NULL);
		SelectObject(MainFrameDC, MainFrame);
		BitBlt(hdc, 0, 0, clientRect.right, clientRect.bottom, MainFrameDC, 0, 0, SRCCOPY);
		ReleaseDC(hWnd, hdc);
		DeleteDC(MainFrameDC);
         return 0;
	}
        // ... пропущена обработка всякой другой фигни
 	}
	return 0;
}
Что-то в этом духе.
__________________
Трофейные шляпки от гвоздей: ○○○○○○○○
EjikVTumane вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 15:10.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.