给对话框添加菜单 工具栏 状态栏简易方法

Pytorch图像去噪实战(七):Noise2Noise自监督图像去噪实战,没有干净图也能训练模型 PyTorch图像去噪实战:Noise2Noise自监督去噪方法 本文介绍了在没有干净图像的情况下使用Noise2Noise方法进行图像去噪的实战方案。主要内容包括: 问题场景:真实项目中经常只有带噪图像而没有对应的干净图像,如夜间监控、医学影像等场景。 Noise2Noise核心思想:使用同一场景的两张不同噪声版本的图像进行训练(noisy_image_a → noisy_image_b),让模型学习恢复共同的干净结构而非随机噪声。 技术原理:模型通过最小化两个独立噪声图像之间的差异,最终会收敛到真实干净 阅读详情

 

先建立一个基于Dialog 的程序,我给他起了个名字叫:DlgMenuToolbar。

 

一、如何往基于Dialog的程序添加菜单

 

[1.1] 先添加菜单(IDR_MENU1)资源,并加上需要的菜单项。

[1.2] 编辑对话框资源IDD_DLGMENUTOOLBAR_DIALOG的属性,在属性对话框中选择IDR_MENU1即可。

 

 

[1.3] 假如您不希望在对话框属性中直接设置菜单,而通过代码在程序中动态生成可以采用如下方法:

 

[1.3.1]在CDlgMenuToolbarDlg类声名中添加成员变量CMenu m_menu

再在CDlgMenuToolbarDlg::OnInitDialog() 中添加如下代码: //加载菜单

m_menu.LoadMenu(IDR_MENU1);

//设置当前菜单

SetMenu(&m_menu);

//当你不需要菜单时可以用 SetMenu(NULL);来取消当前菜单

二、如何往基于Dialog的程序添加工具栏

 

[2.1] 先添加工具栏(IDR_TOOLBAR1)资源,并画好各个按钮。

[2.2] 在CDlgMenuToolbarDlg类声名中添加成员变量 CToolBar m_wndtoolbar;

[2.3] 在CDlgMenuToolbarDlg::OnInitDialog() 中添加如下代码  //添加一个平面工具条

if (!m_wndtoolbar.CreateEx( this,TBSTYLE_FLAT ,  WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS,

    CRect(4,4,0,0)) ||!m_wndtoolbar.LoadToolBar(IDR_TOOLBAR1) )

{

TRACE0("failed to create toolbar/n");

return FALSE;

}

m_wndtoolbar.ShowWindow(SW_SHOW);

RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);

三、为工具栏添加工具提示

 

[3.1] 在CDlgMenuToolbarDlg类定义中手工添加消息映射函数的定义,如下黑体部分   //{{AFX_MSG(CDlgMenuToolbarDlg)

virtual BOOL OnInitDialog();

afx_msg void OnPaint();

afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

 

[3.2] 在CDlgMenuToolbarDlg.cpp添加函数的实现代码 //工具栏提示

BOOL CDlgMenuToolbarDlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)

{

ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW);

 

// UNICODE消息

TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;

TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;

//TCHAR szFullText[512];

CString strTipText;

UINT nID = pNMHDR->idFrom;

 

if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ||

pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))

{

// idFrom为工具条的HWND 

nID = ::GetDlgCtrlID((HWND)nID);

}

 

if (nID != 0) //不为分隔符

{

strTipText.LoadString(nID);

strTipText = strTipText.Mid(strTipText.Find(''/n'',0)+1);

 

#ifndef _UNICODE

if (pNMHDR->code == TTN_NEEDTEXTA)

{

lstrcpyn(pTTTA->szText, strTipText, sizeof(pTTTA->szText));

}

else

{

_mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText));

}

#else

if (pNMHDR->code == TTN_NEEDTEXTA)

{

_wcstombsz(pTTTA->szText, strTipText,sizeof(pTTTA->szText));

}

else

{

lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText));

}

#endif

 

*pResult = 0;

 

// 使工具条提示窗口在最上面

::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,SWP_NOACTIVATE|

SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER); 

return TRUE;

}

return TRUE;

}

 

[3.3] 在CDlgMenuToolbarDlg.cpp中添加消息映射,请看如下代码中的黑体部分 BEGIN_MESSAGE_MAP(CDlgMenuToolbarDlg, CDialog)

