第五篇 对话框控件的使用

MFC 学习之 模态对话框图片控件上作图 首先说明一点,onpaint 是更新面板用的,作图的话应在控件上进行。 新建 MFC 对话框工程,面板上添加按钮 IDC_START , IDC_SHOW , IDC_STOP 添加两个对话框,ID 分别设为(简写)ld 和 cd。 ld 上添加三个图片控件,并且每一个均关联一个 CSTATIC 型变量。 cd 上添加一个图片控件,操作如上。 分别为两个对话框添加类,名称自己设,我的是 阅读详情

对话框对控件的支持使得建立对话框变得格外的简单,而不需要再像建立普通窗口那样

麻烦。用户只需在资源文件中定义好控件,那么Windows在初始化对话框时就会为我们

把控件一一添加上去。当然,用户还需要对控件进行一些初始化的工作。

 

一、控件使用

1、控件的定义

control  文本 , ID , 类 , 风格 , x , y , 宽度 ,高度 [ ,扩展风格 ]

其中值得注意的是 文本 是控件的初始化值。

这种定义较为麻烦,RC.EXE还为用户提供了一种更加简单的定义方法。

控件名称  [ 文本, ]  ID , x , y , 宽度 , 高度   [ ,风格] [ ,扩展风格 ]

控件名称主要如下:

2、为什么可以在资源文件中定义即可?

这是因为Windows在初始化对话框时将每一天控件定义语句转化为:

invoke	CreateWindow,类名,文本,风格,x,y,宽度,高度,\
	对话框窗口句柄,ID,hInstance,NULL

3、实例

#include	<resource.h>

#define		ICO_MAIN	0x1000  //图标
#define		DLG_MAIN	1       //对话框

//位图文件ID
#define		IDB_1		1
#define		IDB_2		2

//控件ID
#define		IDC_ONTOP	101
#define		IDC_SHOWBMP	102
#define		IDC_ALOW	103
#define		IDC_MODALFRAME	104
#define		IDC_THICKFRAME	105
#define		IDC_TITLETEXT	106
#define		IDC_CUSTOMTEXT	107
#define		IDC_BMP		108
#define		IDC_SCROLL	109
#define		IDC_VALUE	110

//定义图标以及两个位图
ICO_MAIN	ICON	"Main.ico"
IDB_1		BITMAP	"Picture1.bmp"
IDB_2		BITMAP	"Picture2.bmp"

//定义对话框
DLG_MAIN	DIALOG	193,180,310,134
//对话框属性定义
STYLE		DS_MODALFRAME | WS_POPUP | WS_VISIBLE | 
		    WS_CAPTION | WS_SYSMENU | WS_THICKFRAME |
			WS_MAXIMIZEBOX | WS_MINIMIZEBOX 
CAPTION		"对话框窗口控件实例"
FONT		9,"宋体"
BEGIN
//子窗口控件定义
		GROUPBOX "选项",-1,55,5,120,100
		AUTOCHECKBOX "总在最前面",IDC_ONTOP,65,20,
				100,12
		AUTOCHECKBOX "显示图片",IDC_SHOWBMP,65,35,
				100,12
		AUTOCHECKBOX "允许更换图片",IDC_ALOW,65,50,100,12
		CONTROL "",-1,"Static",SS_ETCHEDHORZ | WS_CHILD | 
			WS_VISIBLE,60,65,110,1
		AUTORADIOBUTTON "模态边框(&Modal Frame)",IDC_MODALFRAME,
				65,70,100,12,WS_TABSTOP
		AUTORADIOBUTTON "可变边框(&Thick Frame)",IDC_THICKFRAME,
				65,85,100,12,WS_TABSTOP
		GROUPBOX "标题栏文字",-1,180,5,125,100,BS_GROUPBOX
		COMBOBOX IDC_TITLETEXT,190,20,105,70,CBS_DROPDOWNLIST | 
			WS_TABSTOP
		LTEXT "自定义文字: ",-1,190,40,105,10
		EDITTEXT IDC_CUSTOMTEXT,190,55,105,12
		LTEXT "请在此选择显示在标题栏上面的文字,或者选择'自定义'后自行输入",
			-1,191,73,105,26,WS_BORDER
		CONTROL "",-1,"Static",SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE,
			5,110,300,1
		DEFPUSHBUTTON "更换图片(&C)",IDOK,200,115,50,14
		PUSHBUTTON "退出(&X)",IDCANCEL,255,115,50,14

		;这条语句定义了一个图片框
		CONTROL IDB_1,IDC_BMP,"Static",SS_BITMAP | WS_CHILD | WS_VISIBLE,
			5,5,40,95       
		SCROLLBAR IDC_SCROLL,6,119,125,10
		LTEXT "0",IDC_VALUE,138,120,50,8
