MFC多窗口切换—如TabControl

5 篇文章 0 订阅
订阅专栏

 

​
//利用ListControl做的多窗口、多页面,在主对话框中切换显示

void CMulWinDlg::CreatFormList()
{
	//先加载图标,定义对象
	CImageList imgList;
	imgList.Create(16, 16, ILC_COLOR8 | ILC_MASK, 0, 0);
	m_listPageForm.SetImageList(&imgList, LVSIL_SMALL);
	imgList.Add(::AfxGetApp()->LoadIcon(IDR_MAINFRAME));
	imgList.Detach();

	CRect rect;//定义一个矩形类对象,为了便于获取主窗口另半边的矩形窗口大小,在主窗口右边添加一个PicturesControl控件。
			   //拿到PicturesControl控件的矩形大小
	GetDlgItem(IDC_STATIC_RECT)->GetWindowRect(rect);
	//留的边,减小的宽度和高度
	rect.DeflateRect(1, 1);
	//屏幕坐标转客户端坐标
	ScreenToClient(&rect);

	FC_Hang * pHang = new FC_Hang;
	//Create第一个参数是基于哪个窗口,第二个参数是副窗口是谁
	pHang->Create(IDD_FORM_HANG, this);
	//根据上面获取的PicturesControl控件大小改变挂机窗口的大小
	pHang->MoveWindow(rect);
	//点挂机显示测试页面
	pHang->ShowWindow(SW_SHOW);
	m_listPageForm.InsertItem(0,TEXT("测试页"), 0);
	//m_listPageForm.SetItemData(0, (DWORD)(FormBase1*)pHang);//继承了2个基类,转换时要明确转换成哪个基类的指针,这个64位下不行
	
	//第一个问题是因为指针是64位的,所以你SetItemData的时候用 DWORD 强转是不行的 DWORD 是32位 要用 DWORD_PTR
	m_listPageForm.SetItemData(0, (DWORD_PTR)pHang);

	FC_Skill * pSkill = new FC_Skill;
	pSkill->Create(IDD_FORM_SKILL, this);
	pSkill->MoveWindow(rect);
	m_listPageForm.InsertItem(1, TEXT("第二页"), 0);
	m_listPageForm.SetItemData(1, (DWORD_PTR)pSkill);

	FC_ListBag * pbag = new FC_ListBag;
	pbag->Create(IDD_FORM_LISTBAG, this);
	pbag->MoveWindow(rect);
	m_listPageForm.InsertItem(2, TEXT("第三页"), 0);
	m_listPageForm.SetItemData(2, (DWORD_PTR)pbag);

	FC_ListSkill * pListSkill = new FC_ListSkill;
	pListSkill->Create(IDD_FORM_LISTSKILL, this);
	pListSkill->MoveWindow(rect);
	m_listPageForm.InsertItem(3, TEXT("第四页"), 0);
	m_listPageForm.SetItemData(3, (DWORD_PTR)pListSkill);
}

void CMulWinDlg::OnNMClickListPage(NMHDR *pNMHDR, LRESULT *pResult)//ListControl左键点击事件,点击获取点击项的索引
{
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	if (-1 == pNMItemActivate->iItem) return;
	ShowForm(pNMItemActivate->iItem);
	*pResult = 0;
}

void CMulWinDlg::ShowForm(int nIndex)
{//感觉没有必要使用FormBase1这个类,本身 FC_Hang 和 FC_Skill 都是从 CDialog 继承过来,直接强转成 CDialog 就行
	CDialog *pForm = NULL;
	//MessageBoxA(LPCTSTR(m_listPageForm.GetItemCount()));
	for (int i = 0; i < m_listPageForm.GetItemCount(); ++i)
	{
		pForm = (CDialog*)(DWORD_PTR)m_listPageForm.GetItemData(i);//获取所有的窗口页面
		if (pForm) pForm->ShowWindow(SW_HIDE);//如果pform为空,都隐藏掉
														//然后显示选中的窗口页面。
		pForm = (CDialog*)(DWORD_PTR)m_listPageForm.GetItemData(nIndex);//根据索引把选中的要显示的窗口拿出来
		if (pForm) pForm->ShowWindow(SW_SHOW);//如果pform为空,显示选中的窗口
	}
}





​