//{{AFX_MSG_MAP(CDlgMenuToolbarDlg)

ON_WM_PAINT()

ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipText )

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

 

四、其它

为了使你的程序看起来更酷,还可以在CDlgMenuToolbarDlg::OnPaint()中修改代码实现Dialog 填充颜色。

CPaintDC dc(this);

CRect rect; 

GetClientRect(rect); 

dc.FillSolidRect(rect, RGB(60,110,170)); 

 

五、添加状态栏

 

static UINT indicators[] =  

 {  

//  ID_SEPARATOR,                       //   status   line   indicator 

  ID_TEST_ITEM,    //自己在STRING TABLE中所定义的ID

  ID_USB_STATE,

  IDS_POWER_STATE,

  ID_DATE,

  ID_TIME,

//  ID_INDICATOR_CAPS,  

//  ID_INDICATOR_NUM,  

//  ID_INDICATOR_SCRL,  

 }; 

void CThreadDemoDlg::OnInitDialog()

{

 if (!m_wndStatusBar.Create(this) ||

  !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)))  

 {  

  TRACE0("Failed to create statusbar/n");  

  return   -1;             //   fail   to   create  

 }   

 RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);

 

}

 

void CThreadDemoDlg::OnButton1()

{

 CStatusBar* pStatus=&this->m_wndStatusBar;   //对状态栏字符进行修改

 if(pStatus)

 {

  pStatus->SetPaneText(0,"测试0");

  pStatus->SetPaneText(1,"测试1");

  pStatus->SetPaneText(2,"测试2");

  pStatus->SetPaneText(3,"测试3");

  pStatus->SetPaneText(4,"测试4");

 }

}

 

源文档 <http://blog.youkuaiyun.com/qj840828/archive/2008/10/17/3092318.aspx>

 

2万字长文:海豚调度器(DolphinScheduler)面试题深入了解 DAG图(有向无环图)是海豚调度器中表示工作流任务依赖关系的一种方式。在DolphinScheduler中,每个任务是一个节点,任务之间的依赖关系通过有向边连接这些节点来表示。无环:保证了工作流的执行顺序是确定的,避免了无限循环的问题。有向:箭头指示了任务的执行方向,即上一个任务的输出可以作为下一个任务的输入。依赖表示:通过图形化界面,用户可以通过拖拽连接线来定义任务之间的先后顺序和依赖关系。并行处理:DAG图可以表示出任务的并行关系,允许多个任务在没有直接依赖关系的情况下同时执行。条件分支。 阅读详情

相关推荐

【学习K230-例程46】GT6700-UVC摄像头

UVC模块提供了USB摄像头的检测、配置和图像采集功能,支持单摄像头操作。本实验通过开发板上的USB接口连接摄像头,将摄像头捕获到的画面显示在显示设备上。print(f"模式{i}: {mode.width}x{mode.height} {mode.format}@{mode.fps}fps")print(f"摄像头检测: {‘已连接’ if plugin else ‘未连接’}, 设备信息: {devinfo}")检测系统是否连接了USB摄像头(当前仅支持单个摄像头检测)。获取摄像头支持的所有视频模式。

GilgameshJSS的博客 807

MFC中向对话框中添加菜单栏方法

在MFC中一般基于对话框的MFC界面是没有菜单栏的,基于文档视图结构的MFC界面是有菜单栏的,那么怎么在基于对话框的MFC界面中添加菜单栏。下面是基于网上的博客啥的自己整理的。**一、在资源视图中将menu加入资源视图中1、在MFC中新建一个基于对话框的MFC界面工程,打开资源视图截图如下: 里面是默认没有menu资源的。这时就需要我们手动添加menu资源了。 2、在资源视图中添加menu资

JoliceYu的技术博客 4万+

如何降低 Claude Code 封号风险:实用指南

本文针对 Claude Code 用户频繁遭遇账号封禁的问题,提供了一套经过实战验证的解决方案。通过分析封号的根本原因——共享VPN导致的IP异常标记,文章详细介绍了如何通过"独立服务器+中转服务+环境配置"三步走策略,显著降低封号风险。

goodparty的专栏 2133

【MFC】对话框中创建工具栏

