国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【筆記】MFC 無(wú)邊框移動(dòng)

2021-05-21 22:41 作者:藍(lán)田白玉  | 我要投稿

因?yàn)檎伊税胩欤谑蔷陀浵聛?lái),以防以后還會(huì)再用。

首先,假設(shè)對(duì)話(huà)框類(lèi)為:CMFCAppDlg,那么

  • 頭文件:CMFCAppDlg.h

  • 源文件:CMFCAppDlg.cpp

已知只有拖動(dòng)對(duì)話(huà)框窗口的標(biāo)題欄才能移動(dòng)窗口,那只要我們告訴系統(tǒng)鼠標(biāo)點(diǎn)在窗體上就是點(diǎn)在標(biāo)題欄上即可。

本方案實(shí)現(xiàn)的辦法很簡(jiǎn)單,就是使用?WM_NCHITTEST?消息,這個(gè)消息是用來(lái)獲取鼠標(biāo)當(dāng)前命中的位置。

現(xiàn)在只要重載 WM_NCHITTEST 消息的?OnNcHitTest 函數(shù),使其返回?HTCAPTION ,系統(tǒng)就會(huì)認(rèn)為我們點(diǎn)在標(biāo)題欄上。

在 CMFCAppDlg.h 中添加消息映射函數(shù) OnNcHitTest(CPoint point)

在 CMFCAppDlg.cpp 中添加?ON_WM_NCHITTEST() 消息定義。

在 CMFCAppDlg.cpp 中添加?OnNcHitTest(CPoint point) 函數(shù)定義。

如果將上述代碼中?rc.bottom = rc.top + 100; 的注釋取消的話(huà),那么只有在點(diǎn)擊窗體頂部到 100 這個(gè)方形區(qū)域內(nèi)才能移動(dòng)窗體,通過(guò)此方法可以限制鼠標(biāo)拖動(dòng)窗體的點(diǎn)擊區(qū)域,比如假裝自己有個(gè)標(biāo)題欄,點(diǎn)擊標(biāo)題欄下方的區(qū)域無(wú)法拖動(dòng)窗體。

同理,只要我們獲取控件的區(qū)域,將點(diǎn)擊這個(gè)區(qū)域變成點(diǎn)擊標(biāo)題欄就能實(shí)現(xiàn)點(diǎn)擊控件挪動(dòng)窗體。

這里需要重載消息處理函數(shù)?PreTranslateMessage ,它將會(huì)在消息發(fā)送到窗口之前攔截消息并處理,再發(fā)給窗口。

同樣的先在?CMFCAppDlg.h 中添加

再往CMFCAppDlg.cpp?中添加函數(shù)定義

這里需要注意的是,上面的方法可能造成控件失控,就像我上面的代碼所示,我獲取的確認(rèn)按鈕的區(qū)域,所以我只有再鼠標(biāo)完全靜止的時(shí)候點(diǎn)擊按鈕才能使用這個(gè)按鈕本身的功能,一旦鼠標(biāo)有一點(diǎn)晃動(dòng)就會(huì)變成拖動(dòng)窗體了。

所以有些控件比如,滾動(dòng)條,當(dāng)你的鼠標(biāo)在上面滑動(dòng)的時(shí)候,可能只能拖動(dòng)窗體,而無(wú)法拖動(dòng)里面的內(nèi)容。

話(huà)說(shuō)代碼塊看的到嗎?在預(yù)覽里面是空的,我提交試試,看不到的話(huà)在想想其他辦法。

【筆記】MFC 無(wú)邊框移動(dòng)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
肥西县| 洞头县| 新龙县| 会东县| 时尚| 琼海市| 太仓市| 哈尔滨市| 奈曼旗| 邢台市| 武山县| 托克逊县| 六盘水市| 太白县| 盐池县| 新晃| 兴隆县| 迭部县| 儋州市| 洛浦县| 天峨县| 铜山县| 射阳县| 左贡县| 商水县| 盘锦市| 丘北县| 涟源市| 海阳市| 济源市| 苍南县| 宁阳县| 中西区| 兴安县| 繁峙县| 沙洋县| 汝南县| 容城县| 五指山市| 丽水市| 云梦县|