czarek1959 Temat założony przez niniejszego użytkownika |
Kompilacja GetCurrentConsoleFontEx, SetCurrentConsoleFontEx » 2011-04-19 22:41:00 Witam ponownie,
Znowu "kanał". Czasami ręce już opadają !
Dlaczego powyższe funkcje nie chcą mi się skompilować, kompilator wyrzuca błąd, że brak deklaracji w/w funkcji. Używam Code:Blocks.
Próbowałem wszystkiego przez kilka godzin i nie działa. Moje ustawienia to:
#define _WIN32_WINNT 0x601 ?
lub
#define _WIN32_WINNT 0x0500 ?
#include <iostream>
#include <windows.h>
próbuję również dołaczyć bibliotekę kernel32.lib lub .dll i nic, a teoretycznie powinno działać (Windows 7). "Wygoglowałęm" dziesiątki postów na ten temat, wszyscy podają jakieś rozwiązania (powyższe jest wynikiem tej lektury), a kompilator swoje.
Uprzejma prośba o pomoc !!!
|
|
malan |
» 2011-04-19 22:47:48 Jaki masz system operacyjny? |
|
czarek1959 Temat założony przez niniejszego użytkownika |
» 2011-04-19 23:03:05 Jak pisałem wcześniej Windows 7 64bit. |
|
malan |
» 2011-04-20 00:11:57 Z tego co udało mi się ustalić, to po prostu Windows.h z C::B nie posiada deklaracji tejże funkcji... Nie wiem dlaczego, nie pytaj. Wiem za to, że Microsoft Visual C++ 2010 już posiada i wszystko działa ok. Także, albo przeżuć się na Visuala, albo: #define WIN32_LEAN_AND_MEAN #include <Windows.h>
typedef struct _CONSOLE_FONT_INFOEX { ULONG cbSize; DWORD nFont; COORD dwFontSize; UINT FontFamily; UINT FontWeight; WCHAR FaceName[ LF_FACESIZE ]; } CONSOLE_FONT_INFOEX, * PCONSOLE_FONT_INFOEX;
typedef WINBASEAPI BOOL( WINAPI * function )( HANDLE, BOOL, PCONSOLE_FONT_INFOEX );
int main() { 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 ); if( hGetCurrentConsoleFontEx( GetStdHandle( STD_OUTPUT_HANDLE ), FALSE, & fontInfo ) ) WriteConsole( GetStdHandle( STD_OUTPUT_HANDLE ), fontInfo.FaceName, LF_FACESIZE, 0, 0 ); FreeLibrary( kernel32 ); } Ewentualnie, spróbuj się dowiedzieć, czy istnieje możliwość dostępu do tych funkcji pod C::B. |
|
DejaVu |
» 2011-04-20 01:39:48 Pisząc w czymś innym niż Visual C++ jesteś skazany na cierpienia gdy jest mowa o funkcjach windowsowych. Liby często i gęsto są wybrakowane do takich cudaków jak MinGW (mowa oczywiście o wsparciu funkcjonalności systemowych). |
|
czarek1959 Temat założony przez niniejszego użytkownika |
» 2011-04-20 18:43:57 Przepraszam za spóźnioną reakcję, ale miałem przerwę w dostępie do internetu.
Bardzo dziękuję za odpowiedzi, które naprowadziały mnie na trop. Niestety ale załaczony kod nie działa, w sensie obsługi tych funkcji. Będę szukał jakiejś "dogrywki" dla Code::Blocks.
Na konice upuszczę sobie trochę ciśnienia i "pożalę" się na C (tak mnie ostatnio zdołował). Miał to być język bardzo uniwersalny, niezależny od platformy itd.., czyli miało być tak pięknie - a tu okazuje się, że dla Win-2000 inaczej, dla XP inaczej, a dla Visty i Win7 jeszcze inaczej. Do tego potworne problemy z różnymi kompilatorami, zastanawiam się co by było pod Linuxem. Ale już wystarczy ...
Jeszcze raz dzięki i pozdrawiam. |
|
malan |
» 2011-04-20 20:11:12 Dlaczegóż nie działa? Błąd kompilacji? Linker? Czy zły rezultat? |
|
czarek1959 Temat założony przez niniejszego użytkownika |
» 2011-04-20 20:44:12 Kompilator nadal "wrzeszczy", że brak deklaracji funkcji (po jej użyciu). Po kompilacji kodu na ekranie pojawia się kilka "krzaków". Wygląda na to, że bibliotekę kernel32 ładuje, ale nadal nie "kuma" co to np. GetCurrentConsoleFontEx. |
|
« 1 » 2 3 |