用C语言写界面

步骤如下:

1. 宏定义Windows版本为XP #define _WIN32_WINNT 0x0501

2. 包含头文件 #include

3. 入口函数 WinMain

4. 注册窗口 RegisterClassEx

5. 创建窗口 CreateWindow

6. 显示和更新窗口 ShowWindow/UpdateWindow

7. 消息循环

8. 消息处理

入口函数WinMain,该函数是由系统调用的,执行成功后进入消息循环直到得到WM_QUIT消息后结束程序返回msg.wParam消息

代码:

int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){

MSG msg;//消息结构

BOOL fGotMessage;

//注册窗口

if(!InitApplication(hinstance)){return FALSE;}

//创建窗口

if(!InitInstance(hinstance,nCmdShow)){return FALSE;}

ShowWindow(hwnd,nCmdShow);

UpdateWindow(hwnd);

//消息循环

while((fGotMessage = GetMessage(&msg,(HWND)NULL,0,0)) != 0 && fGotMessage != -1){

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return msg.wParam;

}

注册窗口,所有窗口在创建之前都必须注册.所以我们要先注册我们的程序的主窗口,控件则已由系统注册所以不需要注册.使用函数RegisterClassEx(&wcx)注册,参数是一个指向WNDCLASSEX窗口类的结构.结构的所有属性都必须填写合适的内容

代码:

BOOL InitApplication(HINSTANCE hinstance){

WNDCLASSEX wcx;

//填充结构

wcx.cbSize = sizeof(wcx);//WNDCLASSEX 结构的大小

wcx.style = CS_HREDRAW | CS_VREDRAW;//如果大小改变了重绘窗口

wcx.lpfnWndProc = MainWndProc;//窗口消息处理函数

wcx.cbClsExtra = 0;//无附加窗口类内存

wcx.cbWndExtra = 0;//无附加窗口内存

wcx.hInstance = hinstance;//应用程序实例

wcx.hIcon = LoadIcon(NULL,NULL);//应用程序的图标

wcx.hCursor = LoadCursor(NULL,IDC_ARROW);//鼠标指针

wcx.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//背景画刷

wcx.lpszMenuName = NULL;//菜单资源

wcx.lpszClassName = "MainWClass";//窗口唯一类名

wcx.hIconSm = NULL;//标题栏的图标

//注册窗口类,返回

return RegisterClassEx(&wcx);

}

创建窗口,返回句柄

hwnd = CreateWindow(

"MainWClass",//窗口类名,使用之前注册的主窗口类

"御坂网络欢迎你",//窗口名,显示在串口标题栏上的字符串

WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_POPUPWINDOW,//窗口样式

CW_USEDEFAULT,//水平位置(默认)

CW_USEDEFAULT,//垂直位置(默认)

800,//宽

600,//高

(HWND)NULL,//无父窗口

(HMENU)NULL,//菜单

(HINSTANCE)hinstance,//应用程序实例

(LPVOID)NULL//无窗口创建数据

);

消息处理函数,回调函数窗口句柄是之前创建的主窗口的句柄.

LRESULT CALLBACK MainWndProc(

HWND hwnd,//窗口句柄

UINT uMsg,//消息标识符

WPARAM wParam,//消息的第一个参数

LPARAM lParam//消息的第二个参数

)

用switch来对不同的消息进行处理.

你可能感兴趣的:(用C语言写界面)