问题标签 [hwnd]

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 投票
2 回答
2637 浏览

windows - 创建一个带有英文标题栏的 Win32 Window 应用程序,但标题栏突然变成了中文。怎么会?

我正在关注 Win32 Window 应用程序的教程。上面的代码用于设置窗口画面的标题栏名称。编译器对我大喊:“无法从 'const char [12]' 转换为 'LPCWSTR'”,好吧,我用 (LPCWSTR) 对字符串“MyTitleName”进行了类型转换,一切都编译得很好。但是,在运行期间,窗口屏幕的标题竟然是汉字。我试着改变字符串,汉字总是根据我的字符串改变。我正在使用 XP Visual C++ 2008 Express Edition,并且我将英语(美国)作为非 unicode 程序的设置。我不明白。字符串怎么变成中文了?

0 投票
3 回答
21169 浏览

vb6 - 在 VB6 中获取当前窗口/窗体的 hWnd?

如何在 VB6 中获得当前窗口/窗体的 hWnd?

0 投票
4 回答
2347 浏览

wpf - 在 WebBrowser 控件上显示装饰器

我在我的应用程序中使用 System.Windows.Controls.WebBrowser 来处理各种事情,我注意到当装饰器应该出现在 WebBrowser 上时,它们被切断了。我意识到 WebBrowser 控件实际上是一个 COM 组件的包装器,并且可能呈现不同的方式,但我想知道是否有人想出如何解决这个问题。

这是我看到的问题。在这里,我只有一个示例装饰器,它应该在某物的顶角绘制一个大红色圆圈(作为示例)。

当我用这个装饰 WebBrowser 时,我得到了这个结果:

我希望看到完整的圆圈。

这是这个毫无价值的装饰器的代码,以防万一:

以下是我在主机控件的 OnRender 方法中将其应用到浏览器的方法:

有人对此有任何技巧或解决方法吗?

编辑:我正在使用 .NET 4.0,如果这有所作为的话。

编辑#2:WebBrowser 似乎继承自 HwndHost,我已经看到另一个或两个关于装饰器和 hwndsources 的问题,但我没有看到任何看起来我可以为 WebControl 实现它的东西,但希望这是有用的信息某人。

0 投票
4 回答
5220 浏览

wpf - WPF 渲染问题与 HWND 孩子的方式

我想可以肯定地说 WPF 将其内容呈现为窗口背景。没有传统 HWND 意义上的子窗口。因此,当一个人在 WPF 应用程序中引入基于 HWND 的东西时,比如 WebBrowser,事情开始出现问题,因为它的视觉外观方面。

考虑一个窗口,它有一个带有两个孩子、WebBrowser 和其他东西(例如 TextBox)的 Grid。如果 WebBrowser 是一个红色圆圈,则 TextBox 将呈现在它上面。对于 WebBrowser,在任何地方都找不到 TextBox。这是因为 TextBox 被渲染为主窗口的背景,而 WebBrowser 实际上是主窗口的 HWND 子窗口遮蔽了背景。

所以一切都(不)好。如何实现期望的行为?我想在 WebBrowser 上呈现 TextBox。有没有人遇到过这个问题?

我正在考虑拥有第二个透明的顶级无边框 WPF 窗口,将其重新设置为父窗口,以便主窗口拥有它并执行一些其他技巧来实现它。

在我深入研究之前,我想知道是否有人有一个明显或更简单的解决方案?


由 Meleak 更新

我将此赏金提供给任何可以发布 Ray Burns Answer 实现的人AirRepair。我尝试过自己但徒劳无功

0 投票
3 回答
10402 浏览

c++ - 如何将 Direct2D 渲染目标清除为完全透明

我正在尝试在不可见的 HWND 上绘制半透明矩形。但是,清除窗口ID2D1HwndRenderTarget::Clear只会使整个窗口变黑,所以当我在顶部绘制矩形时,它们看起来是半黑色的。

如果我不清除()并且不绘制,那么窗口应该是不可见的。Clear() 是这里的罪魁祸首;但是,如果我不使用它,那么绘画就会非常糟糕。

这是我在 WindowProc 中使用的代码:

提前致谢!

0 投票
2 回答
749 浏览

c++ - Direct2D 窗口在未聚焦时为黑色

我有一个 Direct2D 窗口,它在聚焦时画得很好;但是,当焦点移动到另一个窗口(相同的应用程序或另一个)时,整个窗口都会变黑。我将问题归结为使用ID2D1HwndRenderTarget::Clear. 此功能对我的应用程序至关重要,因为没有它,绘画变得相当……奇怪。

有没有一种方法可以使未聚焦的 Direct2D 窗口正常绘制(注意:WM_PAINT照常调用,如Clear,BeginPaint等都没有错误)

提前致谢。

0 投票
1 回答
1571 浏览

winforms - 绘图问题 ShowWindow(hWnd, SW_HIDE) 会自动使矩形无效吗?

我遇到了一个问题,我有一个包含子窗口的窗口。子窗口包含另一个使用 Windows Media Player 播放视频的子窗口。每当我在父窗口上调用 ShowWindow (hWnd, SW_HIDE) 并在整个表面上绘制时,孙子窗口(播放视频的位置)占据的区域不会被覆盖。我使用了 spy++,发现在重绘发生之前,未被覆盖的区域被设置为隐藏。

我监视了孙窗口的 hwnd,它似乎没有收到任何 WM_EraseBKGND 或 WM_NCPAINT 消息。这是否意味着它所占据的区域没有被无效,因此不能被绘制?我是winforms的新手。

谢谢!

0 投票
2 回答
2284 浏览

c++ - 如何在win32中更改工具栏按钮的位图?

我在一个窗口中使用 ReBar 创建了一个带有一些控件的工具栏。谁能告诉我,

  1. 如果我(仅)知道它的 Id,如何获取按钮/组合框/等(不是窗口中的普通按钮)的 HWND?
  2. 如果我知道资源的 ID,如何获取 HBITMAP?
  3. 如何将位图设置到控制器?

    SendDlgItemMessageW(hWnd, nId, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap);

这不适用于工具栏,不是吗?我找不到方法,请帮助我。谢谢...

问候

编辑:有人请吗?:(

编辑:好的。这些天似乎每个人都很忙。:(顺便说一句,这是一个错误的问题吗?

0 投票
1 回答
683 浏览

c# - 托管表单作为非托管 HWND 的子代

我需要将我的 System.Windows.Forms.Form 显示为非托管 C++ HWND 的子窗口。这是检索 NativeWindow 的 C# SDK 代码:

这是它在插件中的实现方式:

这有效....大部分时间。但它也经常在我第一次调用此代码时失败:

HWND 错误 http://www.freeimagehosting.net/uploads/f29bc27823.png

再次调用它,一切正常。这是怎么回事?!?

0 投票
1 回答
15490 浏览

c# - 如何判断给定的 hWnd 是否仍然有效?

我正在使用生成 Internet Explorer 实例的第三方类。此类有一个属性 hWnd,它返回进程的 hWnd。

稍后,如果应用程序的实例仍然存在,我可能想重用它,所以我需要告诉我的助手类附加到它。在此之前,我想知道给定的 hWnd 是否仍然有效,否则我将生成另一个实例。

如何在 C# 和 .NET 3.5 中做到这一点?