当前位置: 首页 > wzjs >正文

网址大全123官方网站一汽奔腾免费找精准客户的app

网址大全123官方网站一汽奔腾,免费找精准客户的app,东莞seo外包推广,郑州做设计公司网站目录 一、控件概述 二、标准控件 三、通用控件 四、控件的创建 五、控件风格 六、控件相关的消息 6.1 控件控制消息 6.2 控件通知消息 一、控件概述 控件是 Windows 系统内置的窗口类,它们只能是某个窗口的子窗口。因此,创建控件时必须使用 WS_C…

目录

一、控件概述

二、标准控件

三、通用控件

四、控件的创建

五、控件风格

六、控件相关的消息

6.1 控件控制消息

6.2 控件通知消息


一、控件概述

        控件是 Windows 系统内置的窗口类,它们只能是某个窗口的子窗口。因此,创建控件时必须使用 `WS_CHILD` 风格。控件的窗口类由系统预先注册,因此我们不需要手动注册窗口类。控件的消息响应函数由 Windows 提供,而不是我们自己编写的。

        控件的行为由其内置的窗口回调函数处理。当控件发生某些行为时(如被点击或需要重绘),它会向其父窗口发送通知消息。

二、标准控件

        标准控件是 Windows 提供的基本控件,使用方式简单。以下是常用的标准控件:

三、通用控件

        通用控件是 Windows 提供的较为复杂的控件,例如树形控件、列表框控件、选项步控件等。以下是常见的通用控件:

四、控件的创建

        控件的创建使用 `CreateWindow` 函数,但不需要手动注册窗口类。通常需要为控件指定 `WS_CHILD` 和 `WS_VISIBLE` 风格。由于子窗口没有菜单,`CreateWindow` 的菜单参数用于指定子窗口的 ID,以区分同一父窗口上的不同控件。
示例代码(标准与通用控件)