mfc在控件中嵌入多个窗口,点击按钮切换显示不同窗口
m0_60352504的博客
09-09 3230
在窗口类的的OnInitDialog函数中,初始化这三个变量
MFC创建子窗口及使用
weixin_30278311的博客
05-03 1991
1、在资源视图对话框中新建一个Dialog 2、进入Dialog视图界面,右键单击添加类,此步骤是添加属于此对话框的类,就像主窗口的类对应于主对话框一样的关系 3、添加子对话框的初始化函数 界面上右击->添加虚函数OnInitDialog,把需要初始化的东西放在里面 例如:新建的一个子对话框类名叫MFCListDlg MFCListDlg.h 1 #pragma once ...
MFC开发-TabControl控件使用
weixin_44122235的博客
08-18 1292
MFC开发-TabControl控件使用;
MFC--- 多页面切换
随心漂流的博客
09-25 3715
使用CPropertySheet和CPropertyPage实现MFC多个界面的切换,即多个对话框的相互切换
MFC多窗口切换—如TabControl.rar
10-10
一个主对话框里左边是listcontor,右边是待显示的另外2个对话框,通过点击listcontrol里的项,在主对话框中的右边显示另外2个中指定的一个对话框,图文:https://blog.csdn.net/jinwei29/article/details/120684745?spm=1001.2014.3001.5502
MFC多窗口停靠成Tab页
最新发布
richer_live的博客
09-22 250
【代码】MFC多窗口停靠成Tab页。
深入分析MFC文档视图结构(项目实践)
Black_Man的专栏
06-25 1499
深入分析MFC文档视图结构(项目实践)       k_eckel:http://www.mscenter.edu.cn/blog/k_eckel文档视图结构(Document/View Architecture)是MFC的精髓,也是Observer模式的具体实现框架之一,Document/View Architecture通过将数据和其表示分开,提供了很好的数据层次和表现层次的解耦。然而
winform用tabcontrol切换mdi子窗口及为tabcontrol的page添加关闭按钮
12-19
利用tabcontrol实现winform子窗口切换,且为tabpage添加关闭
MFC tabcontrol demo
12-13
MFC Dialog 方式添加tabcontrol. 下载既可编译运行. vs2013编译.
MFC中使用Tab控件实现选项卡,外加图像控件显示图像
06-29
MFC中利用Tab控件实现了选项卡的功能呢给,同时在子对话框中利用图像控件显示图像,图像大小根据控件大小进行缩放!
MFC Tab Control 嵌套 组合 多层 子对话框
03-25
MFC Tab Control 嵌套 组合 多层 子对话框,简单易懂,适合新手开发软件。详细教程网址http://blog.csdn.net/linyijiong/article/details/65662360
mfc当窗口多标签实现
12-01
mfc当窗口多标签实现,方便使用,内含示例程序代码,演示程序。vc6.0运行正常
C#TabControl控件实现窗体的整合与切换示例
08-28
在C#的WinForm中,用TabControl整合了多个窗体,实现了窗体的切换。这是通过选项卡进行三个窗体之间切换的Demo,有关此Demo的详细介绍,大家可以参考我的博客:...
tab控件子页面最大化
moka006的博客
12-30 717
MFC Tab 控件子页面最大化 菜鸟本人在实现页面最大化的时候老是有一些小BUG,最后终于做好了,所以记录一下 1.可以通过重写OnSize函数来实现控件大小随页面的变化而变化 ​ 在OnInitDialog()获取页面初始大小 CRect recta; GetClientRect(&recta); //取客户区大小 m_OrgWndPoint.x = recta.right - recta.left; m_OrgWndPoint.y = recta.bottom - re
MFC在选项卡TabControl中定义下拉列表ComboBox如何在主Dlg中初始化,error C2352非静态成员函数的非法调用,error C2228的左边必须有类/结构/联合,已解决
Mr_liu_666的博客
07-05 985
问题及原因 设计一款软件经常会遇到在一个选项卡(TabControl)中添加一些东西,然后需要初始化。我在做现在的项目的时候就需要在一个选项卡中添加下拉列表(ComboBox): 众所周知,初始化某一个ComboBox的时候需要Add String: void Other1::Other1Init() { CTRL_1.AddString(_T("22")); CTRL_1.AddString(_T("0")); CTRL_1.AddString(_T("-20")); CTRL_1.
mfc halcon窗口缩放
04-29
MFC是Microsoft Foundation Classes的缩写,是微软基础类库,用于创建Windows应用程序。Halcon是一款强大的计算机视觉软件工具包。在进行MFC编程过程中,整合Halcon是常见的需求,此时如何实现MFC Halcon窗口缩放就是一个需要解决的问题。 MFC Halcon窗口缩放主要是针对显示图像的窗口进行缩放,以适应不同的分辨率或显示设备。实现方法通常是通过鼠标在窗口边缘进行拖拽,来改变窗口大小。具体实现步骤如下: 1. 获取MFC Halcon窗口大小,使用GetWidth()和GetHeight()函数获取MFC Halcon窗口的宽度和高度。 2. 设置窗口大小,使用SetWindowPos()函数根据鼠标的位置和移动距离,重新设置MFC Halcon窗口的大小。 3. 刷新窗口,调用Invalidate()函数刷新MFC Halcon窗口。 需要注意的是,在进行窗口缩放的同时,还需要对Halcon图像进行缩放,以保证图像在新的窗口大小下呈现出最佳效果。可以通过使用zoom_image_size()函数实现图像的缩放。 总的来说,MFC Halcon窗口缩放是一个相对简单的过程,只需要了解相关函数的使用方法,即可轻松实现窗口缩放。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • TP-LINK-TL-WR703N刷Breed用Openwrt固件挂MP288打印机服务共享手机打印服务 33879
  • 用DISM为Windows 7 SP1 2019官方英文版添加中文语言包及XHCI驱动 16549
  • AUTOJS利用百度OCR识别找字点击 详细代码 11419
  • vb.net 对文本文件的操作 5874
  • Sunday算法特征码搜索C++(支持通配符) 3198

分类专栏

  • 自写C++工具 1篇
  • C++ 5篇
  • Dump文件的生成和使用 1篇
  • autojs 1篇
  • 路由器刷机 1篇
  • win7系统 1篇
  • VB编程 8篇

最新评论

  • AUTOJS利用百度OCR识别找字点击 详细代码

    i你de我: 感谢大佬,换上API_Key,Secret_Key,去掉access_token的双斜杠,就能用。但后面那个img要回收,不然内存泄漏。大佬好强,感谢大佬

  • TP-LINK-TL-WR703N刷Breed用Openwrt固件挂MP288打印机服务共享手机打印服务

    歹丸: 这篇是源头,感谢分享,也谢谢补充的兄弟。

  • TP-LINK-TL-WR703N刷Breed用Openwrt固件挂MP288打印机服务共享手机打印服务

    Mr_stranger: 请问一开始忘记备份mac地址,导致在breed中不能修改mac,在breed中刷入openwrt系统化后,输入192.168.1.1不能进入系统,请问应该如何解决?

  • TP-LINK-TL-WR703N刷Breed用Openwrt固件挂MP288打印机服务共享手机打印服务

    xinyue1977: 怎样安装三星4521F打印机呢?

  • 用DISM为Windows 7 SP1 2019官方英文版添加中文语言包及XHCI驱动

    吾辈很累: 保存完为什么要卸载啊

大家在看

  • MySQL数据库管理补充 337
  • IPNV6写法
  • 大模型时代已至,产品经理如何紧跟时代步伐? 1999
  • [AIGC] Python内置函数:刷题必备 69
  • 超详细Python教程——Magic Method

最新文章

  • 去虚拟化 VMware Workstation Pro去虚拟化底层文件修改器
  • VS2015环境下EasySize.h使用方法
  • TreeCtrl重绘 CColumnTreeCtrl
2023年1篇
2021年5篇
2020年2篇
2019年9篇
2018年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

两个鬼故事宝宝起名哪个网站比较靠谱给钻石戒指起名称达乐电影网艾伯森特拉福买家俱乐部免费起名网名字起名字大全男孩起名字男2020免费公务员自首式举报拿超20万工资谷正藩初生婴儿起名软件601877好听的博客名字的顾姓男孩起名9月的男孩起名字建筑装饰公司起名按生辰八字免费起名2021年起名字女孩中国姓名的起源哪里能起名姓李的男孩起名字张姓女宝宝起名狗宝宝起名宜用字大全华宝行业基金对园林公司起名大全集jiong咨询公司名字怎么起名起名字网站怎么样给手机起名纯情罗曼史第一季少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化