使MFC支持拖放文件的方法
2014-12-30 11:41 313人阅读 评论(0) 收藏 举报
分类: MFC(11)
在目标dialog关联的类的.h里添加//注意控件和对话框属性都不要选Accept Files
[cpp] view plain copy print?
afx_msg void OnDropFiles(HDROP hDropInfo);
void PreSubclassWindow() ;
相应的.cpp里添加
[cpp] view plain copy print?
BEGIN_MESSAGE_MAP(Unrar, CDialog)
ON_WM_DROPFILES()//这句话很重要
END_MESSAGE_MAP()
[cpp] view plain copy print?
void Unrar::PreSubclassWindow()
{
DragAcceptFiles( TRUE );
CWnd::PreSubclassWindow();
}
[cpp] view plain copy print?
void CLogAnalyseToolDlg::OnDropFiles(HDROP hDropInfo)
{
this->UpdateData(TRUE);
CRect rEdit;
m_editLogFilePath.GetWindowRect(rEdit); // 获得控件的坐标
POINT pos;
::GetCursorPos(&pos); // 获得光标当前的屏幕坐标 如果光标在edit控件中,则显示拖动的文件名,进行响应操作;否则就什么都不作
TCHAR cFileName[256];
UINT uFileCount, u;
uFileCount = ::DragQueryFile(hDropInfo, -1, cFileName, sizeof(cFileName)); // 拖拉的文件个数
if((pos.x > rEdit.left) && (pos.x < rEdit.right) && (pos.y < rEdit.bottom) && (pos.y > rEdit.top)){
for(u = 0; u < uFileCount; u++){
::DragQueryFile(hDropInfo, u, cFileName, sizeof(cFileName)); // 取得每个文件的文件名
m_editLogFilePath.SetWindowText(cFileName); // 如果指针在edit1里的话那么就把路径在edit1里显示
m_logFilePath = cFileName;
}
::DragFinish(hDropInfo);
}
else{
for(u = 0; u < uFileCount; u++){
::DragQueryFile(hDropInfo, u, cFileName, sizeof(cFileName)); // 取得每个文件的文件名
//m_edit2.SetWindowText(cFileName); // 如果指针不在edit1里的话那么就把路径在edit2里显示
}
::DragFinish(hDropInfo);
}
}
http://blog.csdn.net/eldn__/article/details/42264029
2014-12-30 11:41 313人阅读 评论(0) 收藏 举报
分类: MFC(11)
在目标dialog关联的类的.h里添加//注意控件和对话框属性都不要选Accept Files
[cpp] view plain copy print?
afx_msg void OnDropFiles(HDROP hDropInfo);
void PreSubclassWindow() ;
相应的.cpp里添加
[cpp] view plain copy print?
BEGIN_MESSAGE_MAP(Unrar, CDialog)
ON_WM_DROPFILES()//这句话很重要
END_MESSAGE_MAP()
[cpp] view plain copy print?
void Unrar::PreSubclassWindow()
{
DragAcceptFiles( TRUE );
CWnd::PreSubclassWindow();
}
[cpp] view plain copy print?
void CLogAnalyseToolDlg::OnDropFiles(HDROP hDropInfo)
{
this->UpdateData(TRUE);
CRect rEdit;
m_editLogFilePath.GetWindowRect(rEdit); // 获得控件的坐标
POINT pos;
::GetCursorPos(&pos); // 获得光标当前的屏幕坐标 如果光标在edit控件中,则显示拖动的文件名,进行响应操作;否则就什么都不作
TCHAR cFileName[256];
UINT uFileCount, u;
uFileCount = ::DragQueryFile(hDropInfo, -1, cFileName, sizeof(cFileName)); // 拖拉的文件个数
if((pos.x > rEdit.left) && (pos.x < rEdit.right) && (pos.y < rEdit.bottom) && (pos.y > rEdit.top)){
for(u = 0; u < uFileCount; u++){
::DragQueryFile(hDropInfo, u, cFileName, sizeof(cFileName)); // 取得每个文件的文件名
m_editLogFilePath.SetWindowText(cFileName); // 如果指针在edit1里的话那么就把路径在edit1里显示
m_logFilePath = cFileName;
}
::DragFinish(hDropInfo);
}
else{
for(u = 0; u < uFileCount; u++){
::DragQueryFile(hDropInfo, u, cFileName, sizeof(cFileName)); // 取得每个文件的文件名
//m_edit2.SetWindowText(cFileName); // 如果指针不在edit1里的话那么就把路径在edit2里显示
}
::DragFinish(hDropInfo);
}
}
http://blog.csdn.net/eldn__/article/details/42264029