[WinAPI] GetCurrentConsoleFont wyparowało?
Ostatnio zmodyfikowano 2011-10-20 14:07
pekfos Temat założony przez niniejszego użytkownika |
[WinAPI] GetCurrentConsoleFont wyparowało? » 2011-10-19 21:28:41 GetCurrentConsoleFont( hwnd, FALSE, & cfi );
error: 'GetCurrentConsoleFont' was not declared in this scope
postępowałem zgodnie z MSDN: #define _WIN32_WINNT 0x0500
ale mimo to nie mogę skompilować mojego programu. W googlach dużo o tym nie ma i na dodatek tej funkcji nie ma w pliku nagłówkowym w którym powinna być wg MSDN. Jak to naprawić? (GCC 4.6.1) |
|
DejaVu |
» 2011-10-19 22:21:45 #define _WIN32_WINNT 0x500 #include <windows.h>
Jeżeli nie działa i dalej otrzymujesz ten komunikat to znaczy, że biblioteki, które posiadasz są stare. Jeżeli piszesz pod Windowsa sugeruję używanie Visual C++. Oczywiście problem możesz rozwiązać sobie poprzez dynamiczne pobranie adresu funkcji z biblioteki Kernel32.dll za pomocą funkcji GetProcAddress. |
|
pekfos Temat założony przez niniejszego użytkownika |
» 2011-10-20 09:23:02 BOOL WINAPI GetCurrentConsoleFont( HWND hwnd, BOOL b, PCONSOLE_FONT_INFO lpcfi ) { typedef BOOL WINAPI( * gccf )( HWND, BOOL, PCONSOLE_FONT_INFO ); HMODULE kernel32 = LoadLibrary( "kernel32" ); if( !kernel32 ) return FALSE; gccf fun =( gccf ) GetProcAddress( kernel32, "GetCurrentConsoleFont" ); if( !fun ) return FALSE; BOOL ret = fun( hwnd, b, lpcfi ); FreeLibrary( kernel32 ); return ret; } nie działa a debugger mówi: fun = 0x768ea8f4 <KERNEL32!GetCurrentConsoleFontEx>
czyli jeżeli dobrze rozumiem ładuje się nie ta funkcja. Jak załadować GetCurrentConsoleFont()? uruchomić pod XP gdzie nie ma GetCurrentConsoleFontEx()? |
|
DejaVu |
» 2011-10-20 09:32:21 #include <windows.h>
BOOL WINAPI MyGetCurrentConsoleFont( HWND hwnd, BOOL b, PCONSOLE_FONT_INFO lpcfi ) { typedef BOOL( WINAPI * gccf )( HWND, BOOL, PCONSOLE_FONT_INFO ); HMODULE kernel32 = LoadLibraryA( "kernel32" ); if( !kernel32 ) return FALSE; gccf fun =( gccf ) GetProcAddress( kernel32, "GetCurrentConsoleFont" ); if( !fun ) return FALSE; BOOL ret = fun( hwnd, b, lpcfi ); FreeLibrary( kernel32 ); return ret; }
int main() { CONSOLE_FONT_INFO fi; MyGetCurrentConsoleFont( NULL, FALSE, & fi ); return 0; } |
|
pekfos Temat założony przez niniejszego użytkownika |
» 2011-10-20 14:07:01 W szkole wpadłem na to że GetCurrentConsoleFont nie bierze HWND tylko HANDLE a zatem inne wartości trzeba podać. Ale wciąż ładuje się GetCurrentConsoleFontEx(). Uruchomię na XP i zobaczę co się stanie :)
//edit: na XP ładuje się GetCurrentConsoleFont() ale w polu dwFontSize nie ma wtedy rozmiaru znaku (powinno być 8,12) tylko rozmiar okna konsoli w znakach (80,25 to na znak za dużo :P). Spróbuje z GetConsoleFontSize()
//edit2: GetConsoleFontSize() też wyparowało, ehh..
//edit3: Na Viście ładuje się GetCurrentConsoleFontEx() a na XP GetCurrentConsoleFont() a wraz z GetConsoleFontSize() program działa i tu i tu.
close. |
|
« 1 » |