#include<tchar.h> #include<stdio.h> #include<windows.h> LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASS wndcls; wndcls.cbClsExtra = 0; wndcls.cbWndExtra = 0; wndcls.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wndcls.hCursor = LoadCursor(NULL,IDC_ARROW); wndcls.hIcon = LoadIcon(NULL,IDI_APPLICATION); wndcls.hInstance = hInstance; wndcls.lpfnWndProc = WinSunProc; wndcls.lpszClassName = _T("sunxin2006"); wndcls.lpszMenuName = NULL; wndcls.style = CS_HREDRAW | CS_VREDRAW; RegisterClass(&wndcls); HWND hwnd = CreateWindow(_T("sunxin2006"),_T("helloworld"),WS_OVERLAPPEDWINDOW, 0,0,600,400,NULL,NULL,hInstance,NULL); ShowWindow(hwnd,SW_SHOW); UpdateWindow(hwnd); MSG msg; while(GetMessage(&msg,NULL,0,0)>0) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } VOID OnCreate(HWND hwnd,WPARAM wParam,LPARAM lParam) { int scrWidth,scrHeight; RECT rect; //获得屏幕尺寸 scrWidth = GetSystemMetrics(SM_CXSCREEN); scrHeight = GetSystemMetrics(SM_CYSCREEN); //取得窗口尺寸 GetWindowRect(hwnd,&rect); //重新设置rect里的值 rect.left = (scrWidth-rect.right)/2; rect.top = (scrHeight-rect.bottom)/2; //移动窗口到指定的位置 SetWindowPos(hwnd,HWND_TOP,rect.left,rect.top,rect.right,rect.bottom,SWP_SHOWWINDOW); } LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { switch(uMsg) { case WM_CHAR: char szChar[20]; sprintf_s(szChar,_T("char code is %d(%c)"),wParam,(char)(wParam)); MessageBox(hwnd,szChar,_T("char"),0); break; case WM_LBUTTONDOWN: MessageBox(hwnd,_T("mouse clicked"),_T("mouse"),0); HDC hdc; hdc = GetDC(hwnd); TextOut(hdc,0,50,_T("程序员之家"),_tcslen(_T("程序员之家"))); ReleaseDC(hwnd,hdc); break; case WM_CREATE: OnCreate(hwnd,wParam,lParam); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd,uMsg,wParam,lParam); } return 0; }
注意:需要设置多字符集,不然编译无法通过。在项目出右击属性。常规->字符集->选择多字符集。