如何使用WTL拒绝窗口大小调整?

时间:2014-01-06 10:46:44

标签: c++ visual-studio wtl

对于知道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; 
}

感谢!!!

1 个答案:

答案 0 :(得分:2)

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

Window.ModifyStyle(WS_THICKFRAME, 0);

否则,您还可以在窗口上处理WM_WINDOWPOSCHANGINGWM_GETMINMAXINFO消息并限制窗口大小调整。

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