win32 控件按钮创建

来源:互联网 发布:禾川plc用什么编程软件 编辑:程序博客网 时间:2024/06/05 01:11

WM_CREATE消息

先定义一个全局变量

HINSTANCE button = 0;
case WM_CREATE:      {          //创建按钮          HWND hButton = CreateWindow(L"Button", L"按钮1", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,              35, 45, 160, 65, hWnd, NULL, button, NULL);      }      return 0;  

响应用户的单击

wParam的低字节位表示ID号,高字节位表示控件通知.

lParam中保存了控件的句柄。

先看一下createwindow介绍

HWND WINAPI CreateWindow(    _In_opt_  LPCTSTR lpClassName,    _In_opt_  LPCTSTR lpWindowName,    _In_      DWORD dwStyle,    _In_      int x,    _In_      int y,    _In_      int nWidth,    _In_      int nHeight,    _In_opt_  HWND hWndParent,    _In_opt_  HMENU hMenu,    _In_opt_  HINSTANCE hInstance,    _In_opt_  LPVOID lpParam  );  

简单地说,控件通常不需要菜单,所以,可以用这个参数来设置控件的ID,反正hMenu闲着也没事干,就给它个ID。ID号是一个整数,不过为了可读性,一般是声明一个宏,其实我们在资源编辑器中使用的资源ID就是在resource.h中定义的宏的.

我们也来模拟一下,在文件的前面(#include…后)也声明三个宏,分别标识三个按钮。

#define IDB_ONE     3333  #define IDB_TWO     3334  #define IDB_THREE   3335  

接着创建三个按钮

case WM_CREATE:    {                      CreateWindow(L"Button", L"按钮一", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,                          35, 10, 120, 60, hWnd, (HMENU)IDB_ONE, button, NULL);                      CreateWindow(L"Button", L"按钮二", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,                          35, 80, 120, 60, hWnd, (HMENU)IDB_TWO, button, NULL);                      CreateWindow(L"Button", L"按钮三", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,                          35, 150, 120, 60, hWnd, (HMENU)IDB_THREE, button, NULL);    }

然后响应WM_COMMAND消息。

case WM_COMMAND:      {          switch(LOWORD(wParam))          {          case IDB_ONE:              MessageBox(hWnd, L"您点击了第一个按钮。", L"提示", MB_OK | MB_ICONINFORMATION);              break;          case IDB_TWO:              MessageBox(hWnd, L"您点击了第二个按钮。", L"提示", MB_OK | MB_ICONINFORMATION);              break;          case IDB_THREE:              MessageBox(hWnd, L"您点击了第三个按钮。", L"提示", MB_OK | MB_ICONINFORMATION);              break;          default:              break;          }      }      return 0;  

当我点击了按钮后,按钮上的文本变成“按钮X已点击”,该怎么做呢?Windows系统是基于消息机制的,所以,首先想到,向控件发送消息,要改变控件相关的文本,应当发送WM_SETTEXT消息。

switch (LOWORD(wParam))        {        case IDB_ONE:            //MessageBox(hwnd, L"您点击了第一个按钮。", L"提示", MB_OK | MB_ICONINFORMATION);              SendMessage((HWND)lParam, WM_SETTEXT, (WPARAM)NULL, (LPARAM)L"第一个按鈕已点击");            break;        case IDB_TWO:            //MessageBox(hwnd, L"您点击了第二个按钮。", L"提示", MB_OK | MB_ICONINFORMATION);              SendMessage((HWND)lParam, WM_SETTEXT, (WPARAM)NULL, (LPARAM)L"第二个按鈕已点击");            break;        case IDB_THREE:            //MessageBox(hwnd, L"您点击了第三个按钮。", L"提示", MB_OK | MB_ICONINFORMATION);              SendMessage((HWND)lParam, WM_SETTEXT, (WPARAM)NULL, (LPARAM)L"第三个按鈕已点击");            break;        default:            break;        }

改编自源于网络笔记

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吃了发霉的面包怎么办 种的韭菜有蛆怎么办 活狗身上长蛆虫怎么办 狗身上会有蛆虫怎么办 狗身上长满了蛆怎么办 房间墙上有很多小虫子怎么办 床上有许多小虫子怎么办? 店里有许多小虫子怎么办 房间潮湿有很多小虫子怎么办 家里潮湿墙上发霉长小虫怎么办? 房间有小飞虫子怎么办 狗被灭虫剂喷了怎么办 吃鸡玩久了手机屏幕很涩怎么办 超东卧室太阳晒怎么办 床头上的布破了怎么办 老年机全静音了怎么办 老年机手机不亮怎么办 70岁老人耳朵聋怎么办 血压太低了头晕怎么办 血压高忽然变低怎么办 血压高眼睛红了怎么办 高血压200降不下去.怎么办 高血压吃药降不下来怎么办 合肥房子卖了户口怎么办 吃了粽子胃难受怎么办 突然血压高怎么办需要吃药吗? 胃一阵阵疼然后拉肚子怎么办 橱子和墙壁不平怎么办 复印选项是英文不认识怎么办 防盗门锁与门框结合不好怎么办 仿瓷涂料墙壁脏了怎么办 油笔画到墙纸上怎么办 水笔画在墙纸上怎么办 屋里有股石灰味怎么办 厨房太阳对着晒怎么办 房子有太阳西斜怎么办 房子晒到太阳很热怎么办 房子被太阳热了怎么办 房间西晒窗帘不遮光怎么办 新建房屋一面墙体有裂缝怎么办 卫生间地砖缝隙出现渗水怎么办