Ga naar inhoud

[C++] Dialogbox via DLL


anoniem

Aanbevolen berichten

Dag volk, Om een kort verhaal lang te maken. Ik ben bezig met een DLL die kan communiceren met een mySQL-database zoals van een phpBB forum. Alles gaat perfect en ik heb in de DLL een functie ingebouwd die de MySQL ODBC 3.51 Driver (myodbc3.dll) downloadt van mijn server als deze beschadigd of niet aanwezig is. Alle controles gaan goed en het wordt ook netjes gedownload als het niet aanwezig is op het systeem. Enkel ... Zo wil ik als "oogstreling" een form maken met een progressbar en verschillende labels om snelheid, gekopieerde kB en meer te laten zien (alle gegevens zijn voorhanden). Dit moet in de DLL (HWND e.d. worden door prog zelf meegegeven) zodat er later zowel met C++ als VB hiermee gewerkt kan worden en dan niet rekening gehouden hoeft te worden met downloadprogressdesign (nieuw woord) ... Nu heb ik het 1 en ander geprobeerd. Alleen mij lukt het niet om een Dialogbox aan te maken via de DLL (ik krijg het tenminste niet te zien). Dit is de dialoogproces voor download dialogbox: [code:1:7a50cb878a]LRESULT CALLBACK Download(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: return (TRUE); case WM_COMMAND: if (LOWORD(wParam) == IDOK) { EndDialog(hDlg, TRUE); return (TRUE); } break; } return (FALSE); }[/code:1:7a50cb878a]aanroep ervan: [code:1:7a50cb878a]DialogBox(hInst, "DOWNLOAD", hWnd, (DLGPROC)Download)[/code:1:7a50cb878a]Dialogbox is netjes aangemaakt en vormgegeven in een resource en heet "DOWNLOAD". hInst en hWnd zijn door het programma zelf gegeven. Als ik voor hWnd een NULL-waarde gebruik en zomaar een nieuwe instance graap via GetModuleHandle(NULL) werkt het ook niet. Ik zie niets. Volgende test geeft dus een fout (mislukt) aan: [code:1:7a50cb878a]if(FAILED(DialogBox(hInst, "DOWNLOAD", hWnd, (DLGPROC)Download))) MessageBox(hWnd, "mislukt", "error ...", MB_OK); else MessageBox(hWnd, "gelukt", "success ...", MB_OK);[/code:1:7a50cb878a]Iemand idee/antwoord? Als iemand handige links heeft waarvan hij/zij denkt dat het mij maar iets verder mee kan helpen dan ben ik erg dankbaar :)
Link naar reactie
[quote:20e2aed963="yoleri"]Als ik voor hWnd een NULL-waarde gebruik en zomaar een nieuwe instance graap via GetModuleHandle(NULL) werkt het ook niet. Ik zie niets.[/quote:20e2aed963] ModuleHandle != instance handle [quote:20e2aed963="yoleri"] Volgende test geeft dus een fout (mislukt) aan: [code:1:20e2aed963]if(FAILED(DialogBox(hInst, "DOWNLOAD", hWnd, (DLGPROC)Download))) MessageBox(hWnd, "mislukt", "error ...", MB_OK); else MessageBox(hWnd, "gelukt", "success ...", MB_OK);[/code:1:20e2aed963]Iemand idee/antwoord?[/quote:20e2aed963] Wat zegt GetLastError bij een fout?
Link naar reactie
  • 5 weken later...
Ik ben erachter gekomen dat ik met mijn huidige structuur alleen de dialogprocessen van de exe file kon aanroepen in mijn DLL, en niet de dialogprocessen van mijn DLL. Ik heb een link gevonden wat een antwoord is op mijn vraag, hopelijk voor jullie een naslag :) [b:bc209433ce][url=http://www.codeguru.com/mfc/comments/1779.shtml]Dialog in DLL[/url][/b:bc209433ce]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...