-
#include <windows.h>
-
//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);
-
-
}
[cpp] view plaincopy
-
// 内容:一个基本的Win32程序框架
-
#include <windows.h>
-
//#include <windowsx.h>
-
//函数声明
-
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);
-
}