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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2014, 19:31   #1
Andrey_Ov
Пользователь
 
Регистрация: 20.11.2013
Сообщений: 28
По умолчанию Когда же этот кубик-рубик сложится?win32api

Форумчане, спасайте вот опять передо мной непреодолимая стена.
Хочу по сообщению ON_PAINT вывести в окно содержимое виртуального окна или по-другому (совместимого контекста). Создаю контекст инициализирую его совместимым битмэпом, но ни-хре-на не по-лу-ча-ет-ся. что я делаю не так? Как поменять фон совместимого контекста? Изменение атрибута SetBkColor не помогает. Впрочем все работает мне удается выводить часть совместимого контекста в окно по движению мыши я вижу это если при регистрации класса окна цвет фона окна сделать например серым. Короче говоря рисовать в контексте не получается.
Код:
#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{

	static char szAppName[] = "New";
	HWND hwnd;
	MSG msg;

	WNDCLASSEX wndclass;
	wndclass.cbSize = sizeof(wndclass);
	wndclass.style = CS_HREDRAW | CS_VREDRAW;
	wndclass.lpfnWndProc = WndProc;
	wndclass.cbClsExtra = 0;
	wndclass.cbWndExtra = 0;
	wndclass.hInstance = hInstance;
	wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
	wndclass.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
	wndclass.lpszMenuName = NULL;
	wndclass.lpszClassName = szAppName;
	wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
	RegisterClassEx(&wndclass);
	hwnd = CreateWindow(
		szAppName,
		"New lesson",
		WS_OVERLAPPEDWINDOW /*| WS_VSCROLL | WS_HSCROLL*/,
		CW_USEDEFAULT, CW_USEDEFAULT,
		CW_USEDEFAULT, CW_USEDEFAULT,
		NULL, NULL, hInstance, NULL
		);
	
	ShowWindow(hwnd, iCmdShow);
	UpdateWindow(hwnd);
	
	
	

	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}




LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
	
	static HDC hdc, hdcMem;
	static POINT Pt, point;
	PAINTSTRUCT ps;
	RECT rect;
	static int screenWidth = GetSystemMetrics(SM_CXSCREEN);
	static int screenHeight = GetSystemMetrics(SM_CYSCREEN);
	static HDC hdcScreen;
	static HDC memBuf;
	static HBITMAP bmBuf;
	static HBRUSH brBuf;
	HPEN hP;
	switch (iMsg)

	{
	case WM_CREATE:
		hdcScreen = GetDC(hwnd);
		memBuf = CreateCompatibleDC(hdcScreen);
		bmBuf = CreateCompatibleBitmap(hdcScreen, screenWidth, screenHeight);
		SelectObject(memBuf, bmBuf);
		SetBkColor(memBuf, RGB(20, 250, 200));
	        hP = CreatePen(PS_SOLID, 0, RGB(255, 0, 0));
		SelectObject(memBuf, hP);
		MoveToEx(memBuf, 0, 0, NULL);
		LineTo(memBuf, 40, 30);
	        DeleteObject(bmBuf);
		DeleteObject(hP);
		DeleteDC(memBuf);
		ReleaseDC(hwnd, hdcScreen);
		
		return 0;

	case WM_MOUSEMOVE:
		if (wParam & MK_LBUTTON){
			Pt.x = LOWORD(lParam);
			Pt.y = HIWORD(lParam);

			InvalidateRect(hwnd, NULL,false);
		}
				    return 0;
		
	case WM_PAINT:
		BitBlt(hdc, Pt.x, Pt.y, 39, 38, memBuf, 0, 0, PATCOPY);

		        hdc = BeginPaint(hwnd, &ps);
			BitBlt(hdc, Pt.x, Pt.y, 39, 38, memBuf, 0, 0, PATCOPY);
	
			EndPaint(hwnd, &ps);
		
		return 0;
				
	case WM_SIZE:
		
		return 0;

	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd, iMsg, wParam, lParam);
}


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 04.01.2014 в 23:43.
Andrey_Ov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
кубик Олечка_-_ Помощь студентам 0 15.05.2012 13:20
Кубик Кристинка89 C++ Builder 2 18.03.2011 09:50
Кубик рубика aharem08 Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 04.10.2010 02:06
Как узнать когда браузер скачивает, а когда нет? iPod Работа с сетью в Delphi 1 07.05.2007 15:16