END


 

二、如何在代码中使用资源?

这里的主要内容就涉及两个方面的内容:

1、调用DialogBoxParam建立对话框时,对话框管理器会自动按照资源文件中定义的对话框模版为用户建立起

对话框。

把用户自定义的对话框过程中WM_INITDIALOG消息去掉:

即去掉该段:

 		.elseif	eax == WM_INITDIALOG
			;获得位图句柄备用
			invoke	LoadBitmap,hInstance,IDB_1
			mov	hBmp1,eax
			invoke	LoadBitmap,hInstance,IDB_2
			mov	hBmp2,eax
			;设置对话框图标
			invoke	LoadIcon,hInstance,ICO_MAIN
			invoke	SendMessage,hWnd,WM_SETICON,ICON_SMALL,\
				eax

			;组合框的下拉项的三项内容
			invoke	SendDlgItemMessage,hWnd,IDC_TITLETEXT,\
				CB_ADDSTRING,0,addr szText1
			invoke	SendDlgItemMessage,hWnd,IDC_TITLETEXT,\
				CB_ADDSTRING,0,addr szText2
			invoke	SendDlgItemMessage,hWnd,IDC_TITLETEXT,\
				CB_ADDSTRING,0,offset szText3
			;设置组合框的初始内容
			invoke	SendDlgItemMessage,hWnd,IDC_TITLETEXT,\
				CB_SETCURSEL,0,0
			;灰化自定义框
			invoke	GetDlgItem,hWnd,IDC_CUSTOMTEXT
			invoke	EnableWindow,eax,FALSE

			;选中"显示图片"
			invoke	CheckDlgButton,hWnd,IDC_SHOWBMP,BST_CHECKED
			;选中"允许更换图片"
			invoke	CheckDlgButton,hWnd,IDC_ALOW,BST_CHECKED
			;选中"可变边框"
			invoke	CheckDlgButton,hWnd,IDC_THICKFRAME,BST_CHECKED

			;设置滚动条的范围
			invoke	SendDlgItemMessage,hWnd,IDC_SCROLL,\
				SBM_SETRANGE,0,100

可以发现建立的对话框如下:

显然其中没有任何对对话框的初始化,因为初始化的工作需要用户在自定义的对话框过程中

处理。

2、对对话框控件的操作的处理。

操作对话框控件时,对话框过程会接收到WM_COMMAD消息,其wParam参数的低十六位即为用户定义

的ID。可以据此对不同的操作进行处理。另外,值得注意的是,操作滚动条时是不会发送WM_COMMAND

消息的,发送的WM_HSCROLL或WM_VSCROLL。

3、主程序

主程序是相对简单的,只要调用GetModuleHandle获得实例的句柄,保存以备用;然后调用DialogBoxParam

建立模态对话框;最后就是在对话框销毁后调用ExitProcess退出进程。

4、例子代码

.386
.model	flat,stdcall
option	casemap:none

include		windows.inc
include		user32.inc
includelib	user32.lib
include		kernel32.inc
includelib	kernel32.lib
include		gdi32.inc
includelib	gdi32.lib

;此处的equ定义要和资源文件中的定义一一对应
ICO_MAIN	equ	1000h
DLG_MAIN	equ	1
IDB_1		equ	1
IDB_2		equ	2
IDC_ONTOP	equ	101
IDC_SHOWBMP	equ	102
IDC_ALOW	equ	103
IDC_MODALFRAME	equ	104
IDC_THICKFRAME	equ	105
IDC_TITLETEXT	equ	106
IDC_CUSTOMTEXT	equ	107
IDC_BMP		equ	108
IDC_SCROLL	equ	109
IDC_VALUE	equ	110

