黃向明同學分別講解了基於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...