Frage

Ich habe mich gefragt, dass es möglich ist, den Einstiegspunkt eines Win32 -Programms - The Winmain - als Klassenmethode zu verwenden? Zum Beispiel;

class cApp {
public:
    cApp();
   ~cApp();

    cGuiManager* guiManager;
   cServerManager* serverManager;
    cAudioManager* audioManager;

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hInst, LPSTR lpCmdLine, int nCmdShow);
    static LRESULT CALLBACK WndProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam);
};

Vielen Dank!

War es hilfreich?

Lösung

Nein. WinMain kann nicht Seien Sie ein Mitglied der Klasse als "Eintragspunkt" des Programms. Und für diese Angelegenheit, WinMain kann nicht sein in jedem Namespace (außer dem globalen Namespace). Zum Beispiel sogar user::WinMain Wie nachfolgend dargestellt kann nicht Seien Sie der "Einstiegspunkt" des Programms.

namespace user
{
     int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int );
}

Einstiegspunkt des Programms muss sein im globalen Namespace definiert.

Sie können jedoch eine Funktion mit diesem Namen in einer Klasse (oder in einem anderen Namespace) haben, den Sie von der aufrufen können tatsächlich Einstiegspunkt WinMain im globalen Namespace definiert. AbercApp::WinMain (oder user::WinMain) ist in keiner Weise der "Eintrag" -Punkt des Programms.

Andere Tipps

Erstens müsste es (und das Wndproc) sein, um es zu sein static Mitglieder entsprechen den erforderlichen Prototypen. Das eigentliche Problem besteht /entry:<symbol> Um zu versuchen, an das statische Klassenmitglied zu binden, kann es jedoch bei der Umfangsauflösung stören ... Wenn Sie keine statischen Mitglieder haben können, können Sie den CRT -Winmain -Eintrag verwenden, um dann die Instanz Ihres Objekts zu erstellen und dann seine Rufe anzurufen WinMain Mitgliedsfunktion, von denen Sie dann möglicherweise nicht direkt an die Standardbibliotheken binden können, und Sie müssen das CRT -Init selbst durchführen (obwohl dies aus der CRT -MSVC -Quelle abgerufen werden kann)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top