| imho.ws |
![]() |
|
|
|
# 1 |
|
Member
Регистрация: 18.07.2005
Пол: Male
Сообщения: 232
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Кто-нибудь программировал на чистом WinAPI?
У меня есть программа на Delphi. Я хочу сэкономить ресурсы компьютера при работе программы и полностью портировать ее на WinAPI. Мне нужно спроектировать форму (с этим я справился) и положить на ее фон рисунок. Подскажите, как это можно сделать? Заранее благодарен за ответ... |
|
|
|
|
# 2 |
|
Guest
Сообщения: n/a
|
На сколько я помню: получай HDC от HWND типа hdc=GetDC(hwnd) и уже в нем(hdc) рисуешь, например кидаешь туда Bitmap, с помощью функции BitBlt или подобной. Там еще все зависит от того где у тебя рисунок лежит и в каком формате и на каких виндовсах должно работать.
|
|
|
# 3 |
|
Member
Регистрация: 18.04.2002
Адрес: Ф туманах Новосибирска...
Сообщения: 378
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Чтоб положить рисунок на фон надо переопределить обработку сообщения 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;
}
__________________
Трофейные шляпки от гвоздей: ○○○○○○○○
|
|
|