1. 程式人生 > >MFC CCheckListBox 在rMBP的vmware win7上新增行崩潰

MFC CCheckListBox 在rMBP的vmware win7上新增行崩潰

這兩天悲劇滿滿。。

一個一直很正常的程式,在我換了rmbp後,用vmware win7 執行竟然掛了。

本來一直是這樣的:


結果它這樣了:



多虧vs強大的crash stack 跟蹤功能,

在CCheckListBox::DrawItem中檢查行高度cyItem 如果小於繪製文字所需要的高度CalcMiniumItemHeight(),就會嗝屁了。

CalcMiniumItemHeight()會根據當前系統字型計算文字需要的高度,在例項中CalcMiniumItemHeight()返回22,cyItem=20



解決方法兩個:

1.  改小視窗字型

2. 在checkListBox 插入第一行文字前,呼叫SetItemHeight, 把高度設定高一點