00. 目录 文章目录00. 目录01. 案例概述02. 开发环境03. 关键技术04. 程序设计05. 秘笈心法06. 源码下载07. 附录 01. 案例概述 使用MFC向导可以创建基于文档视图结构的应用程序也可以创建基于对话框的应用程序,向导默认生成的文档视图结构的应用程序带有工具栏,而对话框的应用程序没有带任何工具栏,本实例演示如何在对话框中创建工具栏,效果如下图所示。 02. 开发环境 系统环境:Windows 10 开发环境:Visual Studio 2019 03. 关键技术 MFC提供了工

C/C++软件工程师、嵌入式软件工程师、物联网研发工程师、C/C++讲师、物联网讲师、嵌入式讲师、鸿蒙讲师---欢迎大家一起交流(私信添加博主微信) 2885

[语义分割]SPP、空洞卷积与ASPP总结

ASPP全称:Atrous Spatial Pyramid Pooling,中文可以理解为空洞空间卷积池化金字塔或者多孔空间金字塔池化。在这其中,要理解两个概念:一个是SPP,池化金字塔结构或者叫空间金字塔池化层,都是一个东西;另一个是Atrous,空洞卷积,两个加在一起就是ASPP。 首先说一下SPP:Spatial Pyramid Pooling。这个结构出自于论文《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Re

lipengfei0427的博客 2万+

UniTouch:多模态触觉对齐技术如何重塑零样本跨模态应用

UniTouch模型通过创新的多模态触觉对齐技术,成功将触觉数据映射到通用的视觉-语言嵌入空间,解决了触觉模态的“孤岛困境”。该技术利用对比学习和传感器特定标记,实现了高质量的零样本学习能力,使模型无需额外训练即可完成触觉分类、描述等任务,并能驱动跨模态生成,为机器人、VR和智能制造等领域提供了强大的触觉理解新范式。

weixin_29044713的博客 409

【Qt】QMainWindow |QDialog对话框

默认情况下QMainWindow项目一创建就自带了菜单栏,可以在对象树窗口中,右键菜单栏对象,移除菜单栏:删除后也可以创建菜单栏,此时在对象树中右键MainWindow对象,菜单里边会多了创建菜单栏的功能。

choice~的博客 4077

从理想光源到部分相干:Abbe与Hopkins模型在计算光刻中的演进与选择

本文深入探讨了计算光刻中Abbe模型与Hopkins模型的演进与选择,分析了理想光源与部分相干光源在光刻仿真中的关键差异。Abbe模型基于理想点光源假设,计算简洁但存在精度局限;Hopkins模型则通过互强度函数和TCC技术,更准确地模拟现实中的部分相干光源,尤其适用于先进节点光刻工艺。文章还提供了模型选择的实用建议,帮助工程师在精度与效率间取得平衡。

weixin_29217235的博客 298

MFC 对话框 创建菜单栏、工具栏以及菜单栏Checked 勾选显示工具栏

如题,我想在对话框上创建一个菜单栏和工具栏,并且能在菜单栏用checked 对工具的显示和隐藏,而且在工具栏的按钮上悬停有提示信息。 大概这个对话框是这样:0.创建一个对话框 1.建立菜单栏 2.建立工具栏 3.菜单栏 让工具栏显示和隐藏 4.在工具栏的按钮悬停有提示信息 直接创建一个MFC 对话框程序,直接用VS 20* * 直接创建就行了,我用的VS2012。一、创建菜单栏在资源视图中插入一个

发呆的程序猿 7061

告别编译报错!STC32G12K128在Keil C251下的完整Target配置指南(附ROM设置详解)

本文详细介绍了STC32G12K128在Keil C251下的完整Target配置指南,包括ROM设置、CPU模式选择、内存模型优化等关键步骤。通过实战技巧和常见错误解决方案,帮助开发者高效搭建编译环境,避免常见报错,充分发挥STC32G系列芯片的性能优势。

weixin_29186249的博客 339

单细胞实战之数据净化三部曲:细胞周期校正、双胞体剔除与RNA污染清理——技术解析与实战指南

本文深入解析单细胞数据分析中至关重要的数据净化步骤,即细胞周期校正、双胞体剔除与RNA污染清理。通过实战代码演示与原理剖析,指导读者如何有效识别并去除技术噪音,从而获得更纯净、可靠的数据,为后续的细胞分群、差异表达等高级分析奠定坚实基础。

