【转】Win32子窗口控件(按钮、编辑框、静态框、滚动条等)!!

前言:
子窗口控件是特殊的子窗口,不需要我们注册窗口类,系统已经注册好了,我们只需要在创建时选择相应的窗口类名。常用的子窗口控件有按钮BUTTON组合框COMBOBOX编辑框EDIT列表框LISTBOX静态框STATIC滚动条SCROLLBAR等类型。消息为WM_COMMAND/WM_CTLCOLORBTN

  • 启用/禁用窗口: EnableWindow
  • 设置指定窗口的显示状态: ShowWindow
  • 指定的窗口设置键盘焦点: SetFocus

在这里插入图片描述

一、按钮(BUTTON)

窗口类名:"button"

1. 按钮样式

风格说明风格说明
BS_PUSHBUTTON下压式按钮BS_DEFPUSHBUTTON下默认普通按钮,具有较黑的边框
BS_CHECKBOX L复选框BS_AUTOCHECKBOX复选框,自动维护状态
BS_RADIOBUTTON圆形单选按钮BS_AUTORADIOBUTTON单选框,自动维护状态
BS_3STATE三态复选按钮,选中,未选中,未定BS_AUTO3STATE检查框,按钮的状态会自动改变
BS_GROUPBOX分组框BS_OWNERDRAW可创建一个拥有者自绘按钮
BS_LEFTTEXT左对齐文字  

注意:
1.灰色是向使用者表示此框不能被选本章的或者禁止使用
2.单选按钮是互斥的,只能选择其中一项;而复选框没有限制,可以选择一项或多项。
3.单选按钮一般是分组的,一组单选按钮之间是互斥的,只能选择其中一个。一个窗口可以包含多组单选按钮。(通过WS_GROOUP进行分组,在创建按钮时,加入WS_GROOUP的按钮为组长,后面接着的都为此组,知道下一个WS_GROOUP出现)。
4.单选按钮的父窗口为分组框控件 hGroupSex,而不是顶级窗口 hWnd。

2. 按钮消息:WM_COMMAND

消息参数: wParam 和 lParam

说明
LOWORD(wParam)按钮的ID
HIWORD(wParam)通知码BN_
(HWND)lParam子窗口按钮句柄

3. 补充

1.创建单选按钮:

button1=CreateWindow(TEXT("button"), TEXT("男"), WS_GROUP|WS_CHILD | >WS_VISIBLE|BS_AUTORADIOBUTTON,350,150,50,20,hwnd, (HMENU)1, ((LPCREATESTRUCT)lParam)->hInstance, NULL);

2.创建一个位图按钮:

HBITMAP bmp = (HBITMAP)LoadBitmap(((LPCREATESTRUCT)lParam)->hInstance, MAKEINTRESOURCEW(IDB_BITMAP5));
button2=CreateWindow(TEXT("button"), NULL, WS_CHILD | WS_VISIBLE|BS_BITMAP,300, 300, 240,120,hwnd, (HMENU)2, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
SendMessage(button2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)bmp);

3.修改按钮文本:

SetWindowText(button1,TEXT("设置文本为:自由自在!"));

4.隐藏按钮、显示按钮、禁用按钮、启用按钮:

ShowWindow(button,SW_HIDE);    // 隐藏按钮
ShowWindow(button,SW_SHOW);    // 显示按钮
EnableWindow(button,TRUE);     // 启用按钮
EnableWindow(button,FALSE);    // 禁用按钮

5.设置焦点:

SetFocus(hwnd);

二、静态框(STATIC)

主要用于显示文本、图片。
窗口类名:"static"

1.静态框种类

说明说明
SS_CENTER字符居中显示SS_LEFT字符左对齐
SS_LEFTNOWORADWRAP字符左对齐,超过末尾字符被裁剪SS_BLACKRECT用窗口边框色填充的矩形
SS_BLSCKFRAME矩形边框,与窗口边框同色SS_GRAYRECT用屏幕背景色填充的矩行
SS_GRAYFRAME矩形边框,使用屏幕背景色SS_WHITERECT用窗口背景色填充的矩行
SS_RIGHT字符右对齐SS_WHITEFRAME矩形边框,使用窗口背景色

静态框不发送消息

2.补充

1.创建文本静态框:

static1=CreateWindow(TEXT("static"), TEXT("性别:"), WS_CHILD|WS_VISIBLE,300,150,50,20,hwnd, (HMENU)12, ((LPCREATESTRUCT)lParam)->hInstance, NULL);

2.创建位图静态框:

HBITMAP bmp = (HBITMAP)LoadBitmap(((LPCREATESTRUCT)lParam)->hInstance, MAKEINTRESOURCEW(IDB_BITMAP5));
static2=CreateWindow(TEXT("static"), NULL, WS_CHILD|WS_VISIBLE|SS_BITMAP,300,150,50,20,hwnd, (HMENU)13, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
SendMessage(static2, STM_SETIMAGE , IMAGE_BITMAP, (LPARAM)bmp);

3.修改静态框文本:

SetWindowText(static1,TEXT("设置文本为:自由自在!"));

4.隐藏静态框、显示静态框、禁用静态框、启用静态框:

ShowWindow(static1,SW_HIDE);    // 隐藏静态框
ShowWindow(static1,SW_SHOW);    // 显示静态框
EnableWindow(static1,TRUE);     // 启用静态框
EnableWindow(static1,FALSE);    // 禁用静态框

三、编辑框(EDIT)

窗口类别:"edit"

1.窗口风格

说明说明
ES_LEFT左对齐ES_CENTER居中
ES_RIGHT右对齐ES_MULTILINE多行
ES_UPPERCASE把用户输入的字母统统转换成大写字母ES_LOWERCASE把用户输入的字母统统转换成小写字母
ES_PASSWORD显示密码ES_AUTOVSCROLL垂直自滚
ES_AUTOHSCROLL水平自滚ES_NOHIDESEL当编辑失去焦点时隐藏对字符的选定,重新获得焦点后以反色显示选中内容
ES_OEMCONVERT将ANSI字符转化为OEM字符ES_READONLY只读
ES_WANTRETURN使多行编辑器接收回车键输入并换行ES_NUMBER只能显示数字

ES_WANTRETURN使多行编辑器接收回车键输入并换行如果不指定该风格,按回车键会选择缺省的命令按钮,这往往会导致对话框的关闭。

2. 编辑框消息:WM_COMMAND

消息参数: wParam 和 lParam

说明
LOWORD(wParam)按钮的ID
HIWORD(wParam)通知码BN_
(HWND)lParam子窗口按钮句柄

在这里插入图片描述

3. 补充

1.创建编辑框控件

CreateWindow(TEXT("edit"), TEXT("请输入文本:"), WS_CHILD|WS_VISIBLE| ES_MULTILINE,0,0,100,500,hwnd, (HMENU)0, ((LPCREATESTRUCT)lParam)->hInstance, NULL);

2.获得行数

y=SendMessage(hwndedit,EM_ GETLINECOUNT,0,0);  // 获得行数

3.获取输入框的数据

GetWindowText(hwndedit, szUsername, 100);  // 获取输入框的数据

四、其他控件样式

旋转按钮控件

说明
UDS_HORZ指定一个水平旋转按钮.若不指定该风格则创建一个垂直的旋转按钮.
UDS_WRAP当旋转按钮增大到超过最大值时,自动重置为最小值,当减小至低于最小值时,自动重置为最大值.
UDS_ARROWKEYS当用户按下向下或向上箭头键时,旋转按钮值递增或递减.
UDS_SETBUDDYINT旋转按钮将自动更新伙伴控件中显示的数值,如果伙伴控件能接受输入,则可在伙伴控件中输入新的旋转按钮值.
UDS_NOTHOUSANDS伙伴控件中显示的数值每隔三位没有千位分隔符.
UDS_AUTOBUDDY自动使旋转按钮拥有一个伙伴控件.
UDS_ALIGNRIGHT旋转按钮在伙伴控件的右侧.
UDS_ALIGNLEFT旋转按钮在伙伴控件的左侧.

轨道条控件

说明
TBS_HORZ指定一个水平轨道条.该风格是默认的.
TBS_VERT指定一个垂直轨道条.
TBS_AUTOTICKS在范围设定后,自动为轨道条加上刻度.
TBS_NOTICKS轨道条无刻度.
TBS_BOTTOM在水平轨道条的底部显示刻度,可与TBS_TOP一起使用.
TBS_TOP在水平轨道条的顶部显示刻度,可与TBS_BOTTOM一起使用.
TBS_RIGHT在垂直轨道条的右侧显示刻度,可与TBS_LEFT一起使用.
TBS_LEFT在垂直轨道条的左侧显示刻度,可与TBS_RIGHT一起使用.
TBS_BOTH在轨道条的上下部或左右两侧都显示刻度.
TBS_ENABLESELRANGE在轨道条中显示一个选择范围.

列表框风格

说明
LBS_STANDARD创建一个具有边界和垂直滚动条、当选择发生变化或条目被双击时能够通知父窗口的标准列表框。所有条目按字母排序。
LBS_SORT按字母排序。
LBS_NOSEL条目可视但不可选。
LBS_NOTIFY当用户选择或双击一个串时,发出消息通知父窗口。
LBS_DISABLENOSCROLL在条目不多时依然显示并不起作用的滚动条。
LBS_MULTIPLESEL 
LBS_EXTENDEDSEL可用SHIFT和鼠标或指定键组合来选择多个条目。
LBS_MULTICOLUMN允许多列显示。
LBS_OWNERDRAWVARIABLE创建一个拥有者画列表框,条目高度可以不同。
LBS_OWNERDRAWFIXED创建一个具有相同条目高度的拥有者画列表框。
LBS_USETABSTOPS允许使用TAB制表符。
LBS_NOREDRAW当条目被增删后不自动更新列表显示。
LBS_HASSTRINGS记忆了添加到列表中的字串。
LBS_WANTKEYBOARDINPUT当有键按下时向父窗口发送WM_VKEYTOITEM或WM_CHARTOITEM消息。
LBS_NOINTEGRALHEIGHT按程序设定尺寸创建列表框。

组合框风格

说明
CBS_AUTOHSCROLL当在行尾输入字符时自动将编辑框中的文字向右滚动。
CBS_DROPDOWN同CBS_SIMPLE风格类似,只是只有在用户点击下拉图标时才会显示出下拉列表。
CBS_DROPDOWNLIST同CBS_DROPDOWN类似,只是显示当前选项的编辑框为一静态框所代替。
CBS_HASSTRINGS创建一个包含了由字串组成的项目的拥有者画组合框。
CBS_OEMCONVERT将组合框中的ANSI字串转化为OEM字符。
CBS_OWNERDRAWFIXED由下拉列表框的拥有者负责对内容的绘制;列表框中各项目高度相同。
CBS_OWNERDRAWVARIABLE由下拉列表框的拥有者负责对内容的绘制;列表框中各项目高度可以不同。
CBS_SIMPLE下拉列表始终显示。
CBS_SORT自动对下拉列表中的项目进行排序。
CBS_DISABLENOSCROLL当下拉列表显示内容过少时显示垂直滚动条。
CBS_NOINTEGRALHEIGHT在创建控件时以指定的大小来精确设定组合框尺寸。

树形视图控件

说明
TVS_HASLINES在父项与子项间连线以清楚地显示结构.
TVS_LINESATROOT只在根部画线.
TVS_HASBUTTONS显示带有"+"或"-"的小方框来表示某项能否被展开或已展开.
TVS_EDITLABELS用户可以编辑表项的标题.
TVS_SHOWSELALWAYS即使控件失去输入焦点,仍显示出项的选择状态.
TVS_DISABLEDRAGDROP不支持拖动操作.

列表视图控件

说明
LVS_ALIGNLEFT当显示格式是大图标或小图标时,标题放在图标的左边.缺省情况下标题放在图标的下面.
LVS_ALIGNTOP当显示格式是大图标或小图标时,标题放在图标的上边.
LVS_AUTOARRANGE当显示格式是大图标或小图标时,自动排列控件中的表项.
LVS_EDITLABELS用户可以修改标题.
LVS_ICON指定大图标显示格式.
LVS_LIST指定列表显示格式.
LVS_NOCOLUMNHEADER在报告格式中不显示列的表头.
LVS_NOLABELWRAP当显示格式是大图标时,使标题单行显示.缺省时是多行显示.
LVS_NOSCROLL列表视图无滚动条.
LVS_NOSORTHEADER报告列表视图的表头不能作为排序按钮使用.
LVS_OWNERDRAWFIXED由控件的拥有者负责绘制表项.
LVS_REPORT指定报告 显示格式.
LVS_SHAREIMAGELISTS使列表视图共享图像序列.
LVS_SHOWSELALWAYS即使控件失去输入焦点,仍显示出项的选择状态.
LVS_SINGLESEL指定一个单选择列表视图.缺省时可以多项选择.
LVS_SMALLICON指定小图标显示格式.
LVS_SORTASCENDING按升序排列表项.
LVS_SORTDESCENDING按降序排列表项.

控件样式参考列表

说明
DS_ABSALIGN对话框的坐标为屏幕坐标(缺省为客户区坐标)
DS_SYSMODAL系统模式(仅支持16位程序),不能与DS_CONTROL同用
DS_LOCALEDIT在对话框内部为编辑框分配内存(仅支持16位程序)
DS_SETFONT可定制对话框字体
DS_MODALFRAME框架样式(不能与WS_CAPTION同用)
DS_NOIDLEMSG无空闲消息
DS_SETFOREGROUND使对话框在最前面显示
DS_3DLOOK四周有3维边框
DS_FIXEDSYS使用系统固定字体
DS_NOFAILCREATE忽略创建过程中的错误
DS_CONTROL控件模式,可作为其他对话框的子窗口
DS_CENTER在屏幕居中
DS_CENTERMOUSE在鼠标位置居中
DS_CONTEXTHELP有上下文帮助按钮

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

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

相关文章

在PC上用模拟器搭建Windows Mobile仿真环境:Microsoft Device Emulator使用

因为工作需要,体验了一下微软的移动设备模拟器Device Emulator 3.0。在此把一些使用体验写出来和大家交流一下,在自己摸索过程中从网上找了很多资料参考,希望大家再做这个的时候少走一些弯路%^) 在PC上用模拟器搭建Windows Mobile仿真环境&am…