.data?
;实例句柄与位图句柄
hInstance	dd	?
hBmp1		dd	?
hBmp2		dd	?
;滚动条位置
dwPos		dd	?

.const
;0代表字符串的结束,必须以0结束
szText1		db	'Hello,World!',0
szText2		db	'Title change!',0
szText3		db	'user-defined!',0

.code
;用户定义的对话框过程
_ProcDlgMain	proc	uses edi ebx esi hWnd,wMsg,wParam,lParam
		local	@szBuffer[128]:byte
		local	@stPs

		mov	eax,wMsg

		.if	eax == WM_CLOSE
			;销毁对话框,释放位图资源
			invoke	EndDialog,hWnd,NULL
			invoke	DeleteObject,hBmp1
			invoke	DeleteObject,hBmp2
 		.elseif	eax == WM_INITDIALOG
			;获得位图句柄备用
			invoke	LoadBitmap,hInstance,IDB_1
			mov	hBmp1,eax
			invoke	LoadBitmap,hInstance,IDB_2
			mov	hBmp2,eax
			;设置对话框图标
			invoke	LoadIcon,hInstance,ICO_MAIN
			invoke	SendMessage,hWnd,WM_SETICON,ICON_SMALL,\
				eax

			;组合框的下拉项的三项内容
			invoke	SendDlgItemMessage,hWnd,IDC_TITLETEXT,\
				CB_ADDSTRING,0,addr szText1
			invoke	SendDlgItemMessage,hWnd,IDC_TITLETEXT,\
				CB_ADDSTRING,0,addr szText2
			invoke	SendDlgItemMessage,hWnd,IDC_TITLETEXT,\
				CB_ADDSTRING,0,offset szText3
			;设置组合框的初始内容
			invoke	SendDlgItemMessage,hWnd,IDC_TITLETEXT,\
				CB_SETCURSEL,0,0
			;灰化自定义框
			invoke	GetDlgItem,hWnd,IDC_CUSTOMTEXT
			invoke	EnableWindow,eax,FALSE

			;选中"显示图片"
			invoke	CheckDlgButton,hWnd,IDC_SHOWBMP,BST_CHECKED
			;选中"允许更换图片"
			invoke	CheckDlgButton,hWnd,IDC_ALOW,BST_CHECKED
			;选中"可变边框"
			invoke	CheckDlgButton,hWnd,IDC_THICKFRAME,BST_CHECKED

			;设置滚动条的范围
			invoke	SendDlgItemMessage,hWnd,IDC_SCROLL,\
				SBM_SETRANGE,0,100
		.elseif	eax == WM_COMMAND
			;用户操作对话框中定义的控件时,对话框过程会收到消息WM_COMMAND,
			;消息的wParam的第十六位用户定义的控件ID
			mov	eax,wParam

			.if	ax == IDCANCEL
				invoke	EndDialog,hWnd,NULL
				invoke	DeleteObject,hBmp1
				invoke	DeleteObject,hBmp2
			.elseif	ax == IDOK
				mov	eax,hBmp1
				xchg	eax,hBmp2
				mov	hBmp1,eax
				invoke	SendDlgItemMessage,hWnd,IDC_BMP,\
					STM_SETIMAGE,IMAGE_BITMAP,eax
			.elseif	ax == IDC_ONTOP
				invoke	IsDlgButtonChecked,hWnd,IDC_ONTOP
				.if	eax == BST_CHECKED
					invoke	SetWindowPos,hWnd,HWND_TOPMOST,\
						0,0,0,0,SWP_NOMOVE or SWP_NOSIZE
				.else
					invoke	SetWindowPos,hWnd,HWND_NOTOPMOST,\
					0,0,0,0,SWP_NOMOVE or SWP_NOSIZE
				.endif
			.elseif	ax == IDC_SHOWBMP
				invoke	GetDlgItem,hWnd,IDC_BMP
				mov	ebx,eax
				invoke	IsWindowVisible,ebx
				.if	eax
					invoke	ShowWindow,ebx,SW_HIDE
				.else
					invoke	ShowWindow,ebx,SW_SHOW
				.endif
			.elseif	ax == IDC_ALOW
				invoke	IsDlgButtonChecked,hWnd,IDC_ALOW
				.if	eax == BST_CHECKED
					mov	ebx,TRUE
				.else
					mov	ebx,FALSE
				.endif
				invoke	GetDlgItem,hWnd,IDOK
				invoke	EnableWindow,eax,ebx
			.elseif	ax == IDC_MODALFRAME
				invoke	GetWindowLong,hWnd,GWL_STYLE
				and	eax,not WS_THICKFRAME
				invoke	SetWindowLong,hWnd,GWL_STYLE,eax
			.elseif	ax == IDC_THICKFRAME
				invoke	GetWindowLong,hWnd,GWL_STYLE
				or	eax,WS_THICKFRAME
				invoke	SetWindowLong,hWnd,GWL_STYLE,eax

			.elseif	ax == IDC_TITLETEXT
				shr	eax,16
				.if	ax == CBN_SELENDOK
					invoke	SendDlgItemMessage,hWnd,\
						IDC_TITLETEXT,\
						CB_GETCURSEL,0,0
					.if	eax == 2
						invoke	GetDlgItem,hWnd,\
							IDC_CUSTOMTEXT
						invoke	EnableWindow,eax,\
							TRUE
					.else
						mov	ebx,eax
						invoke	SendDlgItemMessage,\
							hWnd,IDC_TITLETEXT,\
							CB_GETLBTEXT,ebx,\
							addr @szBuffer
						invoke	SetWindowText,hWnd,\
							addr @szBuffer
						invoke	GetDlgItem,hWnd,\
							IDC_CUSTOMTEXT
						invoke	EnableWindow,eax,\
							FALSE
					.endif
				.endif
			.elseif	ax == IDC_CUSTOMTEXT
				invoke	GetDlgItemText,hWnd,IDC_CUSTOMTEXT,\
					addr @szBuffer,sizeof @szBuffer
				invoke	SetWindowText,hWnd,addr @szBuffer
			.endif
		;注意,操作滚动条,不会收到WM_COMMAND消息,而是WM_HSCROLL
		.elseif	eax == WM_HSCROLL
			mov	eax,wParam
			;左移一位
			.if	ax == SB_LINELEFT
				dec	dwPos
			;右移一位
			.elseif	ax == SB_LINERIGHT
				inc	dwPos
			;左移一页,移动长度自定义
			.elseif	ax == SB_PAGELEFT
				sub	dwPos,20
			;右移一页
			.elseif	ax == SB_PAGERIGHT
				add	dwPos,10
			;拖动滚动条
			.elseif	ax == SB_THUMBPOSITION || ax == SB_THUMBTRACK
				mov	eax,wParam
				shr	eax,16
				mov	dwPos,eax
			.else
				;有些滚动条事件未处理,留给对话框管理器
				mov	eax,FALSE   
				ret
			.endif
			;保证滚动条范围为0~100
			cmp	dwPos,0
			jge	@F
			mov	dwPos,0
			@@:
			cmp	dwPos,100
			jle	@F
			mov	dwPos,100
			@@:
			invoke	SetDlgItemInt,hWnd,IDC_VALUE,dwPos,FALSE
			invoke	SendDlgItemMessage,hWnd,IDC_SCROLL,\
				SBM_SETPOS,dwPos,TRUE
		.else
			mov	eax,FALSE
			ret
		.endif

		mov	eax,TRUE
		ret
