Windows SDK设置控件支持Tab键

Win32 SDK Gui编程系列之--Win32 API通用控件 根据微软的信息,用CreateStatusWindow函数生成状态栏是古老的方法,现在建议使用CreateWindow函数。生成标签控件时,在窗口样式中添加TCS_HOTTRACK的话,当鼠标出现在标签上时,文字的颜色会发生变化。下图中,鼠标没有硬拷贝,但鼠标是CHF标签上方的状态,文字变成了天蓝色。同样,在窗口样式中添加TCS_BUTTONS的话,标签的形状会变成按钮的形状。只显示标签、控件的程序tabctrl.c和根据按下的标签进行显示的程序tabcontr0l.c和各自的执行结果如下所示。 阅读详情

在使用windows api编程时,若是页面有很多编辑框EDIT,那么,能否支持Tab键将会很影响用户体验。。

我在使用codeblocks写Win32GUI工程时,建立了一个Frame Based的项目,然后进行编程,创建了一堆的Edit控件,代码如下:

Hwnd_EDIT_Set_IP=CreateWindow(TEXT("EDIT"),TEXT(""),WS_CHILD | WS_BORDER|WS_TABSTOP,290,45,
                                  90,20,hwnd,(HMENU)ID_Common,((LPCREATESTRUCT) lParam)->hInstance,NULL);
Hwnd_EDIT_Set_DB=CreateWindow(TEXT("EDIT"),TEXT(""),WS_CHILD | WS_BORDER|WS_TABSTOP,290,75,
                                  90,20,hwnd,(HMENU)ID_Common,((LPCREATESTRUCT) lParam)->hInstance,NULL);
Hwnd_EDIT_Set_User=CreateWindow(TEXT("EDIT"),TEXT(""),WS_CHILD | WS_BORDER|WS_TABSTOP,290,105,
                                    90,20,hwnd,(HMENU)ID_Common,((LPCREATESTRUCT) lParam)->hInstance,NULL);
Hwnd_EDIT_Set_Pass=CreateWindow(TEXT("EDIT"),TEXT(""),WS_CHILD | WS_BORDER|WS_TABSTOP,290,135,
                                    90,20,hwnd,(HMENU)ID_Common,((LPCREATESTRUCT) lParam)->hInstance,NULL);
Hwnd_EDIT_Set_Interval=CreateWindow(TEXT("EDIT"),TEXT(""),WS_CHILD | WS_BORDER|WS_TABSTOP,290,165,
                                        90,20,hwnd,(HMENU)ID_Common,((LPCREATESTRUCT) lParam)->hInstance,NULL);

很明显,为了使控件支持Tab键,在用CreateWindow创建控件时,必须在窗体风格参数dwStyle上指定WS_TABSTOP风格。。。

可是,一旦debug就发现,程序依然不响应Tab键。。。

解决方案:

虽然指定了WS_TABSTOP风格,但是,如果要程序响应Tab键,则必须要操作系统向程序发送Tab键指令啊。。。问题就处在这里了,对于FrameBased应用项目来说(DialogBased没有试过),正常情况下,你的Tab键消息被操作系统给拦截了,所以即使你指定了WS_TABSTOP风格,程序依然不会响应。

为了解决这个问题,需要在WinMain函数中,窗口进入消息循环时添加一句代码,让操作系统不拦截消息。。。代码如下:

while (GetMessage (&messages, NULL, 0, 0))
    {
        if(!IsDialogMessage(hwnd,&messages))//这一句是必要的,必须添加
        {
            /* Translate virtual-key messages into character messages */
            TranslateMessage(&messages);
            /* Send message to WindowProcedure */
            DispatchMessage(&messages);
        }
    }

需要注意的是:上面这样进行操作后,会导致有些消息无法被传入消息处理函数,例如WM_KEYDOWN消息,将直接被操作系统拦截了,导致消息处理函数中关于按键消息的函数响应失败~正确的做法最好如下:

while (GetMessage (&messages, NULL, 0, 0))
    {
        if(!IsDialogMessage(hwnd,&messages))
        {
            /* Translate virtual-key messages into character messages */
            TranslateMessage(&messages);
            /* Send message to WindowProcedure */
            DispatchMessage(&messages);
        }
        else
        {
            TranslateMessage(&messages);
            DispatchMessage(&messages);
        }
    }


UI自动化逆向工程:用Inspect.exe破解达芬奇调色面板的控件秘密 本文详细介绍了如何利用Windows系统自带的Inspect.exe工具对达芬奇调色软件进行UI自动化逆向工程。通过实战演示,指导读者定位并解析界面控件的关键属性(如AutomationId),并基于C#和UI自动化框架编写脚本,实现自动化读取与交互,为开发高效插件和自动化工具提供系统方法。 阅读详情

