【问题标题】:Create a windows panel that is invisible that still accepts click message创建一个仍然接受点击消息的不可见窗口面板
【发布时间】:2011-10-03 09:03:20
【问题描述】:

我在 Visual Studio 2010 Express Edition 中使用 c++/cli。

我想要做的是创建一个不可见的面板,但它仍然接受/接收单击和双击消息以及可能的其他鼠标输入。如果我将控件可见性设置为 FALSE,那么这似乎会禁用任何鼠标输入。

我已尝试获取绘制消息并且什么都不做(正如其他来源所建议的那样)以尝试使面板根本不绘制但不是不可见,但面板似乎仍在绘制。

我应该在绘制消息中做什么来告诉窗口我已经绘制了面板?

我的面板绘图功能是:

    private: System::Void panel1_Paint(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e) {
         }

如果对我如何实现这一点有任何其他建议,那将很有帮助。

【问题讨论】:

  • 不可见的控件不能接收焦点,因此不能接收任何键盘或鼠标事件。 Panel 类也不是为了接收焦点而设计的,它无法向用户显示它拥有焦点。您真正想要完成什么。

标签: windows winforms c++-cli


【解决方案1】:

最后我放弃了这个想法,问题是要找到一种方法来从一个由 NativeWindow 类“作为父对象”的窗口获取鼠标输入。这意味着我期望接收消息的窗口(子窗口)没有收到消息。

为了获取消息,您需要覆盖父 NativeWindow 类中的事件处理程序。在这里你可以处理事件这是我得到解决方案的地方:

http://msdn.microsoft.com/en-us/library/system.windows.forms.nativewindow.createhandle.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    相关资源
    最近更新 更多