问题标签 [cbutton]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mfc - On Update 命令不适用于 MFC 中动态创建的按钮
在我的代码中,我在 OnCreate() 的视图类中添加了按钮。我包括了 On Command 和 On Update COMmand 功能。当我单击按钮时,这里的命令功能正在工作。但是 On Update COMmand 不起作用。我使用此 OnUpdateCommand() 更新按钮的按下状态。
在 OnCreate()
这些按钮的消息映射。
On 命令和 OnUpdatecommand 函数:
在 Zoomin 和 Zoomout 功能中,OnUpdateCommnad 都不起作用。
c++ - MFC 计算控件的高光、阴影等的算法或函数是什么?
我已经创建了一个ColorButton
子类CButton
,在样式中设置BS_OWNERDRAW
标志。
它工作正常:我可以设置它的文本、背景等。
但是我不想手动设置次要颜色(高光、阴影等)。我有一个启发式方法,可以根据背景为文本选择白色或黑色。我可以对其他次要颜色做同样的事情,但我的公式会与 Windows 所做的不同,因为背景颜色相同,因此看起来很奇怪。所以:
问题:有什么方法可以找出 WindowsGetSysColor(COLOR_BTNSHADOW)
在给定背景颜色的情况下会返回什么?
为了预期我看到的答案CMFCButton
允许自定义颜色而不创建整个子类。我再次看到的允许设置每种颜色的微观管理,但不是我正在寻找的高级能力。我可能宁愿坚持我的解决方案,因为它已经在运行,并且适用于 XP 及更高版本。(这是一个免费软件实用程序,所以谁知道旧操作系统用户可能拥有什么。)也就是说,如果有一个CMFCButton
解决方案也会引起人们的兴趣。
mfc - MFC:未调用 OnNcCreate();需要为 CButton 子类设置 BS_OWNERDRAW 标志
我不是 MFC 方面的专家,但在过去 15 年多的时间里,我做了十几个自定义控件。我刚刚CButton
用自定义图形制作了一个。
问题是:我当然需要BS_OWNERDRAW
被设置。我有一个OnNcCreate()
方法,我已经剪切和粘贴了 15 年以上,它一直在我的自定义控件中工作,但由于某种原因,它现在没有被调用。
除了我第一次尝试编写自定义控件时OnNcCreate()
最终设置的地方之外,我没有兴趣甚至不了解。BS_OWNERDRAW
问题:什么会阻止OnNcCreate()
被调用?或者,我可以或应该设置另一个地方BS_OWNERDRAW
吗?
工人阶级定义为:
非工作的定义为:
因此,他们都对方法进行了原型设计:
该方法的编写方式相同(类名除外):
该对话框使用 Visual Studio 2017 对话框编辑器作为 CustomControl 的好类和坏类。好类和坏类都有扩展样式 0x0 和样式 0x50010000。er Disabled=False、Help ID=False、Visible=True、Class=Good 或 Bad(根据需要)。
运行应用程序时调用每个类的RegisterControlClass()
方法:
(有趣的是:我注意到CGood
,派生自CStatic
,错误地在那里有“按钮”并且工作正常;如果我更改为“静态”,它就会停止工作。我稍后会调查。坏类有“按钮”,确实是CButton
子类。)
我为确认问题所做的事情:当我从 中删除 时BS_OWNERDRAW
,CGood::OnNcCreate()
它停止调用DrawItem()
. 所以我确定这就是设置这个标志的地方。
放置一个断点CGood::OnNcCreate()
并且CBad::OnNcCreate(),
CBad 根本不会被调用。
我在互联网上找到了设置 、 和 的示例BS_OWNERDRAW
,但PreSubclassWindow()
这些都不起作用,在某些情况下,出于我认为我理解的原因。(例如,您不能只在 OnCreate() 中设置标志并调用超类方法,因为它最终不是从您提供的参数而是从其他来源获取标志。)OnCreate()
CreateEx()
我已经尝试将 CBad 的超类更改为 CStatic,但仍然没有调用 OnNcCreate()。
我已经尝试BS_OWNERDRAW
在对话框中进行设置,OnInitDialog()
并且确实可以正确绘制 CBad 按钮子类。所以我知道我不是偶然用其他子类等创建它们的。
c++ - 从资源 id 获取 CButton 控件名称?
我正在使用 C++ MFC,并创建了一个带有 CButtons 的简单对话框,每个 CButtons 都在 .rc 脚本文件中使用其 .bitmap 文件和资源 ID (ID_BUTTON*) 进行映射。
我的 .rc 文件中存在类似的行,在DIALOG
描述中:
在我的项目中,我试图获取每个CButton
对象的资源 ID。我这样做了:
但是如何进一步使用我的资源 ID 来获取CButton
控制文本值?这意味着:
如果没有,有没有具体的获取方式?
mfc - 如何让 CMFCButton 看起来像标准复选框?
彩色背景上的标准 MFCCButton
复选框如下所示:
我想摆脱灰色边缘,但不能让它消失。无论我如何设置控件的大小,它仍然会出现。
将其更改为 anCMFCButton
给出了这个:
这很好,它摆脱了边距,除了现在没有复选标记。我需要那个复选标记。
有什么方法可以用复选标记获得干净的外观?我曾想过将标准图像集传递给CMFCControl::SetImage()
,但我不知道如何获取它们。我知道我可以自己画所有东西,但我试图避免重新发明轮子。
我知道这里有很多类似的问题,但我找到的答案似乎都不适用。我发现的最接近的是:一劳永逸:如何在 Windows API 中获得完全透明的复选框、按钮、单选按钮等,而不是黑色背景?; 但是第一个答案非常神秘,第二个答案是一大段代码,看起来有点矫枉过正。
windows - CButton 向祖先发送 WM_PARENTNOTIFY 消息,但 CMFCButton 不发送。为什么?
我正在开发一个严重依赖 MFC 功能的 Windows 应用程序(使用 VS 2019 构建)。我有一个类派生自CWnd
包含对象(子对象)的类,这些对象(子对象)在该类的处理程序中CMFCButton
动态定义。OnCreate
我希望CMFCButton
对象将WM_PARENTNOTIFY
消息发送给它的祖先,以便他们可以对鼠标事件进行一些额外的处理,但他们没有。我尝试将按钮类型更改为CButton
类,并注意到它WM_PARENTNOTIFY
按预期发送。CMFCButton
和使用所有相同的CButton
参数定义/创建。使用CButton
似乎解决了这个问题,但我也利用扩展CMFCButton
功能来控制按钮的外观。
谁能解释一下这两种按钮类型的行为变化以及我如何才能CMFCButtons
发送WM_PARENTNOTIFY
消息?
mfc - 如何激活位于禁用窗口 (CWnd) 中的按钮 (CButton)?
我有这个代码:
在哪里:
this
=我的派生CWnd
类rc
=CRect
按钮位置BTN_CMT
= 按钮 ID
当前上下文:如果我通过调用
禁用父级,即使我调用按钮 ( ) 上的函数,后者仍保持禁用状态;因此,它没有任何作用:单击,工具提示,...
我试图删除,但没有成功CWnd
EnableWindow(FALSE)
EnableWindow(TRUE)
m_pBtnCom->EnableWindow(TRUE)
WS_CHILD
问题:当窗口(我的代码中
的参数)被禁用时,是否可以激活按钮?this