问题标签 [cwnd]

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 回答
335 浏览

mfc - 如何在 UWP 中创建类似 CWnd (MFC) 的窗口

我之前有一个用 MFC 编写的绘图应用程序,现在我考虑使用 UWP 将其升级到通用世界。
应用程序结构如下: 结构

其中包括:
1. App级(MFC代码):文件管理。
2.绘图库(MFC代码):提供一个视图(扩展CWnd)用于绘图到App。
3.绘图库(C++代码):绘图引擎。

使用 UWP,似乎我只能重用引擎代码 C++ 并从 App 和绘图库 MFC 重新开始。

问题是我仍然无法在 UWP 中找到等效的 CWnd 来在不使用 XAML 的情况下创建绘图视图。任何人都可以有解决方案吗?

谢谢,

0 投票
0 回答
149 浏览

tcp - TCP拥塞控制是如何工作的

我不明白如何计算 CWND 阈值,我正在学习的来源只是说:

“ssthresh 的初始值可以设置为任意高的值(或广告窗口的大小)”

CWND和segments-to-transmit有什么区别?

问题图片

0 投票
1 回答
626 浏览

c++ - CWnd::SetRedraw(False) 使鼠标穿过窗口

所以我有一个 MFC 应用程序,当我们执行某些操作时它会闪烁。所以我想我会SetRedraw(false)在函数结束时将其设置为 true。

该应用程序不再刷新,但是如果我在 while 中单击它SetRedraw(false),我的光标不会被我的应用程序捕获,它会通过它并将焦点放在下面的应用程序上。

任何人都知道我该如何解决这个问题。

0 投票
1 回答
389 浏览

winapi - 创建单独的 MFC GUI 线程,不能移动/调整大小/最大化 CWnd

我正在创建一个CWinThread将拥有自己的 GUI。当我在该线程上创建一个CWnd时,它会显示,但我无法移动窗口。我确信消息泵正在运行,因为我可以MoveWindow从另一个线程执行,并且窗口移动。

UIThread.h

UIThread.cpp

主文件

我可以看到窗口,但我无法移动/最大化/调整它的大小。

可见窗口

0 投票
1 回答
263 浏览

mfc - 在 cwnd 中绘制 mfc 组件

我创建了一个 cwnd 类,它显示了一个带有按钮的 retangle,但我不想自己绘制一个按钮,而是委托给按钮组件。

原样....

正如我想成为的那样......

请问,我该怎么办?

Ps.:不幸的是,我不能使用 Dialog 类

0 投票
1 回答
209 浏览

c++ - 调用 CWnd::InvokeHelper 时出现类型不匹配错误

所以我尝试调试程序,一旦我进入 Windows API 函数调用,事情就会变得有点疯狂,而且调试这些文件并没有太多帮助,因为我无论如何都无法更改它们。基本上我坚持的是以下两个我可以更改的功能(仅供参考,这是非常旧的代码,程序在 32 位版本中工作,但是当转换为 64 位时,会出现此问题):

然后我们有执行此操作的 AddListener 调用

我知道 InvokeHelper 函数通过调试抛出异常。我似乎只了解 parms[] 让 InvokeHelper 知道它正在获取哪些类型的参数以及有多少。我查阅了定义,发现事实上

因此,我告诉 InvokeHelper 期望的正确参数类型,所以我不明白为什么每次运行程序时都会在弹出窗口中出现类型不匹配错误......关于我的 InvokeHelper 为什么抛出类型不匹配错误的任何想法?

我试图查看InvokeHelper方法文档,这真的很令人困惑......我所知道的是它抛出了文档中提到的COleException并且从 Invoke 方法返回的 SCODE 是 -2147352571

0 投票
1 回答
315 浏览

c++ - C++“var foo = !!::bar()”语法?

寻找有关如何使用 HWND 窗口进入全屏模式的一些解释,我发现了这个响应Win32: full-screen and hidden taskbar

铬响应代码有这一行:

从此文件https://src.chromium.org/viewvc/chrome/trunk/src/ui/views/win/fullscreen_handler.cc?revision=HEAD&view=markup第 56 行

我读:

这个对吗 ?

这个“!!::IsZoomed()”是什么意思?

为什么不只是

?

0 投票
2 回答
1084 浏览

c++ - MFC:从另一个线程调用 CWnd 方法是否安全?

其实我有两个问题:

  1. SendMessage从工作线程调用是否安全?
  2. CWnd方法,例如,在幕后MessageBox调用 API 函数吗?SendMessage

据我了解,当工作线程调用时SendMessage,它会将消息推送到 UI 线程的消息队列中,并等待该消息被处理。在这种情况下,这样做是安全的。

我不太确定这一点。如果我错了,请纠正我。

非常感谢。

- - - - - - - - - - - - 更新 - - - - - - - - - - - - - ---------

作为结论:

  • 调用 windows API::SendMessage::PostMessage跨线程是安全的。
  • CWnd跨线程调用方法是不安全的。有些方法可能是安全的,但不能保证。

非常感谢大家。

0 投票
1 回答
106 浏览

c# - 将托管控制托管为 CWnd 时应用程序挂起

我的应用程序具有基于 ATL 的 GUI(CWnd、CDialog、...),它由多个页面(CDialog)组成。其中一个页面是空的,但它有一个占位符框架 (CWnd),可随对话框调整大小。一切都构建为 x64。

当页面加载时,它使用 COM 互操作从应用程序的托管 (C#) 端请求控制句柄,并将控件作为从该句柄创建的 CWnd 添加到对话框:

托管实施简化:

原生端简化:

我已经多次这样做了,它通常完全按原样工作。但有时,就像现在一样,我遇到应用程序挂起,没有任何明确的原因。在我目前的控制下,这似乎发生在焦点设置到其他桌面应用程序后大约 5 秒。

我已经验证问题不在托管控件的生命周期或 GC 中。此外,它在调试构建中是可重现的,因此不应该归咎于优化。当挂起发生时,我可以附加调试器并看到一些 ATL 循环继续运行,但这是我能够在堆栈中看到的唯一一段代码(imo 这表明消息循环以某种方式陷入无限循环而没有与我的代码)。

现在要修复脏东西:我在托管控件中添加了一个单独的线程,该线程每秒在 UI 线程上调用 this.Focus()。显然这是一个荒谬的技巧,但只要我在每次用户打开连击等时暂停聚焦(否则它们每秒都会关闭),它就可以工作。

我做错了什么或者什么可能导致这种有些不可预测的行为?

0 投票
1 回答
100 浏览

mfc - MFC:使用 CTreeCtrl 和 CToolbar 创建一个类(CWnd?)

我有一个CDialog基于应用程序的应用程序,它有两个并排的,CTreeCtrl并且两棵树在它们之上几乎相同CToolbars。目前,当对话框从其中一个工具栏接收到消息时,它会将消息传递给相应的树。我想创建一个新类,可能从 CWnd 派生,其中包含 oneCTreeCtrl和 one CToolbar。这个新类会将消息从它的一个工具栏传递到它的一棵树。它将删除大量冗余代码(大概)简化正在进行的开发。

我的问题是,CWnd这个任务是否合适(结合 aCTreeCtrlCToolbar)?

谢谢!