MFC重繪非客戶區

2021-07-04 08:11:01 字數 1264 閱讀 4713

1.去除視窗邊框和標題欄

oninitdialog函式,去除視窗邊框和標題欄

dword dwstyle = getstyle();

dwnewstyle&=dwstyle;

setwindowlong(m_hwnd,gwl_style,dwnewstyle);

dword dwexstyle = getexstyle();

dword dwnewexstyle = ws_ex_left |ws_ex_ltrreading |ws_ex_rightscrollbar;

dwnewexstyle&=dwexstyle;

setwindowlong(m_hwnd,gwl_exstyle,dwnewexstyle);

2.解決視窗拖動

bool                        m_biszoomed;        //是否最大化
解決視窗不可以拖動,新增

wm_lbuttondown訊息

void cdialogex::onlbuttondown(uint nflags, cpoint point)

cdialog::onlbuttondown(nflags, point);

}

3.拉伸視窗

新增wm_nchittestwm_nclbuttondown

我們先新增乙個變數,

是否可以拉伸,預設初始化為true即可,畢竟視窗拉伸是視窗基本的屬性之一

bool                        m_bextrude;         //是否可以拉伸
lresult cdialogex::onnchittest(cpoint point)

else

return cdialog::onnchittest(point);

}

void cdialogex::onnclbuttondown(uint nhittest, cpoint point)

cdialog::onnclbuttondown(nhittest, point);

}

NcPaint重繪非客戶區

1.需要響應wm nccalcsize訊息 2.需要響應ncpaint訊息 3.還需要響應wm size void 類名 onsize uint ntype,int cx,int cy 4.響應active 用於繪製不同情況下的標題。void 類名 onactivate uint nstate,cw...

自繪非客戶區

下面是網上收集來的 實現炫彩自繪視窗非客戶區,貼出來大家參考共享.效果如下圖所示 關鍵 如下 在框架類中新增 public afx msg void onnclbuttondown uint nhittest,cpoint point afx msg void onncmousemove uint ...

MFC 視窗的重繪

根據視窗的大小的變化重繪視窗 新增 乙個視窗訊息 on wm size 注意是在dlg類中 例如有 clistctrl 這樣乙個控制項,給這個控制項新增了變數名之後,再 on wm size 對應的函式 onsize 裡面新增 if m clistonline.m hwnd null 在視窗初始化的...