Pregunta

Me preguntaba, ¿es posible usar el punto de entrada de un programa Win32, el Winmain, como un método de clase? Por ejemplo;

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);
};

¡Gracias!

¿Fue útil?

Solución

No. WinMain no poder Sea miembro de la clase como punto de "entrada" del programa. Y para el caso WinMain no poder ser en cualquier espacio de nombres (aparte del espacio de nombres global). Por ejemplo, incluso user::WinMain Como se muestra abajo no poder ser el punto de "entrada" del programa.

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

Punto de entrada del programa debe ser definido en el espacio de nombres global.

Sin embargo, puede tener una función con este nombre dentro de una clase (o en algún otro espacio de nombres), que puede llamar desde el actual punto de entrada WinMain definido en el espacio de nombres global. PerocApp::WinMain (o user::WinMain) no es de ninguna manera el punto de "entrada" del programa.

Otros consejos

En primer lugar (y el wndproc) necesitaría ser static miembros para que coincidan con los prototipos requeridos. El verdadero problema es lograr que el compilador se una a una función no global, ya que debe usar una opción de enlazador como MSVC's /entry:<symbol> Para intentar vincular al miembro de la clase estática, sin embargo, podría molestar en la resolución del alcance ... Si no puede tener miembros estáticos, puede usar la entrada CRT WinMain para crear la instancia de su objeto y luego llamar a su WinMain Miembro FUNC, OFC, es posible que no pueda unirse directamente a las bibliotecas estándar y necesitaría hacer el Init CRT usted mismo (aunque eso se puede obtener de la fuente CRT MSVC)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top