【转】QT布局QGridLayout QHBoxLayout QVBoxLayout简要分析!!

转自:https://blog.csdn.net/sabcdefg/article/details/106693203 在分析之前,先吐槽下M$的MFC,竟然没有相对布局!(至少我不知道,每次都是使用代码控制布局), M$这么多年,也不发展一下,你看C#都有相对布局... 参考精通Qt4编程(第2版),先看看…

php下拉选项登录_php下拉选项的批量操作的实现代码

实现功能&#xff0c;操作项可以单独删除&#xff0c;批量项可以批量删除&#xff0c;批量显示&#xff0c;隐藏(改广告的数据库的status_is的值)&#xff1b;1.视图关键点&#xff1a;<?php echo $row->id?>全选选择操作删除显示隐藏/*单个删除*/2.控制器&#xff…

协议栈开发学习总结

近来一直很少些关于技术方面的文章&#xff0c;一来是被工作和生活所累&#xff0c;没有很多闲暇多余的时间,二来呢是觉得一直没有好的case&#xff0c;或则有好的case&#xff0c;但觉得目前在这个case方面&#xff0c;自己还不算很professional。今天心情不错&#xff0c;感觉…

【转】QGridLayout 详解

转自&#xff1a;https://blog.csdn.net/u013928315/article/details/78123573 一、QGridLayout属性介绍 1、QGridlayout以方格的形式管理窗口部件&#xff0c;先看QGridLayout的属性&#xff0c;如下图 2、各个参数的介绍 layoutLeftMargin ...至layoutBottomMargin在ui_Mai…

