【问题标题】:How to deny window-resizing using WTL?如何拒绝使用 WTL 调整窗口大小?
【发布时间】:2014-01-23 18:09:40
【问题描述】:

这个问题给知道 WTL 的人! 请告诉我,如何拒绝窗口使用 WTL 改变自己的大小?或者如何使用 WTL 创建固定大小的窗口?

这是我在 MainFrm.cpp 中的代码的一部分,如果我没记错的话它会创建窗口:

m_hWndClient = m_view.Create(m_hWnd, rcDefault, NULL, WS_CHILDWINDOW | WS_VISIBLE);

这是我在 ...View.cpp 文件中的代码的一部分,它处理窗口大小调整:

LRESULT CPictureInCenterView::OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM 
/*lParam*/, BOOL& /*bHandled*/) 
{ 
  CRect rcClient;
  GetClientRect(&rcClient);
  clientWidth = rcClient.Width(); 
  clientHeight = rcClient.Height();

  if (!m_pBackBuffer.get() || 
  (clientWidth > m_pBackBuffer->GetWidth()) || 
  (clientHeight > m_pBackBuffer->GetHeight()) 
  ) 
  { 
    m_pBackBuffer.reset( 
    new Gdiplus::Bitmap(clientWidth, clientHeight, PixelFormat32bppARGB)); 
  }  
  return 0; 
}

谢谢!!!

【问题讨论】:

  • AFAIR 是一个窗口属性,用于确定它的大小是可调整的还是固定的。
  • 好的,但是在哪里设置呢?

标签: c++ visual-studio wtl


【解决方案1】:

最简单的方法是更改​​窗口样式并从那里删除sizing frame style

Window.ModifyStyle(WS_THICKFRAME, 0);

否则,您还可以处理窗口上的WM_WINDOWPOSCHANGINGWM_GETMINMAXINFO 消息并随时限制窗口大小。

请注意,您在上面的问题中引用的窗口创建是用于视图,即用于子窗口。这不是您要阻止调整大小的窗口。

【讨论】:

    猜你喜欢
    • 2011-10-06
    • 2012-07-02
    • 2011-02-25
    • 2017-06-20
    • 2021-09-20
    • 1970-01-01
    • 2023-03-24
    • 2011-10-01
    • 1970-01-01
    相关资源
    最近更新 更多