C语言编写Win32图形界面程序
/******************************************************************************
Entry.cpp:定义程序的入口点。
编译方法:
1、用VC6编译链接。
2、用MinGW进行命令行编译。
命令行编译参数:
gcc -O2 Entry.cpp -o Win32APP.exe
******************************************************************************/
#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//声明消息处理函数
HWND g_hWnd;//主窗口句柄
WNDCLASSEX g_WCEx=//窗口类
{
sizeof(g_WCEx),
0,
(WNDPROC)WndProc,
0,
0,
NULL,
NULL,
NULL,
(HBRUSH)(COLOR_BTNFACE+1),//窗口背景色(按钮表面)
NULL,
TEXT("WIN32APP_WINDOW"),//窗口类名
NULL
};
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int nShowCmd)
{
ATOM atClass;//注册窗口类的返回值
MSG msg;//消息循环要用到的结构体
g_WCEx.hInstance=hInstance;
g_WCEx.hIcon=LoadIcon(NULL,IDI_APPLICATION);//默认图标
g_WCEx.hIconSm=LoadIcon(NULL,IDI_APPLICATION);//默认小图标
g_WCEx.hCursor=LoadCursor(NULL,IDC_ARROW);//默认鼠标光标类型
if(!(atClass=RegisterClassEx(&g_WCEx)))//取得返回值,同时判断是否为零
{
MessageBox(NULL,TEXT("无法注册窗口类!"),NULL,MB_ICONERROR);
return 1;//返回非零表示异常退出
}
g_hWnd=CreateWindowEx(0,(LPCTSTR)atClass,TEXT("主窗口"),WS_OVERLAPPEDWINDOW,//用注册窗口类返回值创建窗口
CW_USEDEFAULT,CW_USEDEFAULT,888,666,//窗口位置、尺寸
NULL,NULL,hInstance,NULL);
if(!g_hWnd)
{
MessageBox(NULL,TEXT("无法创建窗口!"),NULL,MB_ICONERROR);
UnregisterClass(g_WCEx.lpszClassName,hInstance);//取消注册窗口类
return 1;//返回非零表示异常退出
}
ShowWindow(g_hWnd,nShowCmd);//显示窗口
UpdateWindow(g_hWnd);//刷新窗口
while(GetMessage(&msg,NULL,0,0))//消息循环
{
TranslateMessage(&msg);//翻译键盘消息
DispatchMessage(&msg);//发送消息给回调函数
}
UnregisterClass(g_WCEx.lpszClassName,hInstance);
return 0;//返回0表示正常退出
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wp,LPARAM lp)
{
switch(uMsg)
{
case WM_DESTROY:
PostQuitMessage(0);//发送WM_QUIT退出消息循环
break;
default:
return DefWindowProc(hWnd,uMsg,wp,lp);
}
return 0;
}
|