#include <windows.h>
#include <iostream>
#include <stdio.h>
using namespace std;
const string ProgramTitle = "Hello Windows";
LRESULT CALLBACK WinProc(HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
string text = "Hello Windows!";
switch (message)
{
case WM_CHAR:
char szChar[20];
sprintf(szChar,"char code is %d",wParam);
MessageBox(hWnd,szChar,"char",0);
break;
case WM_CLOSE:
if(IDYES==MessageBox(hWnd,"是否真的结束?","message",MB_YESNO))
{
DestroyWindow(hWnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
//设置程序所需的主窗口类的值。
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW; //窗口样式
wc.lpfnWndProc = (WNDPROC)WinProc; //指向一个回调函数的长指针
wc.cbClsExtra = 0;
wc.cbWndExtra = 0; //增加一些额外的内存空间
wc.hInstance = hInstance; //传递给MyRegisterClass的hInstance参数值。主窗口需要知道正在使用的是哪个实例。
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//用于绘制程序窗口背景的一个刷子句柄。
wc.lpszMenuName = 0; //程序菜单名称
wc.lpszClassName = ProgramTitle.c_str(); //给窗口指定特定的类名称。
wc.hIconSm = NULL;
return RegisterClassEx(&wc);
}
//用于创立程序,基本上只创建程序窗口。
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd = CreateWindow(
ProgramTitle.c_str(),
ProgramTitle.c_str(),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
640,480,
NULL,
NULL,
hInstance,
NULL);
if (hWnd==0)
{
return 0;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return 1;
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
MyRegisterClass(hInstance);
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
MSG msg;
BOOL bRet;
// 主消息循环:
while ((bRet=GetMessage(&msg, NULL, 0, 0))!=0)
{
if (bRet==-1) break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int) msg.wParam;
}