[SDK]-组合框 和 列表框控件

news2025/3/17 6:14:08

前言

  • 各位师傅大家好,我是qmx_07,今天给大家讲解组合框和列表框控件的相关知识
    在这里插入图片描述

组合框

在这里插入图片描述

  • 组合框由一个列表和一个选择字段,该列表显示用户可以选择的选项
    在这里插入图片描述
    创建组合框:
    CreateWindow(L"Combobox",//窗口类名
     L"",//标题
      CBS_DROPDOWN//下拉组合框  
      | CBS_HASSTRINGS//字符串内容样式
       | WS_CHILD //子窗口样式
       | WS_OVERLAPPED //重叠窗口样式
       | WS_VISIBLE,//可见样式
        100, 100, 200, 200, //x y 高 宽
        hWnd,NULL,//父窗口   控件ID
       ((LPCREATESTRUCT)lParam)->hInstance,NULL);//实例句柄 
       

城市下拉框

//控件ID
#define IDC_COMBOBOX_CITY 1
//创建下拉菜单组合框
VOID MyWindows(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	//创建下拉组合框
    HWND hWndCombobox = CreateWindow(L"Combobox", L"", CBS_DROPDOWN | CBS_HASSTRINGS | WS_CHILD | WS_OVERLAPPED | WS_VISIBLE, 100, 100, 200, 200, hWnd, (HMENU)IDC_COMBOBOX_CITY,((LPCREATESTRUCT)lParam)->hInstance,NULL);
    //添加组合框内容
    const WCHAR* szCity[5] = { L"北京",L"上海",L"深圳",L"广州",L"成都" };
    for (size_t i = 0; i < 5; i++)
    {
        SendMessage(hWndCombobox, CB_ADDSTRING, NULL, (LPARAM)szCity[i]);
    }
    //默认选项
    SendMessage(hWndCombobox, CB_SETCURSEL, NULL,NULL);
}

