Windows GUI:尝试使用Paint.net样式面板

时间:2015-11-26 15:26:55

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

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

Paint.net UI

我期待模仿的特征(如上图所示):

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

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

App UI so far

这是一个非常基本的窗口 - 几个问题显而易见:

  • 窗口布局是标准的应用程序窗口布局(粗边框+我不喜欢圆角边缘)
  • 它有标题,但标题中没有按钮
  • 如果不必要,垂直滚动条不会隐藏
  • 窗口在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风格的pannel示例 - 或者指出一个很好的代码示例。 我已经下载了最新的开源PDN源代码,但不知道从哪里开始寻找负责这部分UI的代码。也欢迎受过良好教育的方向: - )

1 个答案:

答案 0 :(得分:1)

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

它还将照顾:

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

但我不确定它是否会影响"总是排在最前面" -ness。