您的位置:首页 > 其它

VC中创建不可改变大小的窗口

2013-02-20 11:21 316 查看
1.创建一个最大化的窗口,并且不能改变其大小

那么首先,

app的InitInstance中

在原来pMainFrame->ShowWindow(m_nCmdShow);

的前面加上

DWORD dwStyle = GetWindowLongm_pMainWnd->m_hWnd, GWL_STYLE);

// dwStyle &= ~(WS_SIZEBOX);

dwStyle &= ~(WS_MAXIMIZEBOX);

dwStyle &= ~(WS_MINIMIZEBOX);

SetWindowLong(m_pMainWnd->m_hWnd, GWL_STYLE, dwStyle);

m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);

然后把m_pMainWnd->ShowWindow(m_nCmdShow);可以删了

这里我把dwStyle &= ~(WS_SIZEBOX);注释调了,因为把这个属性去掉的话,会产生麻烦,就是我这个窗口最大话显示的时候,

会把任务栏也遮了,靠,实在是另人郁闷

2 我希望程序运行时最大化显示,而且不希望之后鼠标在标题栏双击,单击移动等一些动作。

主要用到重载窗口非客户区的一些函数

其操作如下:

第一:在

//{{AFX_MSG(CMainFrame)

//}}AFX_MSG

中间添加

afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);

afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);

afx_msg void OnNcRButtonDown(UINT nHitTest, CPoint point);

第二:在消息映射中

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

//{{AFX_MSG_MAP(CMainFrame)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

添加

ON_WM_NCLBUTTONDBLCLK()

ON_WM_NCLBUTTONDOWN()

ON_WM_NCRBUTTONDOWN()

第三:在源文件中实现这些函数

void CMainFrame::OnNcLButtonDblClk(UINT nHitTest, CPoint point)

{

if(nHitTest!=HTCAPTION)

CWnd::OnNcLButtonDblClk(nHitTest, point);

else

return;

}

void CMainFrame::OnNcLButtonDown(UINT nHitTest, CPoint point)

{

if(nHitTest!=HTCAPTION)

CWnd::OnNcLButtonDblClk(nHitTest, point);

else

return;

}

void CMainFrame::OnNcRButtonDown(UINT nHitTest, CPoint point)

{

if(nHitTest!=HTCAPTION)

CWnd::OnNcLButtonDblClk(nHitTest, point);

else

return;

}

这样就大功告成啦!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: