win32 编程由简入繁之一:用windows SDK 做一个简单窗口程序


实例下载

1. WinMain 是入口函数,是windows操作系统加载程序的程序执行入口点,这点要知道。

2. RegisterClass注册窗口类,Window SDK提供的API ,一些基本的API要记住,关于Window SDK提供的API,就是window 提供给我们的实现特定功能可执行代码的入口,当执行API时,执行将跳转到系统,执行完毕,再回到你写的程序中来。

3.CreateWindow,创建窗口的Window 的API,得到窗口句柄,这个句柄很重要,操作系统靠这个句柄来操作窗口数据。至于自己画窗口,自己管理自己的消息栈,当然也可以。不过Window SDK提供了现成的接口。

4.ShowWindow,Window 的API。

5.UpdateWindow ,Window 的API。

经过以上几个步骤,一个窗体建好了。接下来处理窗口消息:

1.GetMessage ,Window 的API,取消息栈里的消息。

2.TranslateMessage,Window 的API,解析得到的消息。

3.DispatchMessage,Window 的API,把消息发送给他的接收窗口。

消息的定义,包括句柄、消息代号、参数、时间等:

typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
#ifdef _MAC
DWORD lPrivate;
#endif
}

最后写窗口的消息处理过程的函数,该函数是回调函数,一定要地址明确(加载就知道,而不是执行时知道)

switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_CREATE:
{
bopen = CreateWindow("Button","Open Window 2",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,5,5,150,20,hwnd,(HMENU)BOPEN1,g_hInst,0);
}
break;
case WM_COMMAND:
{
switch(HIWORD(wParam))
{
case BN_CLICKED:
switch(LOWORD(wParam))
{
case BOPEN1:
ShowWindow(other,SW_SHOW);
break;
}
break;
}
}
break;
default: return DefWindowProc(hwnd,msg,wParam,lParam);
}
最后别忘了执行DefWindowProc,把你没有处理的消息全部丢给这个Window 的API。

其他就不说了,关于消息要多看,windows执行一个点击,就会发生很多很多的消息互动,你只要管理你需要管理的这部分。所有的消息都是一个窗体到另一个窗体,屏幕可以看做一个大窗体,windows一向如此,抽象化,然后高度统一。

优质内容筛选与推荐>>
1、以太网控制器ENC28J60编程要点
2、JAVA 中异常的分类
3、C#远程获取图片文件流的方法【很通用】
4、发布mvc遇到的HTTP错误 403.14-Forbidden解决办法
5、数组中常用的属性


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号