#include <windows.h>
#include <string>
#include <commctrl.h> // 公共控件头文件,包含列表视图、树形视图等控件的定义// 链接Common Controls库
#pragma comment(lib, "comctl32.lib")// 窗口过程函数,用于处理窗口消息
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{switch (msg){case WM_CREATE: // 窗口创建时触发{// 创建列表视图控件HWND hListView = CreateWindow(WC_LISTVIEW, // 列表视图的窗口类名L"ListView", // 控件初始文本WS_VISIBLE | WS_CHILD | LVS_REPORT, // 控件风格:可见、子窗口、报表视图10, 10, 300, 150, // 控件位置和大小hwnd, (HMENU)1, // 父窗口句柄和控件ID((LPCREATESTRUCT)lParam)->hInstance, // 应用程序实例句柄NULL);// 添加列到列表视图LVCOLUMN lvColumn;lvColumn.mask = LVCF_TEXT | LVCF_WIDTH; // 设置列属性:文本和宽度lvColumn.cx = 100; // 列宽度lvColumn.pszText = (LPWSTR)L"Column 1"; // 列标题,使用类型转换ListView_InsertColumn(hListView, 0, &lvColumn); // 插入第一列lvColumn.pszText = (LPWSTR)L"Column 2"; // 列标题,使用类型转换ListView_InsertColumn(hListView, 1, &lvColumn); // 插入第二列// 添加项到列表视图LVITEM lvItem;lvItem.mask = LVIF_TEXT; // 设置项属性:文本lvItem.iItem = 0; // 第一行lvItem.iSubItem = 0; // 第一列lvItem.pszText = (LPWSTR)L"Item 1"; // 项文本,使用类型转换ListView_InsertItem(hListView, &lvItem); // 插入项lvItem.iSubItem = 1; // 第二列lvItem.pszText = (LPWSTR)L"SubItem 1"; // 子项文本,使用类型转换ListView_SetItem(hListView, &lvItem); // 设置子项文本// 创建树形视图控件HWND hTreeView = CreateWindow(WC_TREEVIEW, // 树形视图的窗口类名L"TreeView", // 控件初始文本WS_VISIBLE | WS_CHILD | TVS_HASLINES | TVS_HASBUTTONS, // 控件风格:可见、子窗口、带线条和按钮10, 170, 200, 150, // 控件位置和大小hwnd, (HMENU)2, // 父窗口句柄和控件ID((LPCREATESTRUCT)lParam)->hInstance, // 应用程序实例句柄NULL);// 添加根节点TVINSERTSTRUCT tvInsert;tvInsert.hParent = NULL; // 根节点没有父节点tvInsert.hInsertAfter = TVI_LAST; // 插入到末尾tvInsert.item.mask = TVIF_TEXT; // 设置节点属性:文本tvInsert.item.pszText = (LPWSTR)L"Root"; // 根节点文本,使用类型转换HTREEITEM hRoot = TreeView_InsertItem(hTreeView, &tvInsert); // 插入根节点// 添加子节点tvInsert.hParent = hRoot; // 子节点的父节点是根节点tvInsert.item.pszText = (LPWSTR)L"Child"; // 子节点文本,使用类型转换TreeView_InsertItem(hTreeView, &tvInsert); // 插入子节点// 创建选项卡控件HWND hTabControl = CreateWindow(WC_TABCONTROL, // 选项卡控件的窗口类名L"TabControl", // 控件初始文本WS_VISIBLE | WS_CHILD, // 控件风格:可见、子窗口220, 170, 250, 150, // 控件位置和大小hwnd, (HMENU)3, // 父窗口句柄和控件ID((LPCREATESTRUCT)lParam)->hInstance, // 应用程序实例句柄NULL);// 添加选项卡TCITEM tcItem;tcItem.mask = TCIF_TEXT; // 设置选项卡属性:文本tcItem.pszText = (LPWSTR)L"Tab 1"; // 选项卡标题,使用类型转换TabCtrl_InsertItem(hTabControl, 0, &tcItem); // 插入第一个选项卡tcItem.pszText = (LPWSTR)L"Tab 2"; // 选项卡标题,使用类型转换TabCtrl_InsertItem(hTabControl, 1, &tcItem); // 插入第二个选项卡// 创建热键控件HWND hHotKey = CreateWindow(HOTKEY_CLASS, // 热键控件的窗口类名NULL, // 控件初始文本WS_VISIBLE | WS_CHILD, // 控件风格:可见、子窗口10, 330, 200, 30, // 控件位置和大小hwnd, (HMENU)4, // 父窗口句柄和控件ID((LPCREATESTRUCT)lParam)->hInstance, // 应用程序实例句柄NULL);// 创建按钮控件HWND hButton = CreateWindow(L"BUTTON", // 按钮控件的窗口类名L"Click Me", // 按钮文本WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, // 控件风格:可见、子窗口、标准按钮220, 330, 100, 30, // 控件位置和大小hwnd, (HMENU)5, // 父窗口句柄和控件ID((LPCREATESTRUCT)lParam)->hInstance, // 应用程序实例句柄NULL);// 创建编辑框控件HWND hEdit = CreateWindow(L"EDIT", // 编辑框控件的窗口类名L"Type here", // 初始文本WS_VISIBLE | WS_CHILD | ES_AUTOHSCROLL | WS_BORDER, // 控件风格:可见、子窗口、自动水平滚动、带边框330, 330, 150, 30, // 控件位置和大小hwnd, (HMENU)6, // 父窗口句柄和控件ID((LPCREATESTRUCT)lParam)->hInstance, // 应用程序实例句柄NULL);break;}case WM_COMMAND: // 处理控件通知消息{int ctrlID = LOWORD(wParam); // 获取控件IDint notifyCode = HIWORD(wParam); // 获取通知代码// 处理按钮点击事件if (ctrlID == 5 && notifyCode == BN_CLICKED){MessageBox(hwnd, L"Button Clicked!", L"Notification", MB_OK); // 弹出消息框}break;}case WM_DESTROY: // 窗口销毁时触发PostQuitMessage(0); // 退出消息循环break;default:return DefWindowProc(hwnd, msg, wParam, lParam); // 默认消息处理}return 0;
}// 主函数,程序入口
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{// 初始化公共控件库INITCOMMONCONTROLSEX icc;icc.dwSize = sizeof(INITCOMMONCONTROLSEX); // 结构体大小icc.dwICC = ICC_LISTVIEW_CLASSES | ICC_TREEVIEW_CLASSES | ICC_TAB_CLASSES | ICC_HOTKEY_CLASS; // 需要初始化的控件类型InitCommonControlsEx(&icc); // 初始化公共控件// 注册窗口类WNDCLASS wc = { 0 };wc.lpfnWndProc = WndProc; // 窗口过程函数wc.hInstance = hInstance; // 应用程序实例句柄wc.lpszClassName = (LPCWSTR)L"MyWindowClass"; // 窗口类名,使用正确的类型转换if (!RegisterClass(&wc)) // 注册窗口类{MessageBox(NULL, L"Window Registration Failed!", L"Error", MB_ICONEXCLAMATION | MB_OK); // 注册失败时弹出错误消息return 0;}// 创建窗口HWND hwnd = CreateWindow(L"MyWindowClass", // 窗口类名L"Common Controls Example", // 窗口标题WS_OVERLAPPEDWINDOW, // 窗口风格CW_USEDEFAULT, CW_USEDEFAULT, 500, 450, // 窗口位置和大小NULL, NULL, hInstance, NULL); // 父窗口句柄、菜单句柄、应用程序实例句柄、附加数据if (hwnd == NULL) // 窗口创建失败{MessageBox(NULL, L"Window Creation Failed!", L"Error", MB_ICONEXCLAMATION | MB_OK); // 弹出错误消息return 0;}// 显示窗口ShowWindow(hwnd, nCmdShow); // 显示窗口UpdateWindow(hwnd); // 更新窗口// 消息循环MSG msg;while (GetMessage(&msg, NULL, 0, 0)) // 获取消息{TranslateMessage(&msg); // 翻译消息DispatchMessage(&msg); // 分发消息}return msg.wParam; // 返回程序退出码
}

五、控件风格

        每种控件除了通用的窗口风格(以 `WS_` 开头)外,还有自己的特定风格。以下是常见控件风格的前缀:

示例代码:

#include <windows.h>
#include <string>
#include <commctrl.h> // 公共控件头文件,包含列表视图、树形视图等控件的定义// 窗口过程函数
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {switch (msg) {case WM_CREATE: {// 创建按钮控件CreateWindow(L"BUTTON",                     // 按钮类名L"Click Me",                   // 按钮文本WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, // 按钮风格20, 20, 100, 30,             // 位置和大小hwnd,                         // 父窗口句柄(HMENU)1,                     // 控件ID((LPCREATESTRUCT)lParam)->hInstance, // 实例句柄NULL);// 创建编辑框控件CreateWindow(L"EDIT",                       // 编辑框类名L"",                           // 初始文本WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL, // 编辑框风格20, 60, 200, 30,              // 位置和大小hwnd,                         // 父窗口句柄(HMENU)2,                     // 控件ID((LPCREATESTRUCT)lParam)->hInstance, // 实例句柄NULL);// 创建静态文本控件CreateWindow(L"STATIC",                     // 静态文本类名L"Hello, World!",              // 文本内容WS_VISIBLE | WS_CHILD | SS_CENTER, // 静态文本风格20, 100, 200, 30,             // 位置和大小hwnd,                         // 父窗口句柄(HMENU)3,                     // 控件ID((LPCREATESTRUCT)lParam)->hInstance, // 实例句柄NULL);// 创建组合框控件CreateWindow(L"COMBOBOX",                   // 组合框类名L"",                           // 初始文本WS_VISIBLE | WS_CHILD | CBS_DROPDOWN, // 组合框风格20, 140, 200, 100,            // 位置和大小hwnd,                         // 父窗口句柄(HMENU)4,                     // 控件ID((LPCREATESTRUCT)lParam)->hInstance, // 实例句柄NULL);// 创建列表框控件CreateWindow(L"LISTBOX",                    // 列表框类名L"",                           // 初始文本WS_VISIBLE | WS_CHILD | LBS_NOTIFY | WS_BORDER, // 列表框风格20, 180, 200, 100,            // 位置和大小hwnd,                         // 父窗口句柄(HMENU)5,                     // 控件ID((LPCREATESTRUCT)lParam)->hInstance, // 实例句柄NULL);break;}case WM_COMMAND: {// 处理控件事件if (LOWORD(wParam) == 1) { // 按钮点击事件MessageBox(hwnd, L"Button Clicked!", L"Info", MB_OK);}break;}case WM_DESTROY: {PostQuitMessage(0);break;}default:return DefWindowProc(hwnd, msg, wParam, lParam);}return 0;
}// 主函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {// 注册窗口类WNDCLASS wc = { 0 };wc.lpfnWndProc = WndProc;wc.hInstance = hInstance;wc.lpszClassName = L"MyWindowClass";RegisterClass(&wc);// 创建窗口HWND hwnd = CreateWindow(L"MyWindowClass",                      // 窗口类名L"Control Styles Example",             // 窗口标题WS_OVERLAPPEDWINDOW,                  // 窗口风格CW_USEDEFAULT, CW_USEDEFAULT, 300, 400, // 窗口位置和大小NULL, NULL, hInstance, NULL);if (hwnd == NULL) {return 0;}// 显示窗口ShowWindow(hwnd, nCmdShow);UpdateWindow(hwnd);// 消息循环MSG msg;while (GetMessage(&msg, NULL, 0, 0)) {TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;
}

六、控件相关的消息

控件与父窗口的交互通过两种消息实现:
        1. 控件控制消息:用于控制控件行为。
        2. 控件通知消息:用于通知父窗口用户行为。

6.1 控件控制消息

        每种控件除了接收通用窗口消息(以 `WM_` 开头)外,还有自己的专属消息。通过发送这些消息,可以控制控件的行为,而无需关心其内部处理逻辑。

6.2 控件通知消息

        控件通知消息用于子控件向父窗口通知事件,例如子控件被点击或需要重绘。常见的控件通知消息分为两类:
- `WM_COMMAND`:标准控件的通知消息。
- `WM_NOTIFY`:通用控件的通知消息。

示例代码:

#include <windows.h>
#include <string>
#include <commctrl.h> // 公共控件头文件,包含列表视图、树形视图等控件的定义#include <windows.h>// 窗口过程函数
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{switch (msg){case WM_COMMAND:{// 获取控件ID和通知代码int ctrlID = LOWORD(wParam);int notifyCode = HIWORD(wParam);// 处理按钮点击事件if (ctrlID == 1 && notifyCode == BN_CLICKED){MessageBox(hwnd, L"Button Clicked!", L"Notification", MB_OK);}break;}case WM_NOTIFY:{// 获取NMHDR结构体指针NMHDR* pNmHdr = (NMHDR*)lParam;// 处理来自通用控件的通知if (pNmHdr->code == NM_CLICK){MessageBox(hwnd, L"Control Clicked!", L"Notification", MB_OK);}break;}case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd, msg, wParam, lParam);}return 0;
}// 主函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{// 注册窗口类WNDCLASS wc = { 0 };wc.lpfnWndProc = WndProc;wc.hInstance = hInstance;wc.lpszClassName = L"MyWindowClass";if (!RegisterClass(&wc)){MessageBox(NULL, L"Window Registration Failed!", L"Error", MB_ICONEXCLAMATION | MB_OK);return 0;}// 创建窗口HWND hwnd = CreateWindow(L"MyWindowClass", L"My Window", WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, 300, 200,NULL, NULL, hInstance, NULL);if (hwnd == NULL){MessageBox(NULL, L"Window Creation Failed!", L"Error", MB_ICONEXCLAMATION | MB_OK);return 0;}// 创建按钮控件CreateWindow(L"BUTTON", L"Click Me", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,50, 50, 100, 30, hwnd, (HMENU)1, hInstance, NULL);// 显示窗口ShowWindow(hwnd, nCmdShow);UpdateWindow(hwnd);// 消息循环MSG msg;while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;
}

        本节介绍了 Windows 控件的基础知识,包括标准控件、通用控件、控件的创建、风格以及消息处理机制。通过示例代码,展示了如何创建按钮和编辑框,并处理控件通知消息。

http://www.dtcms.com/wzjs/476426.html

相关文章:

  • 在淘宝做网站可以改域名吗网上营销网站
  • php怎么做网站网络营销环境分析
  • 网站建设公司哪家靠谱腰椎间盘突出压迫神经腿疼怎么治
  • 文本编辑器 网站成都门户网站建设
  • 禁忌网站seo快速排名培训
  • 做餐饮系统网站建设关键路径
  • 定制商城网站建设seo网站推广目的
  • 青岛做网站的公司哪家好一点seo日常优化内容是什么
  • 网站备案信息怎么做公司推广宣传文案
  • 重庆网站建设夹夹虫什么公司适合做seo优化
  • 网站开发专业前景seo网站优化培训价格
  • 建政府网站要多少钱河南seo和网络推广
  • 网站建设与网页设计制作书籍sem和seo区别与联系
  • 建设工程人员锁定网站seo和sem的区别
  • java web开发网站开发快速排名方案
  • 网站建设税费微信营销的模式有哪些
  • 贵金属网站源码快排seo软件
  • saas建站和开源建站的区别绍兴seo排名外包
  • 搭建公司介绍网站公司网站制作流程
  • 0531建设网站营销型网站分为哪几种
  • 龙岗网站建设培训安装百度到桌面
  • 网站设计现状网站上做推广
  • 网站切换图片做背景怎么写时事新闻
  • 郑州企业网站建设郑州网站排名优化外包
  • 做软件界面的网站公众号营销
  • 一屏网站模板下载 迅雷下载 迅雷下载地址百度竞价排名模式
  • 微信公众平台官网在哪里打开seo推广有哪些方式
  • 宁波seo外包推广百度工具seo
  • 网站如何查看浏览量游戏代理是怎么赚钱的如何代理游戏
  • 广西鼎汇建设集团有限公司网站郑州网站建设