MFC窗口最大化問題

最近在產(chǎn)品中遇到一個回退問題:產(chǎn)品的主窗口在點擊最大化按鈕后,無法最大化顯示,和整個屏幕殘留了一些gap意狠,并且只有的win7上發(fā)生。

1. 由于是從branch合并回到main之后的產(chǎn)生的問題疮胖,一開始希望通過changelist對比找到有問題的代碼环戈,但由于branch合并后有數(shù)十個源文件,難以找到可疑代碼而放棄這種方法澎灸;

2. 由于主窗口是MFC程序院塞,通過查詢MSDN知道窗口最大化時,窗口大小性昭,位置發(fā)生變化拦止,onsize,windowposchanged消息函數(shù)會被調(diào)用巩梢,并且MFC framework會發(fā)出MAXMIN消息函數(shù)去處理對應(yīng)屏幕的最大化面積的計算创泄;

因此,先使用spy確定了這些消息函數(shù)確實被調(diào)用括蝠,然后在對應(yīng)函數(shù)入口設(shè)置斷點調(diào)試鞠抑,發(fā)現(xiàn)在發(fā)送最大化時首先調(diào)用MAXMIN消息函數(shù),而后是windowposchanged忌警,onsize函數(shù)搁拙;

進(jìn)入MAXMIN時的屏幕最大化參數(shù)正確秒梳,但等到進(jìn)入隨后兩個函數(shù)時,最大化參數(shù)變小箕速,因此懷疑在MAXMIN有重算最大化面積的邏輯酪碘。

調(diào)試MAXMIN后發(fā)現(xiàn),該函數(shù)會針對無邊框類型的主窗口進(jìn)行最大化面積重算盐茎,但在檢查創(chuàng)建主窗口函數(shù)時兴垦,窗口風(fēng)格為有邊框,因此字柠,在此之前有邏輯除去了邊框風(fēng)格探越;

于是在代碼中搜索除去邊框風(fēng)格的代碼,最后發(fā)現(xiàn)在處理visualmanager的消息函數(shù)中會除去邊框風(fēng)格窑业,而在產(chǎn)品中我們繼承了MFC的visual manager? office2007做了自己的實現(xiàn)钦幔。在該函數(shù)中,有虛函數(shù)會檢查是否由windows或GPU去own窗口的渲染常柄,而該函數(shù)在office2007的visualmanager的實現(xiàn)中會調(diào)用API去檢查DWM(desktop window manager)是否被打開運行鲤氢。在win7中由于該函數(shù)始終返回false,導(dǎo)致虛函數(shù)的返回值false西潘,從而移除了邊框風(fēng)格卷玉,最終導(dǎo)致最大化面積的重算。

最終喷市,重現(xiàn)該虛函數(shù)即可修復(fù)問題揍庄。

但問題在于,1. 為何DWM的檢查總是false东抹,即使該服務(wù)已經(jīng)打開運行蚂子?2. 為何同樣使用office2007 visualmanager的visualstudiodemo沒有出現(xiàn)無法最大化的問題?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缭黔,一起剝皮案震驚了整個濱河市食茎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌馏谨,老刑警劉巖别渔,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異惧互,居然都是意外死亡哎媚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門喊儡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拨与,“玉大人,你說我怎么就攤上這事艾猜÷蛐” “怎么了捻悯?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長淤毛。 經(jīng)常有香客問我今缚,道長,這世上最難降的妖魔是什么低淡? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任姓言,我火速辦了婚禮,結(jié)果婚禮上蔗蹋,老公的妹妹穿的比我還像新娘事期。我一直安慰自己,他們只是感情好纸颜,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绎橘,像睡著了一般胁孙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上称鳞,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天涮较,我揣著相機(jī)與錄音,去河邊找鬼冈止。 笑死狂票,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的熙暴。 我是一名探鬼主播闺属,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼周霉!你這毒婦竟也來了掂器?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤俱箱,失蹤者是張志新(化名)和其女友劉穎国瓮,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狞谱,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡乃摹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了跟衅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孵睬。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖伶跷,靈堂內(nèi)的尸體忽然破棺而出肪康,到底是詐尸還是另有隱情荚恶,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布磷支,位于F島的核電站谒撼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏雾狈。R本人自食惡果不足惜廓潜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望善榛。 院中可真熱鬧辩蛋,春花似錦、人聲如沸移盆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咒循。三九已至据途,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叙甸,已是汗流浹背颖医。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留裆蒸,地道東北人熔萧。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像僚祷,于是被迫代替她去往敵國和親佛致。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容