Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

[C++] Dialogbox via DLL

Anoniem
yoleri
3 antwoorden
  • 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 :)
  • [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?
  • GetLastError geeft ERROR_SUCCES aan (0).

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.