惧留孙网

juliusun.com

惧留孙网 > 在线教程 > WIN32 SDK教程

按钮

  前面讲过弹出窗口和层叠窗口,子窗口一笔带过。从这节起,开始多了解子窗口。子窗口顾名思义,就是属于其它窗口的窗口。子窗口、控件或子窗口控件,是同一个概念,只是叫法不同。从用户操作上讲,称作控件。从窗口上讲,叫子窗口,有时合起来称为子窗口控件。按钮、编辑框、静态框等都是子窗口控件。

  笔者习惯在讲述某部分知识时,尽量屏蔽其它不需要的代码,免得让读者混淆,虽然这样做让运行起来的效果很丑,但是能让人一眼看出所讲知识所产生的效果。

  先认识一个消息:WM_CREATE。当一个窗口创建成功之后,窗口就会收到WM_CREATE消息。

  按钮的窗口类系统已经预定义好,是"button"。我们基于这个窗口类创建窗口即可,在创建时指定窗口类型为子窗口。我们的代码选择在收到WM_CREATE消息时创建按钮。

  我们的代码只要在第9节的基础上,把窗口消息处理函数修改一下就可以了:
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
  switch (uMsg)
   {
   case WM_CREATE:
#define IDB_EXIT 101/*由于多处用到控件ID,所以通过宏定义,便于代码修改,窗口ID须小于65535*/
     CreateWindowEx(0, TEXT("button"), TEXT("退出"), WS_CHILD | WS_VISIBLE, 10, 10, 100, 30, hWnd, (HMENU)IDB_EXIT, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
/*WS_CHILD确定窗口是子窗口类型,WS_VISIBLE表示这个窗口要显示出来,不可省略,子窗口默认隐藏*/
/*第二个参数指定窗口类为按钮。参数10,10,100,30表示相对于你窗口客户端X座标、Y座标、按钮宽度、按钮高度。*/
/*hWnd指定父窗口,此参数是层叠窗口收到的,所以hWnd是层叠窗口句柄*/
/*IDB_EXIT是子窗口ID,同一个父窗口下的子窗口ID必须唯一,顶层窗口没有ID。由于这个参数类型为HEMNU,所以强制转换*/
/*((LPCREATESTRUCT)lParam)->hInstance,WM_CREATE消息的附加信息lParam是结构体CREATESTRUCT指针类型,结构体中含有实例信息,强制转换然后获取实例句柄*/
/*最后一个参数一般为空*/
     break;
   case WM_COMMAND:
     switch (HIWORD(wParam))
     {
     case BN_CLICKED:
       switch (LOWORD(wParam))
       {
       case IDB_EXIT:
         PostMessage(hWnd,WM_CLOSE,0,0);
          break;
       }
       break;
     }
/*当按钮被点击时,会向父窗口发WM_COMMAND消息,wPram高16位为通知码BN_CLICKED,低16位为窗口ID,在创建窗口时指定*/
/*由于本程序假设有多个控件及多种通知,所以用了switch来判断*/
/*PostMessage函数可以向指定的窗口发消息,参数意义分别是窗口句柄、消息、附加消息参数wParam、附加消息参数lParam,我们发送WM_CLOSE关闭窗口,WM_CLOSE的两个附加参数用不到,均传0即可*/
     break;
   case WM_CLOSE:
     DestroyWindow(hWnd);
     break;
   case WM_DESTROY:
     PostQuitMessage(0);
     break;
   default:
     return DefWindowProc(hWnd, uMsg, wParam, lParam);
   }
   return 0;
}

  产生按钮效果如下

按钮

  代码:

UNICODE编码源码地址:12unicode.php
TCHAR编码源码地址:12tchar.php
ANSI编码源码地址:12ansi.php
视频教程

作者QQ:3304576112  交流QQ群:316930386 C语言窗口程序学习群 本教程内容由 juliusun.com 保留版权,请匆复制传播。

上一页  目录  下一页
抖音
©2015-2024 惧留孙网 juliusun.com

京ICP备15039193号-1

首页 教程 下载 文章 聊天 我的