Die Ordnungszahl wurde nicht gefunden - Bitte Was?



  • Hallo Leute,

    ich schreibe gerade ein kleiens Testprogramm zur benutzung des TaskDialogs. Dazu habe ich den Beispielcode aus der MSDN kopiert und bekomme eine ziemlich merkwürdige Fehlermeldung zur Laufzeit: Die Ordnungszahl 345 wurde in der DLL "COMCTL32.dll" nicht gefunden.

    Mein Programm sieht im Moment so aus:

    #include <Windows.h>
    #include <Commctrl.h>
    #pragma comment(lib, "Comctl32.lib")
    
    void main() {
    	int nButtonPressed                  = 0;
    	TASKDIALOGCONFIG config             = {0};
    	const TASKDIALOG_BUTTON buttons[]   = { 
    											{ IDOK, L"Change password" }
    										  };
    	config.cbSize                       = sizeof(config);
    	//config.hInstance                    = hInst;
    	config.dwCommonButtons              = TDCBF_CANCEL_BUTTON;
    	config.pszMainIcon                  = TD_WARNING_ICON;
    	config.pszMainInstruction           = L"Change Password";
    	config.pszContent                   = L"Remember your changed password.";
    	config.pButtons                     = buttons;
    	config.cButtons                     = ARRAYSIZE(buttons);
    
    	TaskDialogIndirect(&config, &nButtonPressed, NULL, NULL);
    	switch (nButtonPressed)
    	{
    		case IDOK:
    			break; // the user pressed button 0 (change password).
    		case IDCANCEL:
    			break; // user canceled the dialog
    		default:
    			break; // should never happen
    	}
    }
    

    Diese Fehlermeldung habe ich noch nie gesehen. Ich verwende Win7 x64. Was mache ich falsch?


  • Mod

    Lesen!

    TaskDialogIndirect:
    http://msdn.microsoft.com/en-us/library/bb760544(VS.85).aspx

    Requirements
    Minimum supported client
    Windows Vista
    Minimum supported server
    Windows Server 2008
    Header
    Commctrl.h (include Commctrl.h)
    Library
    Comctl32.lib
    DLL
    Comctl32.dll version 6

    Ich tippe mal:
    1. Du hast kein Windows Vista, oder Windows 7
    - oder -
    2. Du hast deiner Mini-EXE kein Manifest für ComCtl 6.0 gegeben...



  • Er schreibt ja, dass er Win7 verwendet.
    Lösung:

    #pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
    


  • @Marcus Humann
    Deine Zeile habe ich eingefügt. Vielen Dank das klappt!

    Aber wie funktionieren diese Manifestdateien? So ganz blicke ich da ehrlich gesagt noch nicht durch.

    Hat mein Programm jetzt einfach eine ältere Version von der dll-Datei geladen?



  • martin richter schrieb:

    Lesen!

    TaskDialogIndirect:
    http://msdn.microsoft.com/en-us/library/bb760544(VS.85).aspx

    Zitat:
    Requirements
    Minimum supported client
    Windows Vista
    Minimum supported server
    Windows Server 2008
    Header
    Commctrl.h (include Commctrl.h)
    Library
    Comctl32.lib
    DLL
    Comctl32.dll version 6

    Ich tippe mal:
    1. Du hast kein Windows Vista, oder Windows 7
    - oder -
    2. Du hast deiner Mini-EXE kein Manifest für ComCtl 6.0 gegeben...

    marcus humann schrieb:

    Er schreibt ja, dass er Win7 verwendet.

    @richter

    Du solltest mal lesen !



  • @WHOIS: Du hast wohl auch nicht verstanden was das mit dem Manifest zu tun hat... das solltest Du mal nachlesen!



  • WHOIS ?


Anmelden zum Antworten