【问题标题】:Windows GUI : attempting a Paint.net style pannelWindows GUI:尝试 Paint.net 风格的面板
【发布时间】:2015-11-26 15:26:54
【问题描述】:

我需要为 3D 建模应用程序实现 GUI。到目前为止,我已经实现了一个 Windows 功能区菜单 - 现在我需要添加面板来添加控件。到目前为止,我能找到的最好的模型是Paint.net 控制面板。所以我正在寻找看起来和行为都像这样的东西。

我期待模仿的功能(如上图所示):

  • 细边框
  • 面板标题
  • 右上角的小关闭按钮
  • 薄窗口标题
  • 条件垂直滑块
  • 面板应始终位于应用程序主窗口的顶部
  • 面板不应位于主应用窗口前面的其他应用之上
  • 面板/窗口不应在窗口任务栏中弹出新项目
  • 模糊透明度是可选的
  • 带按钮的小页脚也不错

到目前为止,这是我所取得的成就(代码如下):

这是一个非常基本的窗口 - 有几个问题很明显:

  • 窗口布局是标准的应用窗口布局(粗边框+我不喜欢圆角)
  • 它有一个标题,但它的标题中没有按钮
  • 如果不需要,垂直滚动条不会隐藏
  • 窗口在 Windows 任务栏中弹出它自己的图标
  • 窗口位于所有窗口化应用之上,而不仅仅是应用主窗口

到目前为止的代码:

// Model structure pannel
wndClass.lpszClassName = "StructurePannel";
if (!RegisterClassEx(&wndClass)) return -1;
g_WindowHandlePannelStructure = CreateWindowEx(
    WS_EX_TOPMOST,
    "StructurePannel",
    "Model Structure Pannel",
    WS_BORDER | WS_CAPTION | WS_OVERLAPPED | WS_POPUP | WS_SIZEBOX | WS_VSCROLL,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    300,
    550,
    NULL,
    NULL,
    hInstance,
    NULL);

我正在找人给我一个完整的 Paint.net 样式面板示例 - 或为我指出一个好的代码示例。 我已经下载了最新的开源 PDN 源代码,但不知道从哪里开始寻找负责这部分 UI 的代码。一个受过教育的方向也是受欢迎的:-)

【问题讨论】:

  • 相信你在找WS_EX_TOOLWINDOWextended window style
  • 嗯,我会检查一下,如果你是正确的,让你把这个作为答案 - 今晚晚些时候。
  • 我不确定这是否会涵盖您想要的所有功能,但它应该让您看起来不会出现在任务栏中。
  • 是的,这就是我要找的!谢谢。如果您将此作为答案,我会接受。干杯。

标签: windows user-interface c++11 window paint.net


【解决方案1】:

使用CreateWindowEx(...)extended window style WS_EX_TOOLWINDOW 应该可以获得所需的窗框外观。

它还会处理:

  • 面板/窗口不应在窗口任务栏中弹出新项目

但我不确定它是否/如何影响“始终处于领先地位”。

【讨论】:

  • “始终在顶部”-ness 是通过为面板提供父窗口和 WS_CHILD 样式来实现的。现在我的面板的行为完全符合我的要求 :) 另外,可以使用 WS_EX_LAYERED (msdn.microsoft.com/en-us/library/windows/desktop/…) 扩展样式和对 SetLayeredWindowAttributes(...) (msdn.microsoft.com/en-us/library/windows/desktop/…) 的调用来设置透明度。
  • 更正:确切的窗口模板是:WS_EX_TOOLWINDOW | WS_EX_LAYERED 作为扩展样式,WS_CAPTION | WS_SIZEBOX | WS_SYSMENU 作为样式。也允许显示关闭按钮。
猜你喜欢
  • 2011-10-04
  • 2011-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
相关资源
最近更新 更多