#include <windows.h>

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

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{
	static TCHAR szAppName[] = TEXT ("HelloWin") ;
	HWND hwnd ;
	MSG msg ;
	WNDCLASS 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 (WHITE_BRUSH) ;
	wndclass.lpszMenuName = NULL ;
	wndclass.lpszClassName= szAppName ;

	if (!RegisterClass (&wndclass))
	{
		MessageBox ( NULL, TEXT ("This program requires Windows NT!"),
		szAppName, MB_ICONERROR) ;
		return 0 ;
	}

	hwnd = CreateWindow( szAppName,		// window class name
		TEXT ("病毒"),					// window caption
		WS_OVERLAPPEDWINDOW,			// window style
		CW_USEDEFAULT,					// initial x position
		CW_USEDEFAULT,					// initial y position
		CW_USEDEFAULT,					// initial x size
		CW_USEDEFAULT,					// initial y size
		NULL,							// parent window handle
		NULL,							// window menu handle
		hInstance,						// program instance handle
		NULL) ;							// creation parameters

	ShowWindow (hwnd, iCmdShow) ;
	UpdateWindow (hwnd) ;
	while (GetMessage (&msg, NULL, 0, 0))
	{
		TranslateMessage (&msg) ;
		DispatchMessage (&msg) ;
	}
	return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	HDC hdc ;
	PAINTSTRUCT ps ;
	RECT rect ;
	switch (message)
	{
		case WM_PAINT:
			hdc = BeginPaint (hwnd, &ps) ;
			GetClientRect (hwnd, &rect) ;
			DrawText (hdc, TEXT ("我可以删除你的C盘吗?"), -1, &rect,
			DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
			EndPaint (hwnd, &ps) ;
			return 0 ;

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

  

#include <windows.h>
#include <strsafe.h>

//#define LINEHIGHT 15

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

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{
	static TCHAR szAppName[] = TEXT ("HelloWin") ;
	HWND hwnd ;
	MSG msg ;
	WNDCLASS 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 (WHITE_BRUSH) ;
	wndclass.lpszMenuName = NULL ;
	wndclass.lpszClassName= szAppName ;

	if (!RegisterClass (&wndclass))
	{
		MessageBox ( NULL, TEXT ("This program requires Windows NT!"),
		szAppName, MB_ICONERROR) ;
		return 0 ;
	}

	hwnd = CreateWindow( szAppName,		// window class name
		TEXT ("病毒"),					// window caption
		WS_OVERLAPPEDWINDOW,			// window style
		CW_USEDEFAULT,					// initial x position
		CW_USEDEFAULT,					// initial y position
		CW_USEDEFAULT,					// initial x size
		CW_USEDEFAULT,					// initial y size
		NULL,							// parent window handle
		NULL,							// window menu handle
		hInstance,						// program instance handle
		NULL) ;							// creation parameters

	ShowWindow (hwnd, iCmdShow) ;
	UpdateWindow (hwnd) ;
	while (GetMessage (&msg, NULL, 0, 0))
	{
		TranslateMessage (&msg) ;
		DispatchMessage (&msg) ;
	}
	return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	HDC hdc ;
	PAINTSTRUCT ps ;
	TCHAR szBuffer[128];
	RECT rect;

	///字符宽度
	static int cxChar,cyChar;
	size_t iTarget;
	TEXTMETRIC tm;

	///窗口宽度
	static int cxClient,cyClient;
	
	

	switch (message)
	{
		case WM_CREATE:			///获取字符宽度
			hdc=GetDC(hwnd);
			GetTextMetrics(hdc,&tm);
			cxChar=tm.tmAveCharWidth;
			cyChar=tm.tmHeight+tm.tmExternalLeading;
			ReleaseDC(hwnd,hdc);
		case WM_PAINT:
			
			hdc = BeginPaint (hwnd, &ps) ;

			GetClientRect (hwnd, &rect) ;
			cxClient=GetSystemMetrics(SM_CXSCREEN);
			cyClient=GetSystemMetrics(SM_CYSCREEN);
			StringCchPrintf(szBuffer,128,TEXT("分辨率 %d * %d"),cxClient,cyClient);
			DrawText (hdc, szBuffer, -1, &rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;

			/**
			for(int i=0;i<10;i++)
			{
				StringCchPrintf(szBuffer,128,TEXT("%d:%s"),i+1,TEXT("hello world"));
				StringCchLength(szBuffer,128,&iTarget);
				TextOut(hdc,cxChar,i*cyChar,szBuffer,iTarget);
			}
			*/

			EndPaint (hwnd, &ps) ;
			return 0 ;

		case WM_RBUTTONDOWN:	///鼠标消息
			MessageBox(NULL,TEXT("我被按了一下"),TEXT("ORZ"),MB_OK);
			return 0;
		
		case WM_CLOSE:			///点击关闭的消息
			if(MessageBox(hwnd,TEXT("请问是否关闭我"),TEXT("ORZ"),MB_YESNO)==IDYES)
			{
				DestroyWindow(hwnd);
			}
			else{
				return 0 ;
			}

		case WM_DESTROY:		///摧毁窗口消息
			PostQuitMessage (0) ;
			
	}
	return DefWindowProc (hwnd, message, wParam, lParam) ;
}