问题标签 [wtl]
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.
c++ - 在使用 C++ 进行 win32 GUI 编程时,如何在 TreeViewCtrl 的根项之前添加扩展按钮?
在 C++、Win32、TreeCtrl 中,如何在根 TVITEM 前添加扩展按钮,如在“美国”前添加扩展按钮。很抱歉我不能发布图片。所以我试着把它吹起来。
树视图控件
/li>
c++ - WTL,无法创建工具栏
我有一个 SDI 应用程序。框架类是:
我在资源文件中有一个菜单和一个工具栏,两者都有IDR_MAINFRAME
ID。菜单已创建,但工具栏未创建。
创建工具栏:
最后,我没有看到任何工具栏。CreateSimpleToolBar
返回非零。如何在 WTL sdi-application 中创建工具栏?谢谢/
c++ - Clistctrl 选择检测
我一直在玩列表视图并遇到了这篇文章:如何检测 CListCtrl 选择更改?
但是,那里使用的代码有一个主要流程,它不适用于多项选择(如该线程中所指出的那样)。所以我的问题是如何使代码与多选一起工作(例如,使用 shift 或 ctrl 进行选择)?
c++ - 为什么 CreatePointFont() 可能会为我返回 NULL?
在我的 WTL 应用程序中,我试图更改静态标签的字体。但是 CreatePointFont 返回 NULL。为什么会这样?
c++ - WTL 和 CContainedWindow 导致访问冲突
我正在尝试使用以下代码在对话框中对进度控件进行子类化:
那里一切都好。现在,如果我尝试这样做:
SendMessage
我在一个简单的 WTLSetRange()
实现中遇到了访问冲突异常。我一直在上下搜索,我所能找到的只是这可能是“使用旧 ATL 组件的应用程序可能会与 DEP 发生冲突”中提到的一些“thunking”问题,这不应该真正适用于我,因为我使用的是最新的 ATL 和 WTL (Visual Studio 2010 和WTL 8.1)。即使我使用 WTL 8.0,我也会遇到同样的问题。
由于 HWND 有效,子类化完成。有任何想法吗?
c++ - 列表视图控件因大量列而失去性能
我在报告模式下有一个虚拟列表视图控件,我通过处理 NM_CUSTOMDRAW 通知手动绘制其项目。我遇到的问题是我的性能下降与列数成正比。通过调试代码,我注意到我的 OnCustomDraw 和 OnGetDispInfo 被调用用于在客户端窗口中甚至不可见的项目。
如果我有一个包含 1.000 行和 100 列的列表视图,其中只有 10 行和 5 列可见,我注意到将为这 10 行中的每个元素调用 OnCustomDraw 和 OnGetDispInfo。Listview 将向我发送所有不可见的 95 列的通知。
有没有人遇到过这样的问题?
c++ - 如何在 WTL 中删除指向无模式对话框的指针
在 MainDlg 函数中
在 CMyDlg
所以 CMyDlg* dlg 指针将丢失......(内存泄漏)
我用谷歌搜索模型对话框。请注意 msdn.com 中的消息
http://msdn.microsoft.com/en-us/library/zhk0y9cw(VS.80).aspx
注意:这个示例使用了一个非常简单的机制:它在 PostNcDestroy 中执行 delete this——一个在盒子的非客户区被销毁后调用的函数。
但那是在 MFC 中。我将它用于 WTL 。什么时候删除这个;它将被断言
所以:
删除指向无模式对话框的指针的正确方法是什么?
谢谢你的帮助!
完毕:
http://tech.groups.yahoo.com/group/wtl/message/4444
OnFinalMessage 是 WTL 的等价于 MFC 的 PostNCDestroy,你可以安全地让你的框架窗口“自杀”在那里 :)
这样可行!
c++ - 在 WTL 中灰显向导的关闭按钮
我正在编写一个 WTL Aero 向导,我想将窗口的关闭按钮变灰(它的第一步不需要用户交互并且不能被取消,因此禁用该按钮是非常合适的)。
放置以下代码:
inOnInitDialog
不起作用,因为该过程在窗口本身显示在屏幕上之前被调用(ATLASSERT(::IsMenu(m_hMenu));
断言 inEnableMenuItem
在运行时被触发)。
有没有一种优雅的方法来禁用关闭按钮?(我是 WTL 初学者,我希望解决方案尽可能干净)。
这是向导页面代码的最小版本:
c++ - 如何使用 ATL/WTL 制作自己的原生(可复制)控件?
当您使用 WTL 时,您可以自由复制表示内置对象的控件:
现在,如果我想制作自己的控件,很容易说:
但现在的问题是我不能简单地说:
因为CMyControl
它不仅仅是一个句柄——它包含数据本身!
关于这种复制行为,制作与内置 ATL/WTL 类一致的控件类的正确方法是什么?
winapi - ATL/WTL 替代消息映射 (ALT_MSG_MAPs) 如何工作?我什么时候使用它们?
ATL 支持使用
ALT_MSG_MAP
宏声明的备用消息映射。
每个备用消息映射由一个唯一编号标识,您将其传递给ALT_MSG_MAP
.
使用备用消息映射,您可以在一个映射中处理多个窗口的消息。
请注意,默认情况下,CWindowImpl
不使用备用消息映射。
要添加此支持,请覆盖WindowProc
您的CWindowImpl
派生类中的方法并ProcessWindowMessage
使用消息映射标识符进行调用。
当我查看 WTL 时,我会看到如下消息映射:
但是,我不明白:
他们是如何被调用的。(代码如何知道备用消息映射的存在?)
它们与默认消息映射有何不同。他们看起来都在为同一个窗口处理相同类型的消息......
为什么它们有用。(难道他们不都是同一个窗口吗?)
有人对备用消息映射的作用有更好的解释吗?
(为什么发明它们的动机会非常有帮助。)