weixin_29274337的博客 205

【QT】QT 窗口(菜单栏、工具栏、状态栏、浮动窗口、对话框)

Qt 窗口是通过 QMainWindow类来实现的。 QMainWindow 是一个为用户提供主窗口程序的类,继承自 QWidget 类,并且提供了⼀个预定义的布局。QMainWindow 包含一个菜单栏(Menu Bar)、多个工具栏(Tool Bars)、多个浮动窗口(铆接部件)(Dock Widgets)、⼀个状态栏(Status Bar)和一个中心部件(Central Widget),它是许多应用程序的基础,如文本编辑器,图片编辑器等。如下图为 QMainwindow 中各组件所处的位置: Qt 中

Elena's Blog 7281

13、控制依赖与切片的新基础及递归While程序的摘要

本文探讨了控制依赖和程序切片的新研究进展,并提出了一种用于递归While程序的广义过程摘要概念和验证框架。文章介绍了控制依赖的新定义及其优势,程序切片的相关工作,以及递归While程序的过程摘要在完全正确性和终止性证明中的应用。通过阶乘和插入排序程序的示例分析,展示了过程摘要的有效性。未来的研究将聚焦于并发程序的依赖计算、依赖关系的语义连接以及时间属性的保留。

kotlin6android的博客 86

【QT】窗口(菜单栏、工具栏、状态栏、对话框)

QT中窗口相关内容

weixin_69380220的博客 1461

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Qt界面添加菜单,工具栏以及状态栏

原文: http://qzher.com/?p=592 Qt和MFC在架构上有些不一样 MFC基本上就是单文档结构/多文档结构,以及基于对话框应用程序 而Qt就是Widgets,以及Quick应用程序。而且这两种应用程序,都可以直接通过新建一个空的qmake应用程序menuToolbarStatusBar,再添加cpp,ui或qml,都能达到自己想要的要求 而

sinat_35523212的博客 7万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

MFC对话框添加工具栏、菜单、状态栏

加工具栏: 1.对话框头文件中添加 CToolBar m_wndToolBar; 1 2.对话框初始化函数中添加 if(!m_wndToolBar.Create(this) || !m_wndToolBar.LoadToolBar(IDR_TOOLBAR1)) { TRACE0( "Failed to Create Dialog Toolbar\n "); EndDialog(IDCANCEL)...

我的专栏 1370

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

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

VC++程序设计与应用--菜单、工具栏与状态栏

菜单、工具栏与状态栏

看,好自为之的博客!!! 4896

在PyQt中构建 Python 菜单栏、菜单和工具栏

摘要:菜单、工具栏和状态栏是大多数GUI 应用程序的常见且重要的图形组件。您可以使用它们为您的用户提供一种快速访问应用程序选项和功能的方法。

华为云官方博客 5871

MFC框体添加菜单栏工具栏状态栏

菜单栏工具栏状态栏 菜单栏 CMenu封装了菜单句柄和相关菜单API 1.1添加资源 1.2在CMainFrame::OnCreate函数中添加菜单;CMenu::Attach——将菜单句柄附加到菜单对象中;CMenu::Detach——将菜单句柄从菜单对象中分离 1.3 命令相关 ON_COMMAND 1.4 菜单项的状态  ON_UPDATE_COMMAND_UI    CCm

超越 2937

【QT】窗口|菜单栏|菜单项|工具栏|状态栏|浮动窗口

当然,也可以添加其它widget空间,来达到"永久消息"的效果,比如添加label标签。状态栏是一个输出简要信息的区域,一般位于主窗口底部,一个窗口只能有一个状态栏;() (我们创建项目时如果勾选了.ui文件的自动创建),我们不需要在堆上。只需要在创建菜单项的时候,菜单项的名字后面加个(&+添加的快捷键即可)在创建工具栏的同时,也可以设置工具栏的位置,默认位置是在窗口的最上面;创建,而且这一方式也会造成本身携带的造成内存泄露:(因为,当我们自己。,位于主窗口顶部,主窗口标题下的位置;

m0_67367079的博客 2450
上一篇: 动态调整对话框控件位置和大小
下一篇: 基础算法--计算几何
liufei_learning
博客等级 码龄17年 821粉丝 145原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值