  | 
      
        
          21樓
          巨大八爪鱼
          2016-5-24 16:25
          
          
           
         
        
       | 
    
    
        | 
      
        
          22樓
          巨大八爪鱼
          2016-5-24 17:13
          
          
           
         
        【XP下楷體字不能顯示的解決方案】 int CALLBACK FontExistsProc(const LOGFONT *lpelfe, const TEXTMETRIC *lpntme, DWORD FontType, LPARAM lParam) {     return 0; // 直接終止EnumFontFamiliesEx函數的運行 }
  // 判斷字體是否存在的函數 BOOL FontExists(LPLOGFONT lpFont) {     HDC hdc = GetDC(NULL);     BOOL bResult = (EnumFontFamiliesEx(hdc, lpFont, FontExistsProc, (LPARAM)NULL, (DWORD)NULL) == 0);     ReleaseDC(NULL, hdc);     return bResult; }
  // 創建自定義字體對象 void InitFont(void) {     LOGFONT logfont;     ZeroMemory(&logfont, sizeof(logfont));     logfont.lfCharSet = GB2312_CHARSET; // 字符集     lstrcpy(logfont.lfFaceName, TEXT("楷體")); // 字體名稱     logfont.lfHeight = 48; // 字體大小     logfont.lfQuality = ANTIALIASED_QUALITY; // 字體品質     logfont.lfWeight = FW_BOLD; // 是否為粗體     //logfont.lfItalic = TRUE; // 是否為斜體
      // 如果字體不存在, 就更換名稱     if (!FontExists(&logfont))         lstrcpy(logfont.lfFaceName, TEXT("楷體_GB2312"));          hfontCustom = CreateFontIndirect(&logfont); }
  
       | 
    
    
        | 
      
        
          24樓
          巨大八爪鱼
          2016-5-24 20:27
          
          
           
         
        代碼[1]和代碼[4]在兩個系統下有著相似的效果。雖然hFontCaption都是賦的一樣的值,僅僅是多獲取了一下NCM,就會產生截然不同的效
果。據此可推測一定是SystemParametersInfo在獲取NCM的同時也影響了GetStockObject。 
       |