- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有以下用于调整窗口内选项卡控件大小的代码:
HDWP hDWP = BeginDeferWindowPos(5);
HDWP hDWPUpdated = DeferWindowPos(hDWP,
hWinParent,
hTabControl,
nullptr,
0,
0,
newTabSize.cx,
newTabSize.cy,
SWP_NOZORDER
);
DeferWindowPos
可能会导致底层结构大小增加,例如,如果页面数多于最初指示的页面数。在这种情况下,hDWPUpdated
将是更新位置结构的句柄。有没有办法检测这种结构尺寸更新?我正在考虑比较 hDWP
和 hDWPUpdated
:
if(hDWPUpdated != hDWP)
{
// Reallocation took place...
}
但是documentation仅声明:
[...] The handle returned by this function may differ from the handle passed to the function.
这让我想到即使结构大小可能没有改变,句柄也可能不一样。我可以假设如果 Handlebars 不一样,那么尺寸就不同吗?如果没有,我该怎么做?
最佳答案
句柄旨在隐藏所有实现细节。您无法比较句柄后面的结构内容,也无法推断句柄发生变化时的任何内容。
您可以做的一件事是自己跟踪对DeferWindowPos
的调用次数。我质疑它是否值得,因为 DeferWindowPos
设计用于无论您是否预测移动的窗口数量。任何效率方面似乎都可能在噪音中丢失。但如果您坚持,我的建议是创建一个类来为您跟踪这一切并提供一点 RAII。
class CDefer
{
int m_nRemaining;
HDWP m_hDWP;
public:
CDefer(int nMaxDefers) : m_nRemaining(nMaxDefers)
{
m_hDWP = BeginDeferWindowPos(nMaxDefers);
}
~CDefer()
{
EndDeferWindowPos(m_hDWP);
}
void DeferWindowPos(HWND hWnd, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags)
{
m_hDWP = ::DeferWindowPos(m_hDWP, hWnd, hWndInsertAfter, x, y, cx, cy, uFlags);
ASSERT(m_nRemaining > 0);
--m_nRemaining;
}
};
关于c++ - 如何知道 DeferWindowPos() 是否导致重新分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48695950/
所有 ActiveX 控件都会出现这种情况。如果我使用 DeferWindowPos 重新定位 ActiveX 控件 HDWP hdwp = BeginDeferWindowPos(1); Defer
我正在使用 DeferWindowPos 功能进行一系列窗口大小调整。假设我已经打开了 DeferWindowPos 句柄,并调用了几次 DeferWindowPos,现在我想取消一切:不调用 End
假设我有以下用于调整窗口内选项卡控件大小的代码: HDWP hDWP = BeginDeferWindowPos(5); HDWP hDWPUpdated = DeferWindowPos(hDWP,
我正在编写一个使用 DeferWindowPos API 函数的虚拟桌面应用程序。如果窗口不在当前虚拟桌面上,我目前使用的方法是将它们移出屏幕。但是我知道还希望隐藏屏幕外的窗口,这样它们就不会出现在任
我正在考虑增加对 DeferWindowPos 的使用。到目前为止,我在一些简单的情况下使用它,并没有发现任何问题。你知道任何陷阱吗? FLeft/FTop/... 字段没有正确更新或类似的事情? 最
我是一名优秀的程序员,十分优秀!