用MFC實現檔案拖放到編輯框

2021-08-22 08:07:46 字數 2231 閱讀 9745

黃向明同學分別講解了基於cformview和dialog的實現,下面我簡單介紹一下基於cview的實現,以及基於dialog的另一種實現,為了便於演示程式執行結果,程式中沒使用編輯框,而是listbox來接受被拖動的檔名,這樣也便於演示多個檔案的拖動。

一、檔案拖放到cview中的listbox

2、dragview.h檔案

clistbox m_view_list;

3、dragview.cpp檔案

用classwizard新增wm_create訊息響應,然後在oncreate函式中新增如下**:

dragacceptfiles();//向file manager註冊自己,

使自己能接受droped file(s)

crectrect(0,0,100,80);m_view_list.create

(ws_visible|ws_vscroll,rect,this,

idc_view_list);//建立listbox

4、resource.h

修改resource.h檔案,為listbox的id(idc_view_list)分配乙個值

例如:#define idc_view_list 1000

5、dragview.cpp檔案

用classwizard新增wm_size訊息響應,然後在onsize函式中新增如下**:

m_view_list.movewindow(0,0,cx,cy);//使listbox所佔區域始終保持與客戶區一樣大

6、dragview.cpp檔案

用classwizard新增wm_dropfiles訊息響應,然後在ondropfiles函式中新增如下**:

void cdragview::ondropfiles(hdrop hdropinfo)

dragqueryfile(hdropinfo,i,pname,namesize);

//把檔名拷貝到緩衝區

m_view_list.addstring(pname);

//檔名加入listbox中顯示

heapfree(hheap,heap_zero_memory,pname);

//釋放緩衝區

} cview::ondropfiles(hdropinfo);

} 到此就完成了檔案拖放到view中的listbox,你可以編譯、執行了。

二、檔案拖放到對話方塊中的listbox

1、在上邊生成的drag工程成新增乙個對話方塊,id為idd_drag_dialog,並生成乙個新類cdragdialog,在extend style中選中accept file 選項。

2、在對話方塊中新增乙個listbox控制項,id為idc_dialog_list,去掉sort style。

3、手工新增wm_dropfiles訊息響應,這與自定義訊息差不多,但更簡單,因為這裡不需要

你定義wm_dropfiles;

(1)在dragdialog.h檔案宣告訊息處理函式:

afx_msg void ondropfiles(hdrop hdropinfo);

(2)其次在dragdialog.cpp的訊息對映中指出訊息處理入口:

on_message(wm_dropfiles,ondropfiles)

(也可以為巨集on_wm_dropfiles());

(3)最後定義訊息處理函式,這與在cview中第6步差不多:

void cdragdialog::ondropfiles(hdrop hdropinfo)

dragqueryfile(hdropinfo,i,pname,namesize);

//把檔名拷貝到緩衝區

m_dialog_list.addstring(pname);

//檔名加入listbox中顯示

heapfree(hheap,heap_zero_memory,pname);

//釋放緩衝區

} cdialog::ondropfiles(hdropinfo);

} 4、從資源中修改menu,新增乙個選單「測試」,以彈出我們剛才新增的對話方塊,選單id為id_drag_test;

5、在mainfrm.cpp中加入對話方塊標頭檔案,並用classwizard新增id_drag_test的響應函式;

#include "dragdialog.h"

......

void cmainframe::ondragtest()

用MFC實現檔案拖放到編輯框

黃向明同學分別講解了基於cformview和dialog的實現,下面我簡單介紹一下基於cview的實現,以及基於dialog的另一種實現,為了便於演示程式執行結果,程式中沒使用編輯框,而是listbox來接受被拖動的檔名,這樣也便於演示多個檔案的拖動。一 檔案拖放到cview中的listbox 2 ...

MFC組合框 編輯框

getdlgitem idc enablewindow false 設定初始狀態,編輯框獲取資訊的方式 變數 m edit m edit.format 操作組合框的資料 1 由於組合框內包含了列表框,所以列表框的功能都能夠使用。如可以利用 int addstring lpctstr lpszitem...

MFC之編輯框

初始操作 新建mfc應用程式,專案名為editctrl,基於對話方塊。刪除原有控制項在右側工具箱中找到edit control。放置到視窗中。如圖 現在的編輯框只可以在一行輸入,無法換行,同時如果按下enter換行會直接退出程式。多行輸入 文字向上滾動 滾動條 1.多行輸入 右鍵屬性,找到multi...