java import 出错,Eclipse的java代码出错:The import XXXX cannot be resolved

折腾Eclipse时&#xff0c;经常会遇到这种情况&#xff1a;缺少某个库&#xff0c;找到之后&#xff0c;需要将该库&#xff0c;jar包&#xff0c;加入到当前项目&#xff0c;使得代码中的import xxx得以正常导入。【如何在Eclipse中导入/添加(外部的)库/jar包】基本思路&#…

WCF从理论到实践(14):WCF解决方案模板 (转)

WCF从理论到实践(14):WCF解决方案模板 正所谓磨刀不误砍柴工,虽然VS2008为我们提供了WCFServiceLibrary项目模板,但在实际开发的时候,我们通常更喜欢按照自己的方式来建立WCF项目,通常情况下,我们将服务契约(通常是接口)数据契约,消息契约等契约单独作为一个项目,而将服务的实现…

thinkphp index.php隐藏,thinkphp5怎么隐藏index.php入口文件?

隐藏方法&#xff1a;1、打开apache的http.conf配置文件&#xff0c;开启mod_rewrite.so模块&#xff1b;2、AllowOverride None项中将None改为All&#xff1b;3、修改“.htaccess”的配置内容&#xff0c;将原代码替换为官方手册提供的代码。thinkphp现在的php主流框架之一&am…

【转】extern “C“和__declspec(dllexport)以及__declspec(dllimport) 和def的简单解析

转自&#xff1a;https://blog.csdn.net/xupan_jsj/article/details/9028759 前面的extern "C" __declspec(dllexport) __declspec(dllimport)都是用于函数或者变量&#xff0c;甚至类的声明的&#xff08;可以把extern "C"放在class的前面&#xff0c;…

【转】extern “C“以及__declspec(dllexport) 讲解和def文件dll导出方法

转自&#xff1a;https://blog.csdn.net/qing666888/article/details/41135245 一&#xff0c;__ declspec&#xff08;dllexport&#xff09;&#xff1a; 将一个函数声名为导出函数&#xff0c;就是说这个函数要被其他程序调用&#xff0c;即作为DLL的一个对外函数接口。通常…

【转】DICOM医学图像处理:浅析SWF、MWL、SPS、MPPS

转自&#xff1a;https://blog.csdn.net/zssureqh/article/details/40151107 背景&#xff1a; 最近重新花时间阅读了DICOM标准&#xff0c;顺带着看了一下HL7标准和IHE&#xff0c;对标题中提到的SWF、MWL、SPS和MPPS有了更进一步的认识&#xff0c;现将自己的理解整理出来&a…

Php点击更换封面,JavaScript_js实现点击图片改变页面背景图的方法,本文实例讲述了js实现点击图 - phpStudy...

js实现点击图片改变页面背景图的方法本文实例讲述了js实现点击图片改变页面背景图的方法。分享给大家供大家参考。具体实现方法如下&#xff1a;点击图片即改变页面的背景图片希望本文所述对大家的javascript程序设计有所帮助。相关阅读:C语言编程中统计输入的行数以及单词个数…

串口通讯基础及S3C2410 UART控制器

数据通信的基本方式可分为并行通信与串行通信两种&#xff1a; 并行通信&#xff1a;是指利用多条数据传输线将一个资料的各位同时传送。它的特点是传输速度快&#xff0c;适用于短距离通信&#xff0c;但要求通讯速率较高的应用场合。 串行通信&#xff1a;是指利用一条传输线…

几个实用的Servlet应用例子-入门、cookie、session及上传文件

1Servlet可以被认为是服务端的applet&#xff0c;它被WEB服务器加载和执行&#xff0c;前端可以显示页面和获得页面数据&#xff0c;后台可以操纵数据库&#xff0c;能完成JavaBean的很多功能。在这里我较为详细的说说Servlet在Cookie&#xff0c;Session和上传文件上的应用&am…

【转】DICOM医学图像处理:DIMSE消息发送与接收“大同小异”之DCMTK fo-dicom mDCM

转自&#xff1a;https://my.oschina.net/zssure/blog/354816 背景&#xff1a; 从DICOM网络传输一文开始&#xff0c;相继介绍了C-ECHO、C-FIND、C-STORE、C-MOVE等DIMSE-C服务的简单实现&#xff0c;博文中的代码给出的实例都是基于fo-dicom库来实现的&#xff0c;原因只有一…

公司间交易学习笔记---概述

本系列笔记是我在学习公司间交易的过程中的随笔&#xff0c;有些是我自己的想法&#xff0c;内容可能跟教程有所出入&#xff0c;由于对AX的应用部分理解得很浅&#xff0c;所以如果错误还请多多指教。 为了处理集团公司中各个分公司之间的交易&#xff0c;AX采用了InterCompan…

用VS2005开发WinCE程序调试图文教程

一、WinCE 模拟器通过ActiveSync 6.1(即Windows Mobile设备中心)连接PC ActiveSync 6.1&#xff1a;http://www.cr173.com/soft/26994.html 1.启动WinCE模拟器 命令行&#xff1a; start .\DeviceEmulator.exe WINCE镜像\Wince5.bin /memsize 256 /video 480x272x16 /sharedf…

【转】 ADO.NET最佳实践

本文转自&#xff1a;http://blog.csdn.net/spidertan/archive/2003/12/13/17110.aspx 概述&#xff1a; 本文在微软站点资源的基础上加工整理而成&#xff0c;意在介绍在你的ADO.NET应用程序中执行和完成性能优化、稳定性和功能性方面提供最佳的解决方案&#xff1b;同…

php 变量文件间传递,同一文件的两个JS函数之间如何传变量?

满意答案ed_ch2013.11.06采纳率&#xff1a;44% 等级&#xff1a;12已帮助&#xff1a;8801人定义成全局变量就可以了var style_key;function change_mystyle(my){style_keymy.options[my.selectedIndex].value;if(style_key 114la){document.getElementById(shoostyleicon…

获取 Web 设计的免费资源

Web 开发人员可以找到很多免费资源&#xff0c;尽管其中一些资源会比另外一些资源更加自由。如果您正在设计网站或 Web 应用程序&#xff0c;那么不管是静态的还是所有可以想到的动态 Ajax 内容&#xff0c;都能找到减轻您的劳动强度并为网站增色的资源。本文从免费图标到 Web …