怎么控制让工具条上面的某些按钮灰掉不能用?

hjon 2006-04-13 10:03:02
一个基于对话框的程序,我在上面放了一个CToolBar工具条,对应一个菜单;现在想让这个工具条上面的某些按钮灰掉不能用,不知道应该怎么做?我看了CToolBar类没有成员函数可以设置某些按钮是否可用.各位高手帮忙一哈,感激不尽!
...全文
160 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
striking 2006-04-13
  • 打赏
  • 举报
回复
网上没有得下吗? 慢慢找找,这个很多的。
没有看清楚是同一个人,汗!
hjon 2006-04-13
  • 打赏
  • 举报
回复
哈哈"硬撑者"终于找到你了,那个贴子就是我的啊!!
我按你上次说的那个方法还是不行啊,还有你说的VC编程高手那本书,在哪儿找对应的光盘呢?
我看看光盘上面的例子可能就会明白了.再次感谢你哈!
lixiaosan 2006-04-13
  • 打赏
  • 举报
回复
m_wndToolBar.GetToolBarCtrl().EnableButton(ID_BUTTON_XX, FALSE);
striking 2006-04-13
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4677/4677892.xml?temp=.8642694
striking 2006-04-13
  • 打赏
  • 举报
回复
在对话框中使用ON_UPDATE_COMMAND_UI
ON_UPDATE_COMMAND_UI宏用于菜单和工具条处理,比如设置菜单的 状态 (enabled/disabled, checked/unchecked 等) 。这些处理是通过调用OnUpdateXXX来实现的。可是,该宏只适用于基于文档/视窗模型的应用程序,而对于对话框,还没有提高类似的功能来处理按钮的状态而使用该宏,在处理对话框中拥有大量按钮、而这些按钮之间存在状态控制关系时尤为重要。本程序讲解该宏在对话框中实现。

本程序从CDialog派生了一个类CCmdUIDialog,实现了必要的代码来调用OnUpdateXXX函数。在使用时,你可以直接从 CCmndUIDialog派生,而不从CDialog派生新类,并手工添加ON_UPDATE_COMMAND_UI宏到新类。

类声明:
#if !defined(AFX_CMDUIDIALOG_H__7D35F4B8_7531_11D1_8FA7_000000000000__INCLUDED_)
#define AFX_CMDUIDIALOG_H__7D35F4B8_7531_11D1_8FA7_000000000000__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// CmdUIDialog.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CCmdUIDialog dialog

class CCmdUIDialog : public CDialog
{
// Construction
public:
CCmdUIDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
CCmdUIDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL);
CCmdUIDialog();
BOOL ContinueModal();

// Implementation
protected:

// Generated message map functions
//{{AFX_MSG(CCmdUIDialog)
// NOTE: the ClassWizard will add member functions here
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_CMDUIDIALOG_H__7D35F4B8_7531_11D1_8FA7_000000000000__INCLUDED_)


类实现:
// CmdUIDialog.cpp : implementation file
//

#include "stdafx.h"
#include "delme.h"
#include "CmdUIDialog.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCmdUIDialog dialog


CCmdUIDialog::CCmdUIDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd)
: CDialog(lpszTemplateName, pParentWnd)
{
}

CCmdUIDialog::CCmdUIDialog(UINT nIDTemplate, CWnd* pParentWnd)
: CDialog(nIDTemplate, pParentWnd)
{
}

CCmdUIDialog::CCmdUIDialog()
{
}


BOOL CCmdUIDialog::ContinueModal()
{
// Iterate all child windows and instruct to update themselves
CWnd* pWndChild=GetWindow(GW_CHILD);
int iIndex=0;
while (NULL!=pWndChild)
{

CCmdUI state;
state.m_nID=::GetWindowLong(*pWndChild, GWL_ID);
state.m_nIndex=iIndex++;
state.m_pOther=pWndChild;

// ***CCmdUI::DoUpdate is undocumented MFC***
state.DoUpdate(this, FALSE);

pWndChild=pWndChild->GetWindow(GW_HWNDNEXT);
}

// Must call the base class
return CDialog::ContinueModal();
}

BEGIN_MESSAGE_MAP(CCmdUIDialog, CDialog)
//{{AFX_MSG_MAP(CCmdUIDialog)
// NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCmdUIDialog message handlers
注意:本类使用了MFC没有公开的成员函数CCmdUI::DoUpdate。

请参见一个例子:dialog\commandui_dialog目录。

第二种实现方法
在不派生一个新类的情况下,重载下面两的函数中任一个函数:


BOOL ::PreTranslateMessage( MSG* pMsg )
{
UpdateDialogControls( this, TRUE );
return CDialog::PreTranslateMessage( pMsg );
}

或者:


BOOL ::ContinueModal( )
{
UpdateDialogControls( this, TRUE );
return CDialog::ContinueModal( );
}

