问题标签 [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.

0 投票
1 回答
575 浏览

c++ - 在使用 C++ 进行 win32 GUI 编程时,如何在 TreeViewCtrl 的根项之前添加扩展按钮?

  1. 在 C++、Win32、TreeCtrl 中,如何在根 TVITEM 前添加扩展按钮,如在“美国”前添加扩展按钮。很抱歉我不能发布图片。所以我试着把它吹起来。

    树视图控件


    /li>
0 投票
1 回答
359 浏览

c++ - WTL,无法创建工具栏

我有一个 SDI 应用程序。框架类是:

我在资源文件中有一个菜单和一个工具栏,两者都有IDR_MAINFRAMEID。菜单已创建,但工具栏未创建。

创建工具栏:

最后,我没有看到任何工具栏。CreateSimpleToolBar返回非零。如何在 WTL sdi-application 中创建工具栏?谢谢/

0 投票
2 回答
3463 浏览

c++ - Clistctrl 选择检测

我一直在玩列表视图并遇到了这篇文章:如何检测 CListCtrl 选择更改?

但是,那里使用的代码有一个主要流程,它不适用于多项选择(如该线程中所指出的那样)。所以我的问题是如何使代码与多选一起工作(例如,使用 shift 或 ctrl 进行选择)?

0 投票
3 回答
609 浏览

c++ - 为什么 CreatePointFont() 可能会为我返回 NULL?

在我的 WTL 应用程序中,我试图更改静态标签的字体。但是 CreatePointFont 返回 NULL。为什么会这样?

0 投票
2 回答
578 浏览

c++ - WTL 和 CContainedWindow 导致访问冲突

我正在尝试使用以下代码在对话框中对进度控件进行子类化:

那里一切都好。现在,如果我尝试这样做:

SendMessage我在一个简单的 WTLSetRange()实现中遇到了访问冲突异常。我一直在上下搜索,我所能找到的只是这可能是“使用旧 ATL 组件的应用程序可能会与 DEP 发生冲突”中提到的一些“thunking”问题,这不应该真正适用于我,因为我使用的是最新的 ATL 和 WTL (Visual Studio 2010 和WTL 8.1)。即使我使用 WTL 8.0,我也会遇到同样的问题。

由于 HWND 有效,子类化完成。有任何想法吗?

0 投票
2 回答
995 浏览

c++ - 列表视图控件因大量列而失去性能

我在报告模式下有一个虚拟列表视图控件,我通过处理 NM_CUSTOMDRAW 通知手动绘制其项目。我遇到的问题是我的性能下降与列数成正比。通过调试代码,我注意到我的 OnCustomDraw 和 OnGetDispInfo 被调用用于在客户端窗口中甚至不可见的项目。

如果我有一个包含 1.000 行和 100 列的列表视图,其中只有 10 行和 5 列可见,我注意到将为这 10 行中的每个元素调用 OnCustomDraw 和 OnGetDispInfo。Listview 将向我发送所有不可见的 95 列的通知。

有没有人遇到过这样的问题?

0 投票
2 回答
2388 浏览

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,你可以安全地让你的框架窗口“自杀”在那里 :)

这样可行!

0 投票
1 回答
392 浏览

c++ - 在 WTL 中灰显向导的关闭按钮

我正在编写一个 WTL Aero 向导,我想将窗口的关闭按钮变灰(它的第一步不需要用户交互并且不能被取消,因此禁用该按钮是非常合适的)。

放置以下代码:

inOnInitDialog不起作用,因为该过程在窗口本身显示在屏幕上之前被调用(ATLASSERT(::IsMenu(m_hMenu));断言 inEnableMenuItem在运行时被触发)。

有没有一种优雅的方法来禁用关闭按钮?(我是 WTL 初学者,我希望解决方案尽可能干净)。

这是向导页面代码的最小版本:

0 投票
1 回答
690 浏览

c++ - 如何使用 ATL/WTL 制作自己的原生(可复制)控件?

当您使用 WTL 时,您可以自由复制表示内置对象的控件:

现在,如果我想制作自己的控件,很容易说:

但现在的问题是我不能简单地说:

因为CMyControl它不仅仅是一个句柄——它包含数据本身!

关于这种复制行为,制作与内置 ATL/WTL 类一致的控件类的正确方法是什么?

0 投票
1 回答
1664 浏览

winapi - ATL/WTL 替代消息映射 (ALT_MSG_MAPs) 如何工作?我什么时候使用它们?

我已阅读文档,其中说:

ATL 支持使用ALT_MSG_MAP宏声明的备用消息映射。
每个备用消息映射由一个唯一编号标识,您将其传递给ALT_MSG_MAP.
使用备用消息映射,您可以在一个映射中处理多个窗口的消息。
请注意,默认情况下,CWindowImpl不使用备用消息映射。
要添加此支持,请覆盖WindowProc您的CWindowImpl派生类中的方法并ProcessWindowMessage使用消息映射标识符进行调用。

当我查看 WTL 时,我会看到如下消息映射:

但是,我不明白:

  • 他们是如何被调用的。(代码如何知道备用消息映射的存在?)

  • 它们与默认消息映射有何不同。他们看起来都在为同一个窗口处理相同类型的消息......

  • 为什么它们有用。(难道他们不都是同一个窗口吗?)

有人对备用消息映射的作用有更好的解释吗?
(为什么发明它们的动机会非常有帮助。)