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
- win32 控件按钮创建
- Win32 控件 -- 按钮
- Win32创建按钮
- win32 创建控件
- 简单win32程序创建控件
- win32中创建webbrowser控件
- win32程序创建按钮并响应点击
- 创建一个位图按钮控件
- vc按钮控件手动创建
- Cocos2d 控件:创建一个按钮
- delphi vcl win32控件的创建说明
- Win32 SDK程序创建一些控件
- Win32 SDK创建RichEdit Control控件
- win32创建控件和提示文本
- win32创建控件的一些问题
- win32创建控件的一些问题
- Win32 SDK创建RichEdit Control控件
- 【win32】day09-对话框/子控件/静态块/按钮/文本编辑框
- Hadoop之——Hbase Shell命令
- armv7 armv64 armv7s x86_64 i386
- Android学习系列(32)--App调试内存泄露之Cursor篇
- Struts2标签库
- iOS5中UIViewController的新方法
- win32 控件按钮创建
- 2015061111 - 学习jar使用
- 5种服务器网络编程模型讲解
- 2-14-1(2) 小玩文件
- 二进制与十进制整数,浮点数相互转换
- oc单例设计模式
- Linux crontab 命令格式与详细例子
- 黑马程序员_92_反射
- return与exit的区别是什么?