CreadWindow创建控件,设置控件ID,添加消息响应

1、设置控件 ID,资源头文件中,添加一行 --->  #define IDC_控件名     (int)控件ID号;  随便你给定ID号,只要和其他的不重复就好了。

2、HWND h控件句柄 = CreateWindow(控件类名, 控件描述, 控件风格, 左上角坐标X, 左上角坐标Y, 宽, 高, 控件的父句柄, (HMENU)菜单句柄, 应用程序句柄, (lParam)附加信息);

     把  (HMENU)菜单句柄 设定为  (HMENU)控件ID号,就好了,现在 IDC_控件名 是父窗口(句柄) 下面的 一个有名字,有ID标识 的子控件了。

3、添加代码:

  看看 子控件的 消息是怎么被传递的;子控件的ID标识包含在 wParam的低位 LOWORD(wParam) , 该子控件的具体消息内容包含在高位 HIWORD(wParam)

  如以ComboBox控件的视角,当其列表被选择,父窗口将发起一个 sendmessage(父窗口句柄, UINT WM_COMMAND, WPARAM wParam(低位时控件ID,高位是CBN_SELCHANGE), LPARAM ComboBox控件的句柄)

  父窗口的消息处理函数((父窗口句柄, UINT WM_COMMAND, WPARAM wParam(低位时控件ID,高位是CBN_SELCHANGE), LPARAM lParam )

  {

    wmId_LOW = = LOWORD(wParam);

    switch (message)  {

      case WM_COMMAND:

        switch (wmId_LOW) {
          case IDC_控件名:

            switch (wmId_HI) {

              //你可以从 LPARAM 中传递来的 ComboBox控件句柄,对这个控件做些事情了!比如  CBN_SELCHANGE 

              case CBN_SELCHANGE:

                //你可以从 LPARAM 中传递来的 ComboBox控件句柄,对这个控件做些 CBN_SELCHANGE 后事情了!

                break;

            }

          }

      }

  }  

 

  

posted @ 2024-12-06 21:59  O-Y  阅读(31)  评论(0)    收藏  举报