Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kompilacja GetCurrentConsoleFontEx, SetCurrentConsoleFontEx

Ostatnio zmodyfikowano 2011-04-21 11:40
Autor Wiadomość
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 !!!
P-31257
malan
» 2011-04-19 22:47:48
Jaki masz system operacyjny?
P-31258
czarek1959
Temat założony przez niniejszego użytkownika
» 2011-04-19 23:03:05
Jak pisałem wcześniej Windows 7 64bit.
P-31259
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:
C/C++
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>

// Skopiowane z Windows.h (Microsoft Visual C++ 2010 Express Edition.
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.
P-31261
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).
P-31263
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.
P-31293
malan
» 2011-04-20 20:11:12
Dlaczegóż nie działa? Błąd kompilacji? Linker? Czy zły rezultat?
P-31314
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.
P-31324
« 1 » 2 3
  Strona 1 z 3 Następna strona