Error in einem MS Beispiel



  • Hallo Leute.

    Ich suchte eine Funktion welche mir den Standarddrucker zurückgeben kann.
    Dies fand ich auf http://support.microsoft.com/kb/246772/EN-US/
    Wenn ich das aber compilieren möchte bekomme ich einen Error und weiss nicht weiter.

    PROC fnGetDefaultPrinter = NULL;
    fnGetDefaultPrinter = GetProcAddress(hWinSpool, GETDEFAULTPRINTER);
    bFlag = fnGetDefaultPrinter(pPrinterName, pdwBufferSize); // 'int (__stdcall *)(void)' : Zu viele Paramter uebergeben
    

    Es wäre unheimlich nett und für mich wichtig wenn jemand mir eine Lösung des Problemes gebben könnte. 😕



  • Wie man den CDC vom Standarddrucker kriegt, hab ich da gepostet:
    http://www.c-plusplus.net/forum/viewtopic.php?t=99291
    🙂

    Wäre das eine Alternative? (Den Beispielcode verstehe ich leider nicht...)



  • Im Beispielcode ist einfach der Funktionspointer mit einem falschen Typ deklariert, weil das anscheinend für C geschrieben ist, und das ist da nicht so genau wie C++.



  • @Ringding
    Ich bin leider nicht so der Profi. Was müsste denn wie anders aussehen?

    @estartu_de
    Ich arbeite nur in DirectDraw....

    CPrintDialog dlg(FALSE);
        dlg.GetDefaults();
    
        // DC anlegen
        HDC	printDC = dlg.GetPrinterDC();
    

    Wenn ich da die fehlende #include <afxdlgs.h> Header einbinde bekomme ich nette Fehler:

    nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) bereits in LIBC.lib(new.obj) definiert
    nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) bereits in libcp.lib(delop.obj) definiert
    nafxcw.lib(thrdcore.obj) : error LNK2001: Nichtaufgeloestes externes Symbol __endthreadex
    nafxcw.lib(thrdcore.obj) : error LNK2001: Nichtaufgeloestes externes Symbol __beginthreadex

    🙄



  • Himmelherrgott, warum programmiert jemand in C++ so komplizierte Dinge, wenn er nichtmal die grundlegendsten Prinzipien von C verstanden hat?

    So würde ich sagen:

    BOOL (*fnGetDefaultPrinter)(LPTSTR, LPDWORD);
    

Anmelden zum Antworten