malan |
» 2011-04-20 20:46:26 Mógłbyś wkleić log kompilacji? Jaką masz wersję kernela? |
|
czarek1959 Temat założony przez niniejszego użytkownika |
» 2011-04-20 21:10:51 Wklejam fragment (Twojego) kodu z dodaniem 2 linijek, aby sprawdzić działanie funkcji: int main() { HANDLE outcon = GetStdHandle( STD_OUTPUT_HANDLE ); HMODULE kernel32 = LoadLibrary( TEXT( "Kernel32.dll" ) ); if( !kernel32 ) return 1; function hGetCurrentConsoleFontEx =( function ) GetProcAddress( kernel32, "GetCurrentConsoleFontEx" ); if( !hGetCurrentConsoleFontEx ) { FreeLibrary( kernel32 ); return 2; } CONSOLE_FONT_INFOEX fontInfo; for( int i = 0; i < LF_FACESIZE; ++i ) fontInfo.FaceName[ i ] = '\0'; fontInfo.cbSize = sizeof( CONSOLE_FONT_INFOEX ); GetCurrentConsoleFontEx( outcon, false, & fontInfo ); if( hGetCurrentConsoleFontEx( GetStdHandle( STD_OUTPUT_HANDLE ), FALSE, & fontInfo ) ) WriteConsole( GetStdHandle( STD_OUTPUT_HANDLE ), fontInfo.FaceName, LF_FACESIZE, 0, 0 ); FreeLibrary( kernel32 ); }
a log kompilatora: Compiling: main.cpp D:\C_plus_plus\Code-Blocks-Programy\Nauka\pdcurses_nauka\10\main.cpp: In function 'int main()': D:\C_plus_plus\Code-Blocks-Programy\Nauka\pdcurses_nauka\10\main.cpp:39: error: 'GetCurrentConsoleFontEx' was not declared in this scope Process terminated with status 1 (0 minutes, 0 seconds) 1 errors, 0 warnings Jeśli chodzi o wersję kernela to jest to 6.1.7600.16385 (czy o to chodziło?), skopiowana/identyczna jak w katalogu C:\Windows\system32. Jeszcze jedno. Spróbowałem załaodować bibliotekę w poniższy sposób: HMODULE dll = LoadLibrary( "kernel32.dll" ); FARPROC proc = GetProcAddress( dll, "GetCurrentConsoleFontEx" ); typedef void( * TestFunc )(); TestFunc GetCurrentConsoleFontEx =( TestFunc ) proc;
i kompilator zaczął "kumać" co to jest GetCurrentConsoleFontEx(), ale bez parametrów, jak tylko podam parametry, zgodnie ze sztuką i opisem tej funkcji to otrzymuję bład kompilatora - "to many arguments to function ..." Czyli nadal nie działa prawidłowo. Chyba się zaraz poddam !!! Czyżby sama (moja) bibiloteka kernel32.dll, nie posiadała wbudowanych tych funkcji, aż nie chce mi się wierzyć ??? |
|
malan |
» 2011-04-20 21:18:49 Eh... ;) Ten kod jest po to, żeby nie wywoływać właśnie tej funkcji "jawnie" (że tak to ujmę). Przecież (jak już mówiłem), nie masz nawet jej deklaracji w Windows.h. Ten kod pobiera adres na tą funkcję bezpośrednio z kernela. Także skompiluj ten kod bez żadnych własnych poprawek ;) |
|
czarek1959 Temat założony przez niniejszego użytkownika |
» 2011-04-20 21:26:30 No dobrze, skompilowałem, program się wykonał (bez błedów) w wyświetleniem 3 krzaczków na ekranie i co dalej??? Jak użyć tej funkcji w programie? |
|
malan |
» 2011-04-20 21:39:35 3 krzaczków? :D To chyba jednak coś nie tak... U mnie wyświetla: L u c i d a C o n s o l e Process returned 0 (0x0) execution time : 0.103 s Press any key to continue. Jak użyć tej funkcji w programie? |
Posługując się wskaźnikiem, czyli - hGetCurrentConsoleFontEx . |
|
czarek1959 Temat założony przez niniejszego użytkownika |
» 2011-04-20 21:46:23 Jednak u mnie zamiast nazwy czcionki wyświetlają się 3 przypadkowe krzaczki (zawsze inne przy kolejnej kompilacji) ale kompilator nie zgłasza błedów !!!. Więc chyba coś nadal jest nie tak. Czy robiłeś to pod Code:Blocks (jak ja) czy używając Visuala? |
|
czarek1959 Temat założony przez niniejszego użytkownika |
» 2011-04-20 21:55:56 Już się wyjaśniło. Sprawdziłem we własciwościach okna konsoli - miałem ustawione "Czcionki rastrowe" i widocznie
z tym funkcja nie mogła dać sobie rady. Zmieniłem na Lucida Console, potem na Consolas i otrzymałęm identyczny rezultat - czyli ok. Zastaniawia mnie tylko dlaczego za każdym razem ustawienia wracają do Czcionek rastrowych i za każdym razem muszę to zmieniać ręcznie we właściwościach okna? |
|
czarek1959 Temat założony przez niniejszego użytkownika |
» 2011-04-20 22:05:19 Ok. Zamknałem Code:Blocks, oczyściłem pamięc i teraz za każdym razem jest tak jak ustawię czcionkę. Widocznie coś zaśmieciło pamieć ):.
>>>>Bardzo dziękuję Ci za pomoc - super. (dla malana)<<<<<
Wraca mi ochota do dalszej nauki i zamykam temat. |
|
1 « 2 » 3 |