递归火山软件开发平台

标题: @飞扬工作室 视窗的创建窗口有错误 [打印本页]

作者: urenai    时间: 2024-2-27 12:40
标题: @飞扬工作室 视窗的创建窗口有错误


例如设置无边框,但窗口被创建后会先显示为有边框,然后 闪一下 才改变为 无边框。


  1. //   在创建窗口前本方法会被提前调用,此时需要根据用户所设置的相关属性将pCreateParam->m_dwStyle和
  2. // pCreateParam->m_dwExStyle设置完整,以便调用方据此将窗口的用户区尺寸转换到窗口尺寸.
  3. void CVWnd_WinForm::OnPrepareWindowStyle (CVolNativeWndCreateParam* pCreateParam)
  4. {
  5. #ifndef _VOL_FOR_UI_DESIGNER  // 不为编译布局设计器专用版本?
  6.     if (IsEmptyStr (pCreateParam->m_szCaption) && m_blpControlBox)
  7.         pCreateParam->m_szCaption = _T_VOL_USER_APP_NAME;

  8.     // if (m_blpTransparent)
  9.         // pCreateParam->m_dwExStyle |= WS_EX_TRANSPARENT;
  10. #endif

  11.     pCreateParam->m_dwStyle |= WS_CLIPCHILDREN;

  12.     if (m_npBorderType != 0)
  13.     {
  14.         if (IsEmptyStr (pCreateParam->m_szCaption) == FALSE || m_blpControlBox)
  15.             pCreateParam->m_dwStyle |= (WS_CAPTION | WS_BORDER);

  16.         if (m_blpControlBox)
  17.             pCreateParam->m_dwStyle |= (WS_SYSMENU | WS_BORDER);

  18.     #ifndef _VOL_FOR_UI_DESIGNER  // 不为编译布局设计器专用版本?
  19.         pCreateParam->m_dwStyle |= WS_DLGFRAME;
  20.     #else
  21.         pCreateParam->m_dwExStyle |= WS_EX_DLGMODALFRAME;
  22.     #endif

  23.         if (m_blpMaxBtn)
  24.             pCreateParam->m_dwStyle |= WS_MAXIMIZEBOX;
  25.         if (m_blpMinBtn)
  26.             pCreateParam->m_dwStyle |= WS_MINIMIZEBOX;
  27.     }

  28.     switch (m_npBorderType)
  29.     {
  30.     case 1:  // 普通可调边框
  31.         pCreateParam->m_dwStyle |= WS_THICKFRAME;
  32.         break;
  33.     case 2:  // 普通固定边框
  34.         break;
  35.     case 3:  // 窄标题可调边框
  36.         pCreateParam->m_dwStyle |= WS_THICKFRAME;
  37.     case 4:  // 窄标题固定边框
  38.         pCreateParam->m_dwExStyle |= WS_EX_TOOLWINDOW;
  39.         break;
  40.     case 5:  // 凹入式可调边框
  41.         pCreateParam->m_dwStyle |= WS_THICKFRAME;
  42.     case 6:  // 凹入式固定边框
  43.         pCreateParam->m_dwExStyle |= WS_EX_CLIENTEDGE;
  44.         break;
  45.     default:
  46.         ASSERT (m_npBorderType == 0);  // 无边框
  47.         break;
  48.     }
复制代码



作者: urenai    时间: 2024-2-27 12:41
换句话讲,不管你如何设置属性,他始终会以默认 风格创建,

创建完毕后才会 使 设置风格生效
作者: 白雪皑皑0306    时间: 2024-2-27 13:48
先设置可视窗口为假,打开程序后,在创建完成事件里再把窗口的可视设置为真,这样就不会出现闪了
作者: urenai    时间: 2024-2-27 15:51
白雪皑皑0306 发表于 2024-2-27 13:48
先设置可视窗口为假,打开程序后,在创建完成事件里再把窗口的可视设置为真,这样就不会出现闪了 ...

歪招是有的,可明明已知是错误,就应当修复。
作者: 兵三进一    时间: 2024-2-27 20:48
本帖最后由 兵三进一 于 2024-7-22 07:48 编辑
urenai 发表于 2024-2-27 15:51
歪招是有的,可明明已知是错误,就应当修复。



作者: LThs    时间: 2024-2-29 16:42
不管问题大小,有问题提出来就是好的,希望老吴能看见 修复 完善火山开发平台




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4