_ProcDlgMain	endp

start:
	invoke	GetModuleHandle,NULL
	mov	hInstance,eax
	;调用建立模态对话框的程序,改程序一直到对话框销毁才返回
	invoke	DialogBoxParam,hInstance,DLG_MAIN,\
		NULL,offset _ProcDlgMain,NULL
	invoke	ExitProcess,NULL

	end	start



5、例子运行结果

可见,其中有了对对话框的初始化。

 

三、控件资源文件下载

 

 

MFC对话框中Radio控件的使用 MFC中radiobutton的使用 阅读详情

相关推荐

VC对话框上Tab控件的各子标签及其与主对话框之间的数据传递

假设主对话框已经初始化好了Tab控件(具体参考:MFC的TAB控件使用详细说明),主对话框CMainDlg成员变量m_tab, m_d1, m_d2,分别代表Tab控件,子标签1,子标签2。主对话框及各标签的编辑控件绑定一个变量m_data。 一、子标签调用主对话框的数据成员 方法:在子标签的处理函数OnClickedBtn1中,使用GetParent()-&gt;GetParent()得到主...

yxq1122的博客 2480

如何创建与使用MFC对话框工程

详细的MFC 对话窗的创建与使用介绍

everything is possible,anything is OK. 9922

深入理解MFC对话框与控件的源代码实践

