editbox ohne winmain



  • Ja, gehen tut das schon, nur nicht in C++. In C/C++ braucht man immer eine main oder WinMain-Funktion. In Basic (Visual Basic oder FreeBasic) aber nicht.



  • seit wann hat man mit subsystem:console keine main funktion, elektrochecktnix?



  • okay, danke 😉
    und wenn ich jetzt in einer dll eine winmain funktion habe und mit callback funktion, wo die editbox drinne ist, wie rufe ich die editbox auf? ich meine... winmain wird ja nicht automatisch in der dll aufgerufen. Wie rufe ich WinMain() auf? Welche Parameter muss ich übergeben für HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCmdLine, int nShowCmd?



  • msdn hilft...
    Also was ich bei allen Parametern eingeben soll weiß ich nun, aber:

    hInstance
    [in] Handle to the current instance of the application.

    Erm? Ich schreibe ein DLL PlugIn zu einem Programm, wo man ein Header dazubekommt. Woher soll ich dann den Handle wissen von diesem Programm?



  • In einer DLL hast Du keine WinMain, sondern eine DLLMain. Die Main-Funktion ist immer der Einsprungpunkt in das Programm bzw. die DLL. Die wird also beim Start des Programmes automatisch aufgerufen.



  • kompliziert kompliziert. also bei mir funktioniert alles. ich habe eine winmain(), eine callback funktion und aufgerufen habe ich winmain so:

    WinMain(NULL ,NULL ,NULL ,SW_SHOW);
    

    Unprofessionel und vielleicht ein bisschen falsch, ABER es läuft 😉



  • Ja, zufällig läuft das. Die Übergabe der Parameter hinstance sollte man aber immer dem System überlassen, da Du sonst möglicherweise Probleme mit dem Instanzenhandling bekommst.



  • Irgendwie schmeisst Du da immer noch einiges durcheinander! Eine DLL ist nichts weiter als eine Sammlung von Funktionen, die von einer zu schreibenden Anwendung - WinMain, etc. - benutzt werden können. Es ist also Quatsch, den Aufruf von WinMain auch noch in die DLL packen zu wollen. Capito?



  • ja aber ich brauche halt hinstance und so. die dll die ich mache ist wie gesagt für ein programm ein plugin. daher kann ich ins programm keine winmain einfügen oder so!



  • Du willst die hInstance der DLL?
    bekommst du über DllMain

    BOOL WINAPI DllMain(
      __in  HINSTANCE hinstDLL,
      __in  DWORD fdwReason,
      __in  LPVOID lpvReserved
    );
    

    oder über LoadLibrary

    HMODULE WINAPI LoadLibrary(
      __in  LPCTSTR lpFileName
    );
    

    Ahja HMODULE = HINSTANCE


Anmelden zum Antworten