相关推荐

实现类似360安全卫士的标签控件(TabCtrl)设计

TabCtrl(标签控制器)是图形用户界面(GUI)中用于组织多个页面内容的常用控件,通过标签页的形式实现界面空间的高效利用。它广泛应用于浏览器、系统设置、安全软件(如360安全卫士)等界面中,能够显著提升用户体验和信息导航效率。其核心功能包括标签页的添加、切换、删除等操作,支持内容区域的动态加载与状态管理。在实际开发中,TabCtrl不仅提升了界面的整洁性,也增强了用户交互的流畅性。

weixin_28746457的博客 922

win32下tab控件的使用实现

下面是实现的主要代码: #define C_PAGES 7 //七个tab页面的dialogbox #define DELAYTIME 1000 typedef struct { WORD dlgVer; WORD signature; DWORD helpID; DWORD exStyle; DWORD style; WORD cDlgItems; short x; short y; short cx; short cy; } DLGTEMPLATEEX; typedef struct tag_dlghd

yyn1019的博客 1305

TabUi2012,Windows SDK Tab Control

利用CreateWindowEx创建Tab,风格新颖,界面美观。 编译需要使用vs2010.

例说WIN32 Tab控件使用

今天查找了一天关于SDK下,TAB控件的使用,到处都是C++的,本人还没开始学习C++,所以只能学习SDK方式使用TAB控件,搞了一天终于搞定了 ,现在在这里记录下,以便后来人有需要。 先直接上效果图: 就是当点击本地列表的时候,弹出左图,点击网络收藏的时候弹出右图。 具体实现见下面代码: #include "stdafx.h" #include #include #i

YunShell 7984

使用Tab controls window api 函数实现简单界面

使用Tab controls window api 函数实现简单界面 vc6.0 windows api Tab Control

5G初始注册流程详解(2)-Registration Request

1:了解注册的本质,5G终端为什么要注册? 2:SUCI,SUPI,5G-GUTI的区别? 3:为什么会有COMPLETE REGISTRATION REQUEST呢?

weixin_53220301的博客 3794

Win32 SDK C Tab Control Made Easy

Win32 SDK C Tab Control Made Easy By David MacDermot, 18 Jun 2009    4.57 (24 votes)   Download demo project - 114.79 KB Do

Never too late to study 2933

游戏开发实战:5种AOI算法对比(九宫格 vs 灯塔 vs 十字链表)

本文深入对比了游戏开发中五种主流AOI算法(九宫格、灯塔、十字链表等)的性能与适用场景,帮助开发者根据项目规模选择最优解决方案。通过详细的技术分析和实战数据,揭示不同算法在万人同屏等极端场景下的表现差异,为MMORPG等大型多人在线游戏提供关键性能优化指南。

weixin_29268385的博客 474

win32 SDK开发中TABSTOP问题

如果用 MS All-In-One Code Framework 示例程序模板中Visual Studio 2008-> CppWindowsDialog ,创建属于你自己的基于对话框的Win32程序, 你会发现生成的程序不能用tab在空间之间切换,这是由于示例程序没有对消息进行预处理,把对话框消息从主消息流中分离出来。解决方法如下  1、注释掉InitInstance函数 2

wjt_bc的专栏 1003

海外跨境电商商城源码-进出口电商平台网站-多语言多商户平台

我们的海外跨境电商系统源码还包括各种功能模块,如用户管理、商品管理、订单管理等。支付管理:与主流支付平台(如Stripe、PayPal等)的集成,支持多种支付方式;订单管理:创建订单、支付订单、取消订单等操作,以及订单状态查询和历史记录;购物车管理:添加商品到购物车、查看购物车、修改购物车中的商品数量等操作;商品管理:商品信息录入、编辑、删除等操作,以及商品分类和搜索功能。客服管理:在线咨询、投诉处理等功能,提供更好的用户服务。用户管理:注册、登录、忘记密码、个人资料。# 检查电子邮件地址是否有效。

柏诣科技的博客 2658

python实现马丁策略(股市) (附完整源码)

python实现马丁策略(股市) (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 603

在SDK中使用Rich Edit控件,以及使用LISTVIEW,PROGRESS等控件

  在SDK,进行windows程序设计(不使用mfc),使用这些控件,要进行一些必要的初试化,否则如果在对话框上画这些控件,对话框就不能正常显示 先说Rich Edit控件,这个是个特例。  如果往对话框里添加了一个Rich Edit控件,然后运行程序.理应弹出对话框,但是没有弹出.如果把Rich Edit 控件去掉,再运行.对话框就可以弹出。  如果在mfc下进行开发,那么只要程序

毛毛(handsomerun)的专栏 4163

知识图谱开发实战:搭建上市公司知识图谱(二)

搭建上市公司知识图谱(二)学习目标1. 获取上市公司公开数据1.1 获取上市公司列表与行业信息1.2 代码展示2. 从网站爬取上市公司网页并存储为 HTML文件2.1 准备环境2.2 爬取上市公司公开信息3. 解析HTML文件,获取高管信息并存储为 csv 文件4. 设计知识图谱数据库4.1 实体4.2 关系4.3 属性4.4 特殊4.5 代码5. 知识图谱数据库查询实战5.1 实战:按照neo4j的数据格式,转换CSV文件5.2 实战:使用neo4j-admin 导入数据5.3 实战:使用neo4j-b

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 2094

Windows图形界面(GUI)-SDK-C/C++ - 编辑框(edit)

公开视频 ->链接点击跳转公开课程 博客首页 ->链接点击跳转博客主页 编辑框(edit) 控件样式 编辑框(Edit Control)是Windows中最常用的控件之一,用于接收用户输入的文本信息。编辑框可以设置为单行或多行,支持多种文本格式和输入限制。 风格样式 WS_CHILD:子窗口样式。 WS_VISIBLE:控件创建时可见。 WS_BORDER:控件周围有边框。 WS_TABSTOP:用户可以使用Tab键切换到此控件。 控件样式 ES_AUTOH

0xCC说逆向 981

openharmony之UniProton内核技术揭秘:鸿蒙面向工业控制领域的RTOS设计之道

UniProton是鸿蒙操作系统面向工业控制领域的轻量级实时操作系统(RTOS),专为资源受限的嵌入式设备设计。作为鸿蒙生态的重要组成部分,UniProton提供了高效的实时任务调度、内存管理和IPC机制,满足工业控制场景对实时性和可靠性的严格要求。想象一下,UniProton就像一个超级聪明的管家,管理着电子设备里所有的工作。让你的智能手表既能显示时间,又能接收消息让家里的扫地机器人既能避开障碍物,又能记住哪里已经打扫过了让工厂里的机器人手臂既能精确地抓取东西,又能快速地完成任务实时性强。

m0_67505153的博客 883

字符串尾部空格的迷思:深入解析 ABAP 隐式转换规则与 `strlen` 意外结果

看似简单的strlen之谜,背后实则是 ABAP 隐式转换的一整套严谨规则。只要开发者在赋值、输出、接口映射等关键节点建立“尾部空格意识”,辅以CONVCONDENSE等显式手段,就能有效杜绝多余空格引发的链式故障。希望本文的拆解与案例,能让你在面对下一个“异常长度”时,从容而笃定地给出正确答案。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 431

终极WinUI 3完整指南:三步构建现代化Windows应用界面

你是否曾为Windows应用的界面设计而烦恼?想要创建流畅、现代的应用程序,却苦于缺乏合适的UI框架?Microsoft.UI.Xaml(WinUI)正是为你量身打造的解决方案!作为Windows App SDK的核心UI框架,WinUI 3提供了丰富的控件和Fluent设计系统,让你能够轻松构建与Windows 11完美融合的现代化应用。无论你是初学者还是经验丰富的开发者,这篇文章将带你从零开始

gitblog_01092的博客 485

22、计算智能在自闭症检测与管理中的应用

本文探讨了计算智能在自闭症谱系障碍(ASD)检测与管理中的应用。在检测方面,结合可穿戴设备、传感技术与多模态数据(如眼动追踪、问卷、神经成像等),利用机器学习和深度学习算法提升诊断准确性,并介绍了多种公开数据集及研究方法。在管理方面,通过生理指标(HRV、GSR、呼吸频率)监测情绪状态,结合智能可穿戴设备与支持性应用平台(如LetMeTalk、MITA、Rethink Ed等),实现对ASD患者的实时干预与个性化支持。文章还展示了多模态筛查与管理流程的系统架构,强调未来技术整合与个性化服务的发展方向。

star的博客 91

C++/SDK界面开发总结

对于不习惯用MFC的程序员来说,写界面应该是一个头疼的事情了。调用duilib等开源界面库的不讨论,本文主要说说Windows的原生界面功能开发,作为一篇总结,帮助新手入门。 1、窗口 主要通过新建资源窗口实现布局,调用就通过 DialogBox 和 CreateDialog 实现界面的显示。其中 DialogBox 为模态窗口, CreateDialog 为非模态窗口,简要说说区别: 模态

fawdlstty的博客 3097

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

WinUI控件库完全指南:60+原生组件快速打造专业级Windows应用界面

还在为Windows应用界面设计而烦恼吗?想要让你的应用拥有与Windows 11系统一致的现代视觉体验吗?Microsoft.UI.Xaml(WinUI)控件库为你提供了完整的解决方案!这个强大的原生UI框架包含60多种专业控件,从基础按钮到复杂导航视图,一站式满足所有界面开发需求。本文将为你揭秘WinUI控件库的核心技巧,让你快速掌握如何构建现代化、高性能的Windows应用界面。 ## 为

gitblog_00634的博客 995

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

WinUI 3开发实战:构建现代化Windows原生应用的高效框架

想要为Windows 10和Windows 11打造高性能、现代化的桌面应用程序吗?Microsoft.UI.Xaml(WinUI)正是您需要的原生UI解决方案!作为微软最新的Windows UI框架,WinUI 3提供了完整的Fluent Design控件库和现代化的开发体验,让您的应用与Windows操作系统无缝集成。 --- ## 🚀 WinUI 3核心优势:为什么选择原生框架? *

gitblog_00078的博客 766

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Windows编程简介

目录 Windows编程开发相关概念 相关控件 Windows编程开发相关概念 Windows API:Windows操作系统应用程序接口(Windows API),有非正式的简称法为WinAPI,是微软对于Windows操作系统中可用的核心应用程序编程接口的称法。它被设计为各种语言的程序调用,也是应用软件与Windows系统最直接的交互方式。大多数驱动程序需要对Windows系统更底层次访问接口,由所用版本的Windows的Native API来提供接口。 Windows有一个软件开发包(SDK

coder_Alger 的博客 3336

KeySteer 0.9.1:基于Windows OCR的GUI自动化新思路,解决非标控件定位难题

GUI自动化是软件测试和流程自动化的关键技术,其核心在于对界面元素的精准定位与操作。传统方法依赖于可访问性树或控件句柄,但在面对老旧应用、游戏界面或虚拟机环境时,这些方法往往失效。KeySteer 0.9.1 创新性地利用了Windows系统自带的OCR引擎,将屏幕上的可视文字作为交互锚点,实现了原理上的突破。该工具通过调用Windows原生API,将视觉识别与指针控制进行系统级、低延迟的绑定,其技术价值在于为自动化测试和辅助操作提供了全新的解决方案。在应用场景上,它特别适用于处理大量非标界面、进行跨语言界

weixin_33991418的博客 436

C++学习笔记控件1——介绍

Windows程序分类 exe的可执行程序 控制台类型的程序: 入口点函数是 main。使用系统提供的cmd控制台进行加载。 非控制台类型的程序: 入口点函数是 WinMain。 dll的动态链接库程序 lib的静态库程序 sys的驱动类型程序 Windows API:Windows操作系统应用程序接口(Windows API)被设计为各种语言的程序调用,也是应用软件与Windows系统最直接的交互方式。 大多数驱动程序需要对Windows系统更底层次访问接口,由所用版本的Windows的Native

weixin_44567900的博客 644

Windows程序逆向必备:用Spy++和C#快速定位控件句柄的5种方法

本文详细介绍了在Windows程序逆向中,使用Spy++和C#快速定位控件句柄的5种高效方法,包括Spy++工具链的深度应用、动态控件句柄获取策略、隐藏窗口的探测技术、跨进程句柄操作的安全实践以及自动化测试框架集成。这些技巧特别适用于处理混淆窗口标题、动态控件和隐藏窗口等复杂场景,帮助开发者和逆向工程师提升工作效率。

weixin_30772105的博客 233

Python自动化利器Pywinauto:从原理到实战的Windows GUI自动化指南

GUI自动化是软件自动化测试和机器人流程自动化(RPA)的核心技术之一,它通过程序模拟用户对图形界面的操作,如点击、输入和读取,从而替代重复性人工劳动。其原理主要基于操作系统提供的UI自动化框架,例如Windows平台的Microsoft UI Automation和Win32 API,这些框架允许程序以标准化方式访问和操控界面元素。在技术价值上,GUI自动化能显著提升测试效率、保障软件质量,并实现业务流程的自动化,是数字化转型中降本增效的关键工具。应用场景广泛覆盖自动化测试、日常办公自动化、数据采集以及软

weixin_30267785的博客 351
上一篇: Cuda实现Radon变换
下一篇: Windows SDK实现不规则窗体
celte
博客等级 码龄15年 40粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值