GetSaveFileName -> Customization -> Explorer-Style Custom Templates



  • Hi,
    bei der Anpassung des GetSaveFileName Dialoges bin ich auf die Möglichkeit gestossen, in der OPENFILENAME structur ein Template angeben zu können.

    Die interessante Property hierfür:

    int hInstance; // Type converted CSharp

    Auszug aus MSDN: " If the template is already in memory, set the OFN_ENABLETEMPLATEHANDLE flag and use the hInstance member to identify the memory object that contains the template."

    Habe dies versucht.
    Agiere jedoch unter CSharp und habe einige Probleme.

    1. Was genau ist dieses Template ?
    (Habe mir eine alte .rc Datei genommen wo ein Dialog und ein Paar Steuerelemente drinne sind). Hier steckt UNTER ANDEDREM folgendes drinne:

    /////////////////////////////////////////////////////////////////////////////
    //
    // Dialog
    //
    IDD_KALISCAN DIALOGEX 0, 0, 392, 145
    STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS
    FONT 8, "MS Sans Serif", 0, 0, 0x0
    BEGIN
    LISTBOX IDC_LIST_KALISCAN,5,5,355,37,LBS_USETABSTOPS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
    DEFPUSHBUTTON "Start",IDC_START_KALISCAN,21,76,50,14
    PUSHBUTTON "Weiter",IDC_BUTTON_CONTINUE_KALI,91,76,50,14
    GROUPBOX "Kalibrierscan Absolut",IDC_STATIC,7,53,355,85
    PUSHBUTTON "Konfiguration...",IDC_BUTTON_KALI_CONFIG,21,102,50,14
    PUSHBUTTON "Speichern...",IDC_BUTTON_KALI_SPEICHERN,91,102,50,14
    END

    Ist das das Template wovon hier geredet wird ? Oder noch mehr aus der Datei ?

    2. hInstace soll in disem Fall (Flag -> OFN_ENABLETEMPLATEHANDLE) ein Handle auf
    genau WAS sein ?

    (Habe unter CSharp das, was ich für ein Template halte aus einer Datei als Stream eingelesen. Und in hInstance das konvertierte Handle reingeschrieben.)
    Leider zur Zeit noch ohne Erfolg. Wobei ich jedoch nicht weiß ob mein Template überhaupt richtig ist.

    Wer kann mich hier mal etwas aufklären
    Besten Dank
    Torsten

    .NET 2005 + CSharp + WIN API



  • Man sollte es zuerst mit der WinAPI und C probieren... und dann kann man dies ja nach C# übertragen...
    Siehe:
    http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/aboutcommondialogboxes/openandsaveasdialogboxes.asp


Log in to reply