在客戶區 非客戶區和桌面畫線

2021-04-16 09:11:52 字數 956 閱讀 6742

來自孫鑫《vc++深入詳解》 

客戶區:即視類視窗

非客戶區:包括標題欄、選單欄、工具欄和狀態列。

在畫圖之前,需要獲取線圖的起始點與終點。即滑鼠左鍵按下是起始點,左鍵彈起是終點。

以下**中的m_ptorigin均記錄在onlbuttondown函式中,m_ptorigin = point ;

一:利用platform sdk函式實現客戶區畫線功能

void ctview::onlbuttonup(uint nflags, cpoint point)

二:利用mfc的cdc類在客戶區實現畫線功能

void ctview::onlbuttonup(uint nflags, cpoint point)

三:利用mfc的cclientdc類在客戶區實現畫線功能

void ctview::onlbuttonup(uint nflags, cpoint point)

四:利用mfc的cwindowdc類在客戶區實現畫線功能

void ctview::onlbuttonup(uint nflags, cpoint point)

五:利用mfc的cclientdc類在非客戶區實現畫線功能

void ctview::onlbuttonup(uint nflags, cpoint point)

注:視類視窗只有客戶區(即視類視窗本身),而框架視窗既有客戶區(即選單欄以下部分),還有非客戶區(標題欄、選單欄、工具欄和狀態列)。視視窗的父視窗就是框架視窗即與cmainframe類相關聯的視窗

六:利用mfc的cwindowdc類在非客戶區實現畫線功能

void ctview::onlbuttonup(uint nflags, cpoint point)

七:利用mfc的cwindowdc類在桌面區實現畫線功能

void ctview::onlbuttonup(uint nflags, cpoint point)

縮小客戶區 擴大非客戶區 的方法

當windows收到 wm nccalcsize 訊息時會指定客戶區大小,我們可以在這個時候設定客戶區的大小。引數lparam是乙個nccalcsize params結構,儲存包含三個矩形的陣列。第乙個矩形儲存視窗的客戶區。你只要改寫這個矩形的值就可以修改客戶區的大小了。修改了客戶區的大小後,還要響...

自繪非客戶區

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

NcPaint重繪非客戶區

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