Win32 CreateWindow GdiPlus

#include "stdafx.h"

#include "TestGidPlus.h"



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



int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)

{

	GdiplusStartupInput gdiplusStartupInput;

	ULONG_PTR           gdiplusToken;

	// Initialize GDI+.

	GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);



	WNDCLASSEX wcApp;

	wcApp.lpszClassName			= TEXT("Test_Window");

	wcApp.cbSize				= sizeof(wcApp);

	wcApp.style					= CS_HREDRAW | CS_VREDRAW;

	wcApp.hInstance				= hInstance;

	wcApp.cbWndExtra			= 0;	

	wcApp.cbClsExtra			= 0;

	wcApp.hCursor				= LoadCursor(NULL,IDC_ARROW);

	wcApp.hIcon					= LoadIcon(NULL,IDI_APPLICATION);

	wcApp.lpfnWndProc			= WndProc;

	wcApp.hCursor				= LoadCursor(NULL,IDC_ARROW);

	wcApp.hbrBackground			= (HBRUSH)(COLOR_WINDOW);

	wcApp.lpszMenuName			= NULL;

	wcApp.hIconSm				= NULL;

	RegisterClassExW(&wcApp);



	HWND hwnd = CreateWindowExW (NULL, TEXT("Test_Window"), TEXT(""), WS_OVERLAPPEDWINDOW, 100, 100, 600, 400, NULL, NULL, hInstance, NULL);

	ShowWindow(hwnd,SW_NORMAL);

	UpdateWindow(hwnd);

	MSG msg;

	while (GetMessage(&msg, NULL, 0, 0)) 

	{

		TranslateMessage(&msg);

		DispatchMessage(&msg);

	}

	GdiplusShutdown(gdiplusToken);

	return msg.lParam;

}



LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

	LRESULT b;

	PAINTSTRUCT ps;

	HDC hdc;

	switch (message)

	{

	case WM_CREATE:

		//SendMessage(hwnd,WM_PAINT,0,0);

		break;

	case WM_PAINT:

		{

			///////////////////Gdiplus与Gdi混合实现双缓冲////////////////////

			//HDC hMemDC = CreateCompatibleDC(m_hDC);

			//HBITMAP hMemBitmap = CreateCompatibleBitmap(m_hDC, DEFAULT_STATUS_WIDTH, DEFAULT_STATUS_HEIGHT);

			//SelectObject(hMemDC, hMemBitmap);

			//Graphics *memGraphics = new Graphics(hMemDC);

			//Pen pen(Color(192, 192, 192));

			//SolidBrush brush(Color(255, 255, 255));

			//memGraphics->FillRectangle(&brush, xPos, yPos, DEFAULT_STATUS_WIDTH, DEFAULT_STATUS_HEIGHT);

			//memGraphics->DrawRectangle(&pen, xPos, yPos, DEFAULT_STATUS_WIDTH, DEFAULT_STATUS_HEIGHT);

			//for (int i = 0; i < SMALL_IMAGE_COUNT; i++)

			//{

			//	DrawImageFromId(memGraphics, imgID[i], imgXPos[i], imgYPos[i]);

			//}

			//DeleteObject(hMemBitmap);

			//BitBlt(m_hDC, xPos, yPos, DEFAULT_STATUS_WIDTH, DEFAULT_STATUS_HEIGHT, hMemDC, 0, 0, SRCCOPY);

			//DeleteDC(hMemDC);

			//delete memGraphics;



			hdc = BeginPaint(hwnd, &ps);

			Graphics graphics(hdc);

			Pen pen(Color(255, 0, 0));

			graphics.DrawLine(&pen, 0, 0, 0, 500);

			EndPaint(hwnd, &ps);

			break;

		}

	case WM_NCHITTEST:

		{

			POINT pt; 

			pt.x = GET_X_LPARAM(lParam); 

			pt.y = GET_Y_LPARAM(lParam);



			RECT rcClient;

			GetClientRect(hwnd, &rcClient);



			b = DefWindowProc(hwnd,message,wParam,lParam);

			switch(b)

			{

			case HTCLIENT:

				SetWindowText(hwnd,TEXT("点击的是客户区"));

				return b;

			case HTCAPTION:

				SetWindowText(hwnd,TEXT("点击的是标题栏"));

				return b;

			case HTBOTTOM:

				SetWindowText(hwnd,TEXT("点击的是下边框"));

				return b;

			case HTBOTTOMLEFT:

				SetWindowText(hwnd,TEXT("点击的是左下边框"));

				return b;

				return b;

			case HTCLOSE:

				SetWindowText(hwnd,TEXT("点击的是关闭按钮"));

				return b;

			case HTLEFT:

				SetWindowText(hwnd,TEXT("点击的是左边框"));

				return b;

			case HTMAXBUTTON:

				SetWindowText(hwnd,TEXT("点击的是最大化按钮"));

				return b;

			case HTMINBUTTON:

				SetWindowText(hwnd,TEXT("点击的是最小化按钮"));

				return b;

			case HTRIGHT:

				SetWindowText(hwnd,TEXT("点击的是右边框"));

				return b;

			case HTSYSMENU:

				SetWindowText(hwnd,TEXT("点击的是系统菜单"));

				return b;

			case HTTOP:

				SetWindowText(hwnd,TEXT("点击的是上边框"));

				return b;

			case HTBOTTOMRIGHT:

				SetWindowText(hwnd,TEXT("点击的是右下边框"));

				return b;

			case HTTOPRIGHT:

				SetWindowText(hwnd,TEXT("点击的是右上边框"));

				return b;

			case HTTOPLEFT:

				SetWindowText(hwnd,TEXT("点击的是左上边框"));

				return b;

			default:

				return b;

			}

		}

	case WM_DESTROY:

		PostQuitMessage (0) ;

		return 0 ;

	}

	return DefWindowProc (hwnd, message, wParam, lParam) ;

}

  

你可能感兴趣的:(window)