问题标签 [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 投票
0 回答
889 浏览

winapi - Win32 / WTL-我的复选框图像列表状态恢复为未选中状态

我正在 WTL 中创建一个自定义窗口来保存 DirectShow 应用程序的视频控件。

我创建了一组复选框,我希望它们以“类似推送”的方式运行 (BS_PUSHLIKE)。它们出现在对话框的 .rc 文件中,如下所示:

我还为按钮加载了一个图像列表,当按钮处于 LButtonDown 和 LButtonUp 状态时,它会正确显示适当的图像:

在下面的代码中,m_btnVid1 被定义为 WTL::CBitmapButton

只要我松开鼠标按钮,复选框状态就会恢复为“未选中”状态。

我在 IDC_VID1 控件中添加了 COMMAND_ID_HANDLER_EX 来确定控件的状态,但 nState 变量始终为 0:

任何人都可以提出为什么会这样 - 我是否缺少 CBitmapButton 中的创建风格?

如果有帮助,我相信我可以以某种方式在线发布 VC2008 解决方案文件。

0 投票
1 回答
1407 浏览

winapi - 为什么我的所有者绘制列表框的DrawItem方法不能调用

我尝试用 WTL 编写一个所有者绘制列表框。我的代码看起来像这样

我还添加REFLECT_NOTIFICATIONS了父消息循环,并在属性表中将 Owner Draw 设置为 Fixed。但是我还是收不到消息。然后我用spy++查看了listbox收到的消息,发现有些消息很奇怪(WM_USER+7211)。
我的操作系统是 WinXp 并使用 VS2008。

0 投票
1 回答
1740 浏览

winapi - 最小化或还原时没有 WM_SIZE 消息

根据 MSDN,当窗口最小化或恢复时,应将 WM_SIZE 发送到窗口。但是我的应用程序窗口,即 WTL CDialogImpl 在最小化或恢复时永远不会得到 WM_SIZE。

我使用 spy++ 来检查它,我可以得到 WM_SYSCOMMAND、WM_WINDOWPOSCHANING、WM_ACTIVE、WM_ACTIVEAPP 等,但没有 WM_SIZE。

我检查了一些其他 WTL 示例应用程序,最小化或恢复时我能够获得 WM_SIZE msg。

我的问题是为什么我的 WTL CDialogImpl 窗口没有收到 WM_SIZE?除此之外,是否有任何其他消息指示还原或最小化完成?我的意思是,在系统中,大多数时候,都有动画来显示最小化/恢复过程。我需要一条消息或事件让应用知道动画在恢复时完成。

谢谢!

威廉·L。

0 投票
3 回答
8767 浏览

c++ - 带有 WS_EX_COMPOSITED 的无闪烁选项卡控件

我有一个使用 WTL 8.1 开发的用于 Windows XP SP3 的 VS2008 C++ 应用程序。我的应用程序包含一个选项卡控件,该控件在调整应用程序边框大小时闪烁。

我的窗口层次结构如下所示:

我正在尝试的解决方案是让CFrameWindowImpl派生类使用该WS_EX_COMPOSITED样式,并且它下面的所有窗口都使用该WS_EX_TRANSPARENT样式。不幸的是,这使得选项卡控件按钮显示为一个空的黑条,并且任何配置视图的控件根本不显示。

如果我删除WS_EX_COMPOSITEDandWS_EX_TRANSPARENT样式,表单会正确显示,但是CTabView在调整大小时,它下面的所有内容都会可怕地闪烁。

我需要更改什么来消除闪烁并正确绘制控件?

谢谢,保罗


编辑:让它工作。根据 Mark Ransom 的建议,我删除了所有WS_EX_TRANSPARENT样式。我WS_EX_COMPOSITED样式放在(包含在 中)。其他控件根据需要通过.CTabCtrlCTabViewWTL::CDoubleBufferImpl<>

0 投票
1 回答
278 浏览

atl - 如何在 ATL 或 WTL 中触发菜单项单击事件?

目前我正在使用 ON_WM_SELECT messgae,但它会在鼠标悬停在菜单上时触发。

0 投票
1 回答
397 浏览

c++ - 如何使用 WTL 或 Windows SDK(无 MFC)创建 TitleAreaDialog?

我正在尝试使用 WTL 或 Windows SDK(请不要使用 MFC)创建 TitleAreaDialog。从谷歌我可以找到这两个链接:

  1. http://www.codeproject.com/KB/dialog/dialogheader.aspx(MFC文章)
  2. http://www.codeproject.com/KB/dialog/taskdialogs.aspx (怀疑..如何使用它)

所需的输出类似于 eclipse JFace TitleAreaDialog(见下图)。

标题区域对话框

请建议一种使用 sing WTL 或 Windows SDK(使用 c++)的方法。

谢谢

0 投票
2 回答
1042 浏览

windows - 我应该使用 SendDlgItemMessage 还是在 WTL 中有一个包装器?

我将一个 Listbox 控件添加到名为IDC_LIST1. 我应该使用 与此控件进行交互SendDlgItemMessage(),还是使用 WTL 有更好的方法?这是我的事件处理程序。它还没有什么花哨的!

0 投票
2 回答
1503 浏览

c++ - Windows 消息循环和 WTL

我试图了解 WTL 的工作方式,而消息循环现在让我感到困惑。

例如这个代码片段:link

首先创建窗口,然后启动消息泵。它是如何工作的?CreateEx、UpdateWindow 等不应该发送自己的不可见消息,如 WM_CREATE/WM_PAINT/WM_NCPAINT?如果消息泵未初始化,它们会被扔到哪里?如果你创建一个窗口,启动消息循环,然后关闭窗口,但又想在它的位置创建一个新窗口,会发生什么?PostQuit 退出循环,您必须创建一个新循环?

0 投票
1 回答
527 浏览

visual-studio-2010 - VC++ 2010 template typedef typename error

I am trying to migrate a project to VC++ 2010 The project contains the file TabbedMDI.h (by Danial Bowen) which gives the error "named followd by '::' must be a class or namespace name for the line "typedef typename TClient::TTabCtrl TTabCtrl;"

code snipit follows

0 投票
2 回答
467 浏览

c++ - WTL/Winapi 消息处理程序中的模态窗口

我有一个小型应用程序,它有一个仅用于后台处理的消息 WTL 窗口。但是在某些情况下,我想显示一个应该表现为模态的窗口,也就是说,只有消息窗口的消息处理程序在用户单击按钮之前不应该返回。

我在想我可以这样做(伪代码):

但是当我尝试时,窗口创建得很好,但是按一个键会在模态窗口编辑框中输出数十个字符,而不是像常规窗口中的单个字符。

很可能我做错了什么,但我不知道什么和什么应该是正确的方法。模态窗口完全是代码生成的。