画面演示:
在这里插入图片描述

  • 创建好下拉菜单,还需要 获取内容值
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_CREATE:
    {
        MyWindows(hWnd, message, wParam, lParam);
        break;
    }
    case WM_COMMAND:
        {
        //判断是否是下拉框的选择消息
        if (HIWORD(wParam) == CBN_SELCHANGE)
        {
            //判断想要的下拉框
            if (LOWORD(wParam) == IDC_COMBOBOX_CITY)
            {
                //发送消息获得索引
                int ItemIndex = SendMessage((HWND)lParam, CB_GETCURSEL, NULL, NULL);
                //发送消息获得索引的值
                WCHAR* szCityName = new WCHAR[50];
                SendMessage((HWND)lParam, CB_GETLBTEXT, ItemIndex, (LPARAM)szCityName);
                //弹出值
                MessageBox(hWnd, szCityName, L"Msg", MB_OK);
            }

        }

在这里插入图片描述
画面演示:
在这里插入图片描述

  • 获取组合下拉框的索引,取值到数组里,通过点击弹出消息

列表框控件

在这里插入图片描述
在这里插入图片描述

  • 用户可以从始终可见的列表中显示的一组值中进行选择。 使用单选列表框,用户从互斥值列表中选择一项。 使用多选列表框,用户从值列表中选择零个或多个项
    创建列表框控件:
#include <CommCtrl.h> 导入库文件
VOID MyWindows(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HWND hListBox = CreateWindow(L"SysListView32", L"", WS_CHILD | WS_VISIBLE | LVS_REPORT | WS_BORDER,
        10, 10, 400, 300, hWnd, (HMENU)IDC_LIST, ((LPCREATESTRUCT)lParam)->hInstance, NULL);

    //获取风格
    LRESULT lStyle = SendMessage(hListBox, LVM_GETEXTENDEDLISTVIEWSTYLE, NULL, NULL);
    lStyle |= (LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

    //设置风格
    SendMessage(hListBox, LVM_SETEXTENDEDLISTVIEWSTYLE, NULL, lStyle);

}
  • LVS_REPORT指定列表视图的风格为报表模式,通常用于显示多列数据且带有标题行
  • WS_BORDER为窗口添加边框
  • LVS_EX_FULLROWSELECT 当用户点击列表中的某一项时,整行都会被选中
  • LVS_EX_GRIDLINES表示在列表视图中显示网格线,以便更好地区分不同的项和列
  • 简单来说是: 获取控件的风格,增加风格,设置在列表框里
    在这里插入图片描述

设置列表框标题


    LV_COLUMN lvc = { 0 };/用于描述列表视图(ListView)中的列属性

    lvc.mask |= (LVCF_TEXT | LVCF_WIDTH);//具有宽度和内容属性
    lvc.pszText = new WCHAR[50];

    lvc.cx = 200;//列宽度
    memset(lvc.pszText, 0, 50);
    memcpy(lvc.pszText, L"List1", 12);//将List1存放到lvc.pszText
    SendMessage(hListBox, LVM_INSERTCOLUMN, 0, (LPARAM)&lvc);//发送插入消息给列表框

    memset(lvc.pszText, 0, 50);
    memcpy(lvc.pszText, L"List2", 12);
    ListView_InsertColumn(hListBox, 1, &lvc);//也可以使用这个来增加列

画面演示:
在这里插入图片描述

设置列表框内容

    LVITEM vItem = {0};//用于描述列表视图(ListView)中的项(item)属性
    vItem.mask = LVFIF_TEXT;//具有文本属性
    vItem.pszText = new WCHAR[50];
    for (size_t i = 0; i < 10; i++)
    {
        vItem.iItem = i;//索引位置
        vItem.iSubItem = 0;//第几行
        memset(lvc.pszText, 0, 50);
        swprintf(vItem.pszText, L"list");//将list存放到vItem.pszText
        ListView_InsertItem(hListBox, &vItem);//增加列内容

        vItem.iItem = i;
        vItem.iSubItem = 1;
        memset(lvc.pszText, 0, 50);
        swprintf(vItem.pszText, L"list1");
        ListView_SetItem(hListBox, &vItem);//注意第一次是插入属性,第二次就要变成set
    }

画面演示:
在这里插入图片描述

获取列表框点击内容及删除

    case WM_NOTIFY:
    {
        switch (((LPNMHDR)lParam)->code)
        {
        case NM_CLICK:
        {
            HWND hSWnd = GetDlgItem(hWnd, IDC_LIST);//获取点击的窗口句柄
            DWORD dwltemIndex = ListView_GetSelectionMark(hSWnd);//读取句柄索引
            WCHAR* szBuffer = new WCHAR[50];
            ListView_GetItemText(hSWnd, dwltemIndex, 0, szBuffer,50);//获取索引0位置的文本信息
            MessageBox(hWnd, szBuffer, L"Msg", MB_OK);
            SendMessage(hSWnd, LVM_DELETEITEM, dwltemIndex, NULL);//删除文本
            break;
        }
        default:
            break;
        }
        break;
    }

画面演示:
在这里插入图片描述

总结

  • 今天介绍了组合框和列表框控件,主要描写gui界面 是在 mfc或者qt比较多一点,sdk打基础 主要了解就好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2112527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Python控制Excel应用:打开与关闭工作簿的技术性探讨

目录 引言 一、安装必要的库 1. xlwings 2. openpyxl 二、使用xlwings打开和关闭Excel工作簿 2.1 启动和退出Excel 2.2 打开和关闭工作簿 2.3 创建新工作簿 三、使用openpyxl打开和关闭Excel工作簿 3.1 打开工作簿 3.2 保存和关闭工作簿 四、案例分析 4.1 读取Exc…

linux下的虚拟化

1.下载并且安装 下载客户机和工具 完成之后打开客户机&#xff0c;并且进行安装&#xff1b;安装之后会出现配置软件的界面&#xff0c;我们按照自己的需求进行相关配置即可 这个界面会有我们需要的各种相关设置 在设置自己的超级用户密码以及自己账户及密码之后就完成了虚拟机…

家庭教育系列—投资理财

文章目录 1. 背景介绍2. 趋势容量核心模式3. 一进二模式3. 龙头博弈3.1 空间板博弈3.2 大长腿博弈3.3 反核博弈3.4 龙头反抽博弈 1. 背景介绍 要符合当前市场、顺势而为 打板也好、超短也罢&#xff0c;只是基于市场的形势战略性的选择的一个战术。不管是打板、半路、低吸&…

CAD恢复原始菜单栏

CAD2024菜单栏为ribbon功能区&#xff0c;若想恢复之前菜单栏格式&#xff0c;可采用以下方式&#xff1b;

【机器学习-监督学习】决策树

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…

Spring Boot 多数据源配置(JPA)

目录 前言 前置环境 pom yml Entity Dao Config Controller 演示 前言 一般一个系统至少有一个数据源&#xff0c;用来持久化业务数据以及查询。单个数据源的系统很常见&#xff0c;在 Spring Boot 框架下配置也很简单。在约定大于配置这个思想下&#xff0c;只需要在…

网络视频流解码显示后花屏问题的分析

问题描述 rtp打包的ps视频流发送到客户端后显示花屏。 数据分析过程 1、用tcpdump抓包 tcpdump -i eth0 -vnn -w rtp.pcap 2、用wireshark提取rtp的payload 保存为record.h264文件 3、用vlc播放器播放 显示花屏 4、提取关键帧 用xxd命令将h264文件转为txt文件 xxd -p…

[Xpath] Xpath基础知识

1.Xpath(XML Path Language)介绍 Xpath用于在HTML文档中通过元素(HTML标签)和属性(HTML标签的属性)进行数据定位 Xpath的优势&#xff1a;灵活且稳定 HTML树状结构 HTML的结构是树形结构&#xff0c;HTML是根节点&#xff0c;所有的其他元素节点都是从根节点发出的&#xff0…

Adobe After Effects的插件--------CC Particle World

CC Particle World是一个粒子效果器,用于在三维空间中生成和模拟各种粒子系统,包括火焰、雨、雪、爆炸、烟雾等等。它会自动随时间变化发射粒子。 本文部分参照 https://www.163.com/dy/article/IEJVDN760536FE6V.html 使用条件 使用该插件的图层需是2D图层。 我们新建一个…

图像生成技术飞速发展,个人化艺术创造还有多远?

图像生成技术飞速发展&#xff0c;个人化艺术创造还有多远&#xff1f; 通义万相文本绘图与人像美化希望图像生成类应用具备哪些功能通义万相改进建议 在当今这个创意与科技交织的时代&#xff0c;图像生成技术正以前所未有的速度重塑视觉艺术的边界。不管你是否有艺术细胞&…

递推,CF 353D - Queue

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 353D - Queue 二、解题报告 1、思路分析 手玩一下&#xff0c;我们发现相…

数据结构 - 线性表

0.线性表 1.定义 线性表就是零个或多个相同数据元素的有限序列。 2.线性表的存储结构 ①.顺序结构 ②.链式结构 3.线性表的表示方法 例如&#xff1a; 一.线性表的基本运算 二.线性表的复杂运算 1.线性表的合并运算 2.线性表的去重运算 三.顺序表 1.定义 顺序表&#xff0c;就…

Tensorflow2 如何扩展现有数据集(缩放、随机旋转、水平翻转、平移等),从而提高模型的准确率 -- Tensorflow自学笔记14

实际生活中的数据集&#xff0c;往往不是标准的数据&#xff0c;而是有倾斜角度、有旋转、有偏移的数据&#xff0c;为了提高数据集的真实性&#xff0c;提高模型预测的准确率&#xff0c;可以用ImageDataGenerator函数来扩展数据集 import tensorflow as tffrom tensorflow.k…

单机部署Redis集群

文章目录 Redis集群1.单机安装Redis2.Redis主从集群2.1.集群结构2.2.准备实例和配置2.3.启动2.4.开启主从关系2.5.测试 3.搭建哨兵集群3.1.集群结构3.2.准备实例和配置3.3.启动3.4.测试 4.搭建分片集群4.1.集群结构4.2.准备实例和配置4.3.启动4.4.创建集群4.5.测试 Redis集群 …

[数据集][目标检测]井盖丢失未盖破损检测数据集VOC+YOLO格式2890张5类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2890 标注数量(xml文件个数)&#xff1a;2890 标注数量(txt文件个数)&#xff1a;2890 标注…

基于人工智能的聊天情感分析系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 情感分析是一种自然语言处理任务&#xff0c;旨在识别文本中的情感&#xff0c;如“积极”、“消极”或“中立”。在聊天应用中&#…

Unity制作更换字体的插件

目录 1.前置知识 1.1 EditorWindow 1&#xff09;目的 2&#xff09;使用方式 1.2 OnGUI() 1&#xff09;目的 2&#xff09;使用方式 1.3 AssetDatabase 1&#xff09;目的 2&#xff09;使用方式 1.4 PrefabUtility 1&#xff09;目的 2&#xff09;使用方式 2…

永远学习:为什么人工智能难以适应新挑战

理解深度学习的局限性并追求真正的持续适应 欢迎来到雲闪世界。 “智者适应环境&#xff0c;正如水适应水瓶。”——中国谚语 “适应或灭亡&#xff0c;现在和以往一样&#xff0c;是大自然的必然法则。”——赫伯特乔治威尔斯 近年来&#xff0c;人工智能取得了长足的进步。所…

Android的logcat日志详解

Android log系统 logcat介绍 logcat是android中的一个命令行工具&#xff0c;可以用于得到程序的log信息。下面介绍 adb logcat中的详细参数命令以及如何才能高效的打印日志&#xff0c;或把日志保存到我们指定的位置。 可以输入 adb logcat --help&#xff0c;查看一下一些简…

Xinstall助力App全渠道统计,参数传递下载提升用户体验!

在移动互联网时代&#xff0c;App已成为我们日常生活中不可或缺的一部分。然而&#xff0c;对于App开发者来说&#xff0c;如何有效地推广和运营自己的应用&#xff0c;却是一个不小的挑战。尤其是在面对众多渠道、复杂的数据统计和用户需求多样化的情况下&#xff0c;如何精准…