注意:ContinueModal调用比PreTranslateMessage频繁五倍。
hjon 2006-04-13
  • 打赏
  • 举报
回复
不行啊.我这样试过.我这个程序是基于对话框的,好像是对话框不会自动去响应那个UPDAGE_COMMAND_UI消息.不知道有没有办法可以让工具条上的按钮灰掉呢,如果可以我自己手动控制也行.
pomelowu 2006-04-13
  • 打赏
  • 举报
回复
把工具条上按钮相应的菜单项disable就可以了。
hjon 2006-04-13
  • 打赏
  • 举报
回复
好了.谢谢大家.我用小三的方法弄好了.
代码转载自:https://pan.quark.cn/s/40891257dd4d 在当代的web前端开发领域中,达成响应式布局的设计、处理元素定位的技术、数据类型的识别以及布局单位的认知和函数参数对象的解析是基础且核心的知识要点。以下将详细阐释相关知识点:**响应式布局的达成方式**响应式布局的设计能够确保网页在不同尺寸的设备上提供一致的用户界面。实现策略大致可以归纳为以下几种:- 百分比布局:通过将元素的宽度、高度、边距、内边距等属性设定为相对于父元素的百分比,以此适应多种屏幕尺寸。然而,部分属性如border不支持百分比设定。- 媒体查询:借助CSS3的@media规则,针对不同的屏幕宽度设定特定的样式,从而达成更为精细的布局控制。但该技术不适用于IE6、IE7浏览器。- rem布局:采用rem作为单位,相对于根元素的font-size大小来设定元素尺寸。在不同的分辨率条件下,借助媒体查询或JavaScript动态计算并调整html的font-size值,进而实现元素的缩放效果。- vw/vh布局:视口宽度和高度的单位,其中1vw等同于视口宽度的1%,1vh等同于视口高度的1%。这种单位提供了一种与视口大小直接关联的布局手段。- Flex弹性布局:通过将元素的display属性设置为flex,并运用flex相关的属性(例如flex-wrap、flex-flow、justify-content、align-items等)来进行布局的调整。**三种技术实现一个 div 在水平和垂直方向上的居中**- 结合定位与transform属性:将div的position属性设置为absolute或fixed,然后通过left/top属性将其定位至50%位...
内容概要:本文介绍了YOLOv11目标检测模型在芯片封装引脚缺陷检测中的实战应用,重点阐述了其在高强度反光、密集小目标场景下的技术优势。通过引入SPPF与C2PSA模块实现多尺度特征融合与注意力聚焦,提升对引脚缺损、桥接、翘曲等微小缺陷的识别能力。结合TensorRT进行FP16/INT8量化部署,配合批量推理、Agnostic NMS优化和最大检测数限制,实现了微秒级高速推理,满足工业产线实时性需求。代码实例详尽展示了模型导出、加速推理与后处理优化的全流程,体现了从算法设计到工业落地的完整闭环。; 适合人群:具备计算机视觉基础,从事工业检测、智能制造或嵌入式AI开发的工程师,以及希望将深度学习应用于半导体质检领域的研究人员和技术人员;; 使用场景及目标:①应用于QFN、BGA等芯片封装测试环节的自动光学检测(AOI)系统;②实现实时引脚缺陷识别并触发剔除机制,提升产线良率;③探索模型轻量化、高速推理与工业级鲁棒性部署的最佳实践; 阅读建议:学习者应结合代码实践TensorRT引擎导出与推理优化技巧,重点关注INT8量化校准、Agnostic NMS处理重叠框及防御性编程策略,深入理解如何将先进算法稳定落地于高节拍工业环境。
内容概要:本文围绕“独立储能的现货电能量与调频辅助服务市场出清协调机制”展开研究,基于Matlab平台实现了完整的仿真建模与算法验证。内容涵盖电力市场中独立储能系统参与现货电能量市场和调频辅助服务市场的协同优化机制,重点构建了多目标协调出清模型,综合考虑储能运行特性、充放电约束、市场报价策略及系统调度需求,通过优化算法求解实现储能收益最大化与电网运行效率提升的双重目标。该资源突出科研导向,强调机制设计与代码实现的紧密结合,适用于电力市场机制创新、储能商业化运营模式探索及相关算法复现研究。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力,从事电力市场、储能调度、综合能源系统等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究独立储能在多电力市场环境下的协同运行与竞价策略;②构建并求解电能量与调频服务联合出清模型,提升资源配置效率;③支撑高水平论文撰写、科研项目申报及实际系统仿真验证。; 阅读建议:建议结合文中提及的其他相关研究(如微电网调度、鲁棒优化等)进行系统学习,重点关注模型构建逻辑、目标函数设计与Matlab代码实现细节,宜在仿真环境中调试运行程序,深入理解市场机制与优化算法的融合机理。

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