五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
九江市| 汶上县| 宜兰市| 日喀则市| 南漳县| 石景山区| 收藏| 彝良县| 徐汇区| 大埔县| 左权县| 台湾省| 那坡县| 渭源县| 鹤山市| 大关县| 茶陵县| 鲁山县| 井研县| 贞丰县| 油尖旺区| 怀化市| 安仁县| 柘城县| 郓城县| 台中市| 岳西县| 商河县| 卢湾区| 云阳县| 肥城市| 元谋县| 高清| 丰原市| 行唐县| 利津县| 安溪县| 昌吉市| 富顺县| 汉阴县| 泰州市|