创建自定义对话框类的基本步骤如下:定义类:首先,在项目中定义一个新的C++类,并使其继承自CDialog类。添加控件:使用资源编辑器或代码添加所需的控件,并为每个控件设置合适的ID。实现消息处理函数:为对话框中的控件编写消息处理函数。这通常通过在类中重载虚函数或者处理消息映射宏来完成。初始化对话框:实现OnInitDialog()函数来执行对话框初始化时需要的操作,如设置控件的初始值。数据交换与验证。

weixin_42361478的博客 1089

mfc入门基础(四)对话框添加控件、创建对话框类和为对话框控件添加变量

学习

Littlehero_121的博客 6105

BQ40Z50R2循环学习实战:量产文件生成与关键状态位解析

本文详细解析了TI BQ40Z50R2电量计循环学习(Golden Learning)的实战流程与量产文件生成方法。重点剖析了updateStatus状态位在充放电静置阶段的常见异常(如卡在0x04或跳至0x0E)及其根本原因,并提供了从环境控制、命令顺序到文件处理的完整避坑指南,帮助工程师高效完成量产配置。

weixin_29170327的博客 215

基于大疆TSDK与Pix4D的热红外数据工程化处理:从RJPG到温度正射影像的完整工作流

本文详细介绍了基于大疆TSDK与Pix4D的热红外数据工程化处理完整工作流。通过Python脚本自动化解析RJPG格式的热红外图像,提取并转换其中的原始辐射数据为包含真实温度信息的TIFF文件,再结合Pix4Dmapper进行批量拼接,最终生成可直接用于GIS分析的温度正射影像图。该流程解决了手动处理效率低下、参数校准复杂等难题,实现了从原始数据到定量分析成果的高效、准确、可重复生产。

weixin_29161785的博客 377

windows 对话框创建及其标准控件的使用

非模态,模态对话框,按钮单选,多选,列表视图,滑轮,滚动条,复选框

ylh的博客 1280

无线通信基础:调制与解调技术_(42).7.3.2多进制频移键控解调(MFSK解调)

MFSK解调是一种通过频谱分析和频率检测来恢复数字信号的技术。本文介绍了MFSK解调的基本原理,包括信号接收、频谱分析、频率检测和符号判决。在实际应用中,噪声会对解调性能产生影响,因此引入了信噪比优化和多步判决方法来提高解调的准确性。通过性能评估,可以更好地理解MFSK解调在不同噪声环境下的表现。这些方法和技术为MFSK在实际通信系统中的应用提供了理论和实践基础。

2401_87715305的博客 1320

day5 – 对话框的创建和控件的基本使用

对话框 1) 模态对话框 创建的步骤: 编辑对话框资源模板 创建对话框 实现对话框过程函数 模态对话框会阻塞父窗口的原因: a. 模态对话框内部自建消息循环 b. 模态对话框调用Enablewindow禁用了父窗口的鼠标和键盘输入 一、概述 对话框是一种特殊的窗口,它依据对话框模板资源而建立。 它与一般的窗口有些不同,很多过程由系统完成了,虽然用户还是要提供一个消息处理函数,但在此消息处理函...

Break-attack的博客 350

数仓建模:维度表合并时,如何处理可能出现的数据冲突?

通过以上方法,可以有效地处理维度表合并时可能出现的数据冲突,确保合并后的数据完整性、一致性和准确性,满足业务需求和数据仓库的性能要求。在合并过程中,需要根据实际情况选择合适的处理方法,并进行充分的测试和验证。(2)实战中总结的SQL技巧,帮助SQLBOY在SQL语言上有质的飞越,无论你应对业务难题及面试都会游刃有余【如果您觉得本文还不错,对你有帮助,那么不妨可以关注一下我的数字化建设实践之路专栏,这里的内容会更精彩。技巧总结,让你认识不一样的数仓。,数据库会抛出异常,可根据异常处理机制解决。

石榴姐yyds 1133

多体动力学分析软件:SIMPACK_(17).SIMPACK高级编程与脚本

自定义力和约束可以用于模拟更复杂和现实的物理场景。SIMPACK 提供了接口,允许用户通过 Python 脚本来实现自定义力和约束。以下是一个示例,展示如何定义一个自定义力函数并应用于模型。# 定义自定义力函数"""自定义力函数:param t: 时间:param position: 位置:param velocity: 速度:return: 力"""# 创建一个新的 SIMPACK 模型# 添加一个刚体# 添加一个关节# 添加一个自定义力# 设置仿真参数# 运行仿真。

kkchenjj的博客 1424

MFC 对话框与控件的使用

用VS编写关于MFC 对话框与控件的一个小项目

qq_51679695的博客 4060

14、PostgreSQL日志文件、系统统计与查询优化全解析

本文全面解析了PostgreSQL数据库中的系统统计、日志文件配置与查询优化技巧。详细介绍了如何利用pg_stat_statements模块进行性能监控,配置日志记录以发现潜在问题,并深入探讨了查询优化器的工作原理和优化策略。通过实际案例分析,展示了如何综合应用这些技术提升数据库性能。适合希望提升PostgreSQL性能与稳定性的数据库管理员和开发人员阅读。

efc123456的博客 94

MFC实现菜单弹出对话框,并在对话框中实现控件触发

首先我们要新建一个mfc工程,实验工具是vs,选择图中选项然后下一步当中,设置成基于对话框然后可以完成,也可以继续下一步设置窗口的一下小部件。1.第一步,我们要在窗口上添加菜单。找到资源视图,右键添加资源。选择menu,新建之后,输入自己想要的菜单名最后在添加图中所缺代码:        CMenu menu; menu.LoadMenu(IDR_MENU1);  //IDR_MENU1为菜单栏I...

felicityPY的博客 1万+

基于Vision Transformer的鸟类图像分类(200个类别)完整代码+数据

基于Vision Transformer的鸟类图像分类(200个类别)完整代码+数据

1728

python如何给声音增加回声效果

创建任何声音对象的回声效果。使用sndarray和numpy来创建原始声音的偏移和衰减副本。目前它只是使用硬编码的值来设置回声的数量和延迟。你可以根据自己的需要轻松地重新创建。这段注释说明了make_echo函数的用途和实现方式,即通过pygame的sndarray模块和numpy库来处理声音数据,生成具有回声效果的声音。函数中使用了固定的回声数量和延迟时间,但这些值可以根据用户的需求进行调整。

zhangzhechun的专栏 977

MFC对话框、菜单栏、工具栏、控件的创建和基本使用

下面让我们通过一个实例 来了解MFC对话框的建立,菜单栏、工具栏、控件的一些基本使用 先简单看一下效果 系统环境 window10 Visual Studio 2017 项目的目录 一、对话框 首先需要知道的是 MFC中创建的对话框分为两种 模态对话框 非模态对话框 两者区别简单来说就是 模态对话框就像和你女朋友聊天,一旦你打开了她的对话框,除非你把她哄好打点好之后,你才能干其他...

weixin_44984664的博客 8084

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

对话框和常用控件

<br />对话框是Windows应用程序中最重要的用户界面元素之一,是与用户交互的重要手段,在程 序运行过程中,对话框可用于扑捉用户的输入信息或数据。对话框是一个特殊类型的窗口,任何对窗口进行的操作(如:移动、最大化、最小化等)都可在对话框中 实施,一般来说,在对话框中通过各种控件(如:按钮、编辑框、列表框、组合框等)来和用户进行交互。控件是在系统内部定义的用于和用户交互的基本单元。<br />一、对话框的使用<br />    Visual C++提供的对话框编辑器能“可视”地进行设计、编辑,并可用<b

simon7in的专栏 5522

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

Win32对话框中使用Tab控件

windows编程学习任重而道远。一个tab控件折腾好久才勉强能用,还有好多问题存在。暂且将已经实现的记录下来。 首先,初学windows编程,就算知道了一个控件的所有信息,没有示例,学起来也是很迷茫的。msdn官网方文档中有一个叫using...的模块,很有帮助。 就像上方所示,参考using tab controls中的示例代码,能让初学者在使用控件的时候省力不少。 tab控件在di...

majalis_C的博客 2273

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

CMFCTabCtrl控件在对话框中的使用

CMFCTabCtrl控件相比于CTabTrcl的使用更加方便灵活,但是在对话框控件中只有CTabTrcl控件,因此如果开发人员想使用CMFCCtrl控件的话需要做一些小小的修改。 开发环境:Win10+Visual Studio 2010 1、重载对话框的OnCreate(LPCREATESTRUCT lpCreateStruct)函数,并在其中创建CMFCTabCtrl和tab...

chuajiang的专栏 1902

ATL/WTL 对话框和控件

  选择自 titilima 的 Blog第四章 对话框和控件对于Win32 GUI的程序设计来说,其实大部分的情况下我们都不需要自己进行窗口类的设计,而是可以使用Win32中与用户交互的标准方式——对话框(Dialog Box)。我们可以在VC IDE的资源设计器中设计对话框资源,并在其上放置各种控件资源——的确是非常方便。在本章里,李马将要向诸位介绍如何利用ATL来操作对话框,以及如何

编爱程 6452

【MFC】对话框类的控件中变量如何获取其他对话框类的控件变量的值并使用

——————通过全局变量的使用来获取对话框的指针—————— 问题描述:假设CMyDialog为对话框类1,CLoginDialog为对话框2,对话框1的IDC_STATIC2控件要获取对话框2的控件变量m_name 1.先在CLoginDialog.cpp中声明一个全局变量:CLoginDialog* pLogin;(指的是一个类对象) // 注意:这里的声明必须在CPP文件中的所有函数外部,而...

pengpengbenben的博客 2768

C++编程逻辑讲解step by step:使用对话框与控件(2)

3)单击“ADD Function”按钮,弹出“Add Member Function”对话框,使用默认的函数名(OnDialogModaldialog),单击“OK”按钮返回,“MFC Class Wizard”对话框,再单击“OK”按钮,则函数添加成功。“Ok”按钮的响应函数,OnOk(),该函数响应BM_CLICK消息,将用户选择的各个选项(性别,学历,兴趣、爱好),组成一个字符串,赋给m_Edit,通过“文本框”控件显示该字符串。//将设置Raiod Button的缺省值为“男”

技术日常 2059

基础语法篇_10——设置对话框、颜色对话框、字体对话框、示例对话框、改变对话框和控件的背景及文本颜色、位图显示

文章目录一、简单绘图二、设置对话框2.1 设置线宽2.2 设置线型 新建一个单文档类型的MFC工程,取名:Graphic。此程序将实现简单的绘图功能。 一、简单绘图 实现简单的绘图功能,包括点、直线和椭圆的绘制。为了实现这些功能: ⭕⭕1)首先为此程序添加一个子菜单,菜单名称为“绘图”; ⭕⭕2)为其添加四个子菜单项,分别用来控制不同图形的绘制。当用户选择其中的一个菜单项后,程序将按照当前的选...

WaitFoF 2835

如何使MFC对话框上的控件可以拖动

有人问我,怎么才能使对话框上的控件可以通过鼠标来拖动. 他的方法是: 1) 从标准控件类派生新的类. 2) 处理控件的鼠标消息来实现拖动效果. 这样做当然可以实现,但似乎不太符合常规, 且需要对需要可拖动的所有控件进行子类化以便能响 应控件的鼠标消息. 在这里, 我写了一个类,专门用来处理对控件的拖动, 使用该类只需要少许修 改包含需要拖动的控件的对话框,而不需要对控件再做任

angusing的专栏 2983

MFC控件随对话框大小改变而改变

这也是我项目中碰到的问题,要让对话框中的控件随着对话框大小的变化进行自动调整,一般的做法是在WM_SIZE的响应函数中对所有的控件用MoveWindow()或者SetWindowPos()设置其变化比例。 但是由于需要自己计算,并且还有各种系统引起的情况,比如WIN7里有个选项“拖动时显示窗口内容”,选中与不选中导致对话框内容显示完全不一样,选中时错误,不选正确,确实让人头大。 如Ea

Sin_Geek成长の迹 3641
上一篇: 分解因式
下一篇: 第九篇 单步中断
lulipeng_cpp
博客等级 码龄15年 169粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值