第一行總得說點什麼,但是我不知道說啥,有啥不懂的看註釋吧。
CRect rect;
GetClientRect(&rect);//???????????
int w = rect.Width()/2;
int h = rect.Height()/2;
CPoint center(w,h); // ????
int x = center.x; //???????????
int y = center.y;
CString str1;
str1 = " 我是菜鳥";
int firstAngle = 900;
CFont *f_old;//和剛剛一樣,把系統最開始的寫字筆賦值給f_old
LOGFONT lf;//定義一個LOGFPNT類型的lf變量
pDC->GetCurrentFont()->GetLogFont(&lf);//得到系統當前字體類型,存到變量lf中
strcpy(lf.lfFaceName,"宋體"); //我剛剛沒加這行,結果只顯示了四種情況
CFont font; //創建寫字筆
font.CreateFontIndirect(&lf);//讓lf的類型 賦值給font這根寫字筆
f_old = pDC->SelectObject(&font);
int i ;
for(i=0;i<=24;i++)
{
lf.lfEscapement = firstAngle;
//firstAngle = firstAngle + 150;
firstAngle += 150;
font.Detach();//字體分離,這句話很重要!!!因爲下面要創建新字體了
font.CreateFontIndirect(&lf);//讓lf的類型 賦值給font這根寫字筆
pDC->SelectObject(&font);
pDC->TextOut(x,y,str1);
}
pDC->SelectObject(f_old);//即還原成系統原始的寫字筆
strcpy(lf.lfFaceName,"宋體"); //我剛剛沒加這行,結果只顯示了四種情況,如下:
我花了半個多小時,慢慢調試,把代碼拷貝到老師電腦,又拷貝到同學電腦,還是運行失敗,還好這種事情我經常遇到,心態還行,沒有爆炸,吐槽一下VC6.0這個編譯器吧,太蠢了。不過沒辦法,這軟件年紀跟我差不多,現在跟別的編譯器比起來智商不夠也可以理解。
後來那行代碼加上去了,結果爲:
總結:
心態很重要,沒有良好的心態我根本發現不了這個問題。
剛剛老師給我的理由是我操作系統或者編譯器的問題,我總覺得哪裏怪怪的,不想放棄自己的代碼,果然,稀裏糊塗試到了那個bug。
後來跟老師講我發現的這個bug,老師好像發現了新大陸一般,也覺得很神奇。
不過我想說,明年給學弟學妹講課,可不可以升級到VS2015或者2018?