#include
//Win32窗口程序实例
//声明消息处理函数
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
char szClassName[]="windowsclass";
char szAppTitle[]="WinApi窗口实例";
int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
HWND hMainWnd;//窗口句柄
MSG msg;//消息
WNDCLASS winclass;//窗口结构体
if(!hPrevInstance)
{
winclass.style=CS_HREDRAW|CS_VREDRAW;//窗口风格
winclass.lpfnWndProc=WndProc;//注册消息处理函数
winclass.cbWndExtra=0;//附加参数
winclass.cbClsExtra=0;//附加参数
winclass.hInstance=hInstance;//当前应用程序句柄
winclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//加载窗口图标
winclass.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口光标
winclass.hbrBackground=(HBRUSH)GetStockObject(LTGRAY_BRUSH);//设置窗口背景为浅灰色
winclass.lpszMenuName=NULL;//窗口菜单为空
winclass.lpszClassName=szClassName;//给窗体结构体命名
RegisterClass(&winclass);//注册窗口
}
hMainWnd=CreateWindow(szClassName,//窗口结构体名称
szAppTitle,//窗口标题
WS_OVERLAPPEDWINDOW,//窗口风格为可重叠窗口
CW_USEDEFAULT,CW_USEDEFAULT,//x,y坐标
CW_USEDEFAULT,CW_USEDEFAULT,//窗口的宽度,高度
NULL,NULL,hInstance,NULL);
ShowWindow(hMainWnd,SW_SHOWNORMAL);//显示窗口
UpdateWindow(hMainWnd);//更新窗口,最大化
//建立消息循环
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hMainwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_KEYDOWN://键盘按下
{
MessageBox(hMainwnd,"键盘按下了","提示",MB_OK);
break;
}
case WM_LBUTTONDOWN://鼠标按下
{
MessageBox(hMainwnd,"鼠标按下了","提示",MB_OK);
break;
}
case WM_RBUTTONDOWN://鼠标右键按下
{
MessageBox(hMainwnd,"鼠标右键按下了","提示",MB_OK);
break;
}
case WM_DESTROY://关闭窗口
{
MessageBox(hMainwnd,"关闭窗口了","提示",MB_OK);
PostQuitMessage(0);
//exit(0);
//ExitProcess(0);
break;
}
default:
break;
}
return DefWindowProc(hMainwnd,message,wParam,lParam);
}
// 内容:一个基本的Win32程序框架
#include
//#include
//函数声明
BOOL InitWindow( HINSTANCE hInstance, int nCmdShow );
LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam );
//函数:WinMain() 功能:Win32应用程序入口函数。创建主窗口,处理消息循环
int PASCAL WinMain( HINSTANCE hInstance, //当前实例句柄
HINSTANCE hPrevInstance, //前一个实例句柄
LPSTR lpCmdLine, //命令行字符
int nCmdShow) //窗口显示方式
{
MSG msg;
//创建主窗口
if ( !InitWindow( hInstance, nCmdShow ) )
return FALSE;
//进入消息循环:
//从该应用程序的消息队列中检取消息,送到消息处理过程,
//当检取到WM_QUIT消息时,退出消息循环。
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//程序结束
return msg.wParam;
}
//函数:InitWindow()
//功能:创建窗口。
static BOOL InitWindow( HINSTANCE hInstance, int nCmdShow )
{
HWND hwnd; //窗口句柄
WNDCLASS wc; //窗口类结构
//填充窗口类结构
wc.style = CS_VREDRAW | CS_HREDRAW;
wc.lpfnWndProc = (WNDPROC)WinProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION );
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = "EasyWin";
RegisterClass( &wc ); //注册窗口类
hwnd = CreateWindow( //创建主窗口
"EasyWin", //窗口类名称
"一个基本的Win32程序", //窗口标题
WS_OVERLAPPEDWINDOW, //窗口风格,定义为普通型
100, //窗口位置的x坐标
100, //窗口位置的y坐标
400, //窗口的宽度
300, //窗口的高度
NULL, //父窗口句柄
NULL, //菜单句柄
hInstance, //应用程序实例句柄
NULL ); //窗口创建数据指针
if( !hwnd )
return FALSE;
//显示并更新窗口
ShowWindow( hwnd, nCmdShow );
UpdateWindow( hwnd );
return TRUE;
}
//函数:WinProc()
//功能:处理主窗口消息
LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam )
{
switch( message )
{
case WM_KEYDOWN://击键消息
switch( wParam )
{
case VK_ESCAPE:
MessageBox(hWnd,"ESC键按下了!","Keyboard",MB_OK);
break;
}
break;
case WM_RBUTTONDOWN://鼠标消息
{
MessageBox(hWnd,"鼠标右键按下了!","Mouse",MB_OK);
break;
}
case WM_PAINT://窗口重画消息
{
char hello[]="你好,我是EasyWin !";
HDC hdc;
PAINTSTRUCT ps;
hdc=BeginPaint( hWnd,&ps ); //取得设备环境句柄
SetTextColor(hdc, RGB(0,0,255)); //设置文字颜色
TextOut( hdc, 20, 10, hello, strlen(hello) );//输出文字
EndPaint( hWnd, &ps ); //释放资源
break;
}
case WM_DESTROY://退出消息
PostQuitMessage( 0 );//调用退出函数
break;
}
//调用缺省消息处理过程
return DefWindowProc(hWnd, message, wParam, lParam);
}