[C++] Zawsze na wierzchu

Uzywam Win XP i Deva C++

Mam pytanie czy aplikacje konsolowa napisana w C++ mozna uczynic oknem “Zawsze na wierzchu” ?

Można. Można wiele rzeczy zrobić.

Ponieważ mowa o dev c++, to od razu koniecznie musisz wskazać linkerowi kernel32.lib.

#include 


// (...)


void main(void)

{

    // Przechwytujemy dojśćie do okna konsoli dla procesu:

    HWND hConsole = ::GetConsoleWindow();

    ::SetWindowPos(hConsole, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);


    // (...)

}

pozdro

No dobra ale jak to wskazać ?

Co wskazać, jak wskazać? Dał Ci gotowy kod, nie marudź.

Wskazać ‘kernel32.lib’. :slight_smile: Też kminiłem chwilę o co chodzi. Nie wiem jak jest w dev-cpp z libkami windy. :slight_smile:

No wlłśnie przy kompilacji tego kodu wywala mi errora ;/ Po za tym Fiołek jak coś piszesz to czytaj najpierw cały temat.

A kompilator zwraca następujący błąd

'::GetConsoleWindow' has not been declared

No cóż. Pewnie masz stare Platform SDK do dev-cpp. Spróbuj:

#define _WIN32_WINNT 0x0500

#include

MSDN: “To compile an application that uses this function, define _WIN32_WINNT as 0x0500 or later.” Możesz oczywiście spróbować załadować dynamicznie i obejść brak nowych libów, ale do tego też potrzebne jest WinAPI:

typedef HWND (WINAPI * _GetConsoleWindow)(void);


// (...)


HMODULE hDll = LoadLibrary("kernel32.dll");

_GetConsoleWindow proc = (_GetConsoleWindow)GetProcAddress(hDll, "GetConsoleWindow");

HWND hConsole = proc();


// (...)


FreeLibrary(hDll);

Oczywiście po pierwsze, to powinieneś zadać pytanie na jakimś forum użytkowników owego magicznego dev-cpp.

Dzięki Schabik Twój drugi sposób zadziałał prawidłowo :wink: Zastanawiam się czy nie zmienić kompilatora mogłbyś mi jakiś polecić?

Czy mi się wydaje, czy już w tym tygodniu(ostatnie 7 dni) był podobny temat? Ja polecam Visual C++, jeśli chcesz więcej to szukaj!