請問有人使用過 EnumFonts ( 或 EnumFontFamilies、EnumFontFamiliesEx ) 嗎 |
缺席
|
linly
一般會員 發表:42 回覆:37 積分:15 註冊:2007-10-07 發送簡訊給我 |
EnumFonts 的 prototype 是
[code cpp] int EnumFonts( HDC hdc, // handle to DC LPCTSTR lpFaceName, // font typeface name FONTENUMPROC lpFontFunc, // callback function LPARAM lParam // application-supplied data ); [/code] 其中第三個參數是 callback function,長相是 [code cpp] int EnumFontsProc( lplf lplf, // 邏輯字型 LOGFONT 資料 lptm lptm, // 字型資料 TEXTMETRIC DWORD dwType, // 系統傳來之字型種類 LPARAM lpData // 程式傳來的參數 ); [/code] 當我在使用的一直出現以下訊息 "[C Error] GlobalParams.cpp(285): E2034 Cannot convert 'int (__stdcall *)(const tagLOGFONTA *,const tagTEXTMETRICA *,unsigned long,long)' to 'int (__stdcall *)()'" "[C Error] GlobalParams.cpp(285): E2340 Type mismatch in parameter 3 (wanted 'int (__stdcall *)()', got 'int (__stdcall *)(const tagLOGFONTA *,const tagTEXTMETRICA *,unsigned long,long)')" 看起來編譯器是說我 callback function 參數個數不對,以下是 callback function 定義 [code cpp] WinFontList::WinFontList(char *winFontDirA) { ... ... if ( RegOpenKeyEx( HKEY_LOCAL_MACHINE, path, 0, KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS, ®Key) == ERROR_SUCCESS ) { EnumFonts( dc, NULL, &WinFontList::enumFunc1, (LPARAM)this ); RegCloseKey(regKey); } ReleaseDC(NULL, dc); } int CALLBACK WinFontList::enumFunc1( CONST LOGFONT *font, CONST TEXTMETRIC *metrics, DWORD type, LPARAM data ) { WinFontList *fl = (WinFontList *)data; EnumFonts(fl->dc, font->lfFaceName, &WinFontList::enumFunc2, (LPARAM)fl); return 1; } int CALLBACK WinFontList::enumFunc2( CONST LOGFONT *font, CONST TEXTMETRIC *metrics, DWORD type, LPARAM data ) { ... return 1; } [/code] 使用 EnumFontFamilies 結果也是一樣,請問一下為什麼?感謝!!! :) |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |