wie mappe ich eine MSG von hand ohne den Class Wizard zu nutzen kann mir dajemand helfen bitte?



  • notxt



  • Du brauchst folgendes:

    Die richtige Basisklasse.
    Eine Handlerfunktion.
    Eine Nachricht.

    Da du weiter unten nach WM_DROPFILES geschrien hast, nehme ich die als Beispiel.

    Gib WM_DROPFILES als Suchbegriff in der MSDN ein. Du bekommst zwei Treffer - davon ist die Funktion interessant, denn den Namen der Nachricht kennen wir ja.

    Hier ist der Prototyp:

    afx_msg void OnDropFiles( HDROP hDropInfo );
    

    Der muss in den Header zu den anderen afx_msg Funktionen.

    Dann guck dir noch die MessageMap im cpp an. Na? Geht dir ein Licht auf?
    Es gibt ein Makro dafür: ON_WM_DROPFILES()

    So! War es so schwer? Wenn ja, dann beschäftige dich mal mit den Windowsnachrichten und wie das eigentlich funktioniert.

    🙂



  • habe nen Link error beim compilieren

    unresolved externals...

    mhmmm klappt das bei dir ?

    danke trotzdem sehr



  • Hast du schon mal Alles neu gebaut?

    Zeig mal die komplette Meldung und wie du die Hinweise umgesetzt hast.



  • header
    :
    // Generated message map functions
    //{{AFX_MSG(CFile_RenamerDlg)
    virtual BOOL OnInitDialog();
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    afx_msg void OnExitBtn();

    // WM_DROPFILES
    afx_msg void OnDropFiles( HDROP hDropInfo );

    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
    cpp:

    BEGIN_MESSAGE_MAP(CFile_RenamerDlg, CDialog)
    //{{AFX_MSG_MAP(CFile_RenamerDlg)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_EXIT_BTN, OnExitBtn)
    ON_WM_DROPFILES()
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    und noch ne funk angelegt:
    void CFile_RenamerDlg::OnDropFiles(HDROP hDropInfo)
    {
    MessageBox("test");

    UINT i = 0;
    UINT nFiles = ::DragQueryFile(hDropInfo, (UINT) -1, NULL, 0);
    for (i = 0; i < nFiles; i++)
    {
    TCHAR szFileName[_MAX_PATH];
    ::DragQueryFile(hDropInfo, i, szFileName, _MAX_PATH);

    MessageBox(szFileName);
    }

    ::DragFinish(hDropInfo);
    CFile_RenamerDlg::OnDropFiles(hDropInfo);
    }



  • Und wo ist die Fehlermeldung?



  • beim anwenden reagiert die OnDropFiles funktion nicht,

    mit TRACE bekomm ich auch nix, glaube mein prog ruf die OnDrop gar nicht auf....



  • Ich glaube du hast das hier vergessen: DragAcceptFiles



  • m_MyFileCtrl.DragAcceptFiles(true);

    das habe ich auch..... dadurch verändert sich schonmal mein cursor....wenn ich mit einer datei über die liste fahre....



  • Hmm, dann fällt mir noch DragOver ein, das konnte man festlegen, ob man fallenlassen darf oder nicht. Ist damit was zu gewinnen?

    Sorry, aber ich hab blos mal beim Einbau von sowas zuschaut, bin also nicht so firm. 😞


Anmelden zum Antworten