/********************************************************************
created: 2008/07/22
created: 22:7:2008 10:25
filename: SelectDialog.cpp
file base: SelectDialog
file ext: cpp
author: Hojjat Bohlooli - software@tarhafarinin.ir
purpose:
*********************************************************************/
#include "stdafx.h"
#include ".\SelectDialog.h"
#pragma warning( push )
#pragma warning( disable : 4311 4312 )
// CSelectDialog
CString CSelectDialog::m_strCurrendDirectory;
CStringArray CSelectDialog::m_SelectedItemList;
WNDPROC CSelectDialog::m_wndProc = NULL;
IMPLEMENT_DYNAMIC(CSelectDialog, CFileDialog)
CSelectDialog::CSelectDialog(BOOL bOpenFileDialog,
LPCTSTR lpszDefExt,
LPCTSTR lpszFileName,
DWORD dwFlags,
LPCTSTR lpszFilter,
CWnd* pParentWnd)
:CFileDialog(
bOpenFileDialog,
lpszDefExt,
lpszFileName,
dwFlags | OFN_EXPLORER | OFN_HIDEREADONLY & (~OFN_SHOWHELP),
lpszFilter,
pParentWnd)
{
dwFlags |= (OFN_EXPLORER | OFN_HIDEREADONLY & (~OFN_SHOWHELP));
};
CSelectDialog::~CSelectDialog()
{
};
BEGIN_MESSAGE_MAP(CSelectDialog, CFileDialog)
END_MESSAGE_MAP()
// CSelectDialog message handlers
BOOL CSelectDialog::OnFileNameOK()
{
if (CFileDialog* pDlg = (CFileDialog*)CWnd::FromHandle(GetParent()->m_hWnd))
{
CWnd* pWnd = pDlg->GetDlgItem(lst2); //getting list
if (pWnd == NULL)
return FALSE;
m_SelectedItemList.RemoveAll(); // emptying list
CListCtrl* wndLst1 = (CListCtrl*)(pWnd->GetDlgItem(1));
int nSelected = wndLst1->GetSelectedCount();
if (!nSelected) // nothing selected -- don't retrieve list
return FALSE;
CString strItemText, strDirectory = m_strCurrendDirectory;
if (strDirectory.Right(1) != _T("\\"))
strDirectory += _T("\\");
CString fileslist = _T("");
pDlg->SendMessage(CDM_GETSPEC, (WPARAM)MAX_PATH,
(LPARAM)fileslist.GetBuffer(MAX_PATH));
fileslist.ReleaseBuffer();
strItemText = strDirectory + fileslist;
if(nSelected == 1 && fileslist != _T(""))
{
m_SelectedItemList.Add(strItemText);
return CFileDialog::OnFileNameOK();
}
}
::MessageBeep( MB_ICONQUESTION );
return 1; //don't let the dialog to close
};
void CSelectDialog::OnFolderChange()
{
m_strCurrendDirectory = GetFolderPath();
CFileDialog::OnFolderChange();
};
void CSelectDialog::OnInitDone()
{
m_strCurrendDirectory = GetFolderPath();
CWnd* pFD = GetParent();
HideControl(edt1);
HideControl(cmb1);
HideControl(stc2);
//HideControl(cmb13);
//HideControl(stc3);
CRect rectCancel; pFD->GetDlgItem(IDCANCEL)->GetWindowRect(&rectCancel);
pFD->ScreenToClient(&rectCancel);
CRect rectOK; pFD->GetDlgItem(IDOK)->GetWindowRect(&rectOK);
pFD->ScreenToClient(&rectOK);
pFD->GetDlgItem(IDOK)->SetWindowPos(0,rectCancel.left - rectOK.Width() - 5, rectCancel.top, 0,0, SWP_NOZORDER | SWP_NOSIZE);
CRect rectList2; pFD->GetDlgItem(lst1)->GetWindowRect(&rectList2);
pFD->ScreenToClient(&rectList2);
pFD->GetDlgItem(lst1)->SetWindowPos(0,0,0,rectList2.Width(), abs(rectList2.top - (rectCancel.top - 5)), SWP_NOMOVE | SWP_NOZORDER);
CRect rectStatic;pFD->GetDlgItem(stc3)->GetWindowRect(&rectStatic);
pFD->ScreenToClient(&rectStatic);
pFD->GetDlgItem(stc3)->SetWindowPos(0,rectCancel.left - 375,rectCancel.top + 5, rectStatic.Width(), rectStatic.Height(), SWP_NOZORDER);
CRect rectEdit1;pFD->GetDlgItem(cmb13)->GetWindowRect(&rectEdit1);
pFD->ScreenToClient(&rectEdit1);
pFD->GetDlgItem(cmb13)->SetWindowPos(0,rectCancel.left - 320,rectCancel.top, rectEdit1.Width() - 15, rectEdit1.Height(), SWP_NOZORDER);
SetControlText(stc3, _T("Item name:"));
SetControlText(IDOK, _T("Select"));
m_wndProc = (WNDPROC)::SetWindowLong(pFD->m_hWnd, GWL_WNDPROC, (long)WindowProcNew);
pFD->CenterWindow();
};
LRESULT CALLBACK CSelectDialog::WindowProcNew(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
if (message == WM_COMMAND)
{
if (HIWORD(wParam) == BN_CLICKED)
{
if (LOWORD(wParam) == IDOK)
{
if (CFileDialog* pDlg = (CFileDialog*)CWnd::FromHandle(hwnd))
{
m_SelectedItemList.RemoveAll(); // emptying list
CWnd* pWnd = pDlg->GetDlgItem(lst2); //getting list
if (pWnd == NULL)
return FALSE;
CListCtrl* wndLst1 = (CListCtrl*)(pWnd->GetDlgItem(1));
int nSelected = wndLst1->GetSelectedCount();
if (!nSelected) // nothing selected -- don't retrieve list
return FALSE;
CString strItemText, strDirectory = m_strCurrendDirectory;
if (strDirectory.Right(1) != _T("\\"))
strDirectory += _T("\\");
int nItem = wndLst1->GetNextItem(-1,LVNI_SELECTED);
CString fileslist = _T("");
pDlg->SendMessage(CDM_GETSPEC, (WPARAM)MAX_PATH,
(LPARAM)fileslist.GetBuffer(MAX_PATH));
fileslist.ReleaseBuffer();
////////////////// Add directory names to list
while((nSelected--) > 0)
{
strItemText = wndLst1->GetItemText(nItem,0);
strItemText = strDirectory + strItemText;
DWORD attr = GetFileAttributes(strItemText);
if((attr != 0xFFFFFFFF) && (attr & FILE_ATTRIBUTE_DIRECTORY))
m_SelectedItemList.Add(strItemText);
nItem = wndLst1->GetNextItem(nItem, LVNI_SELECTED);
}
////////////////// Add FILE names to list
strItemText = _T("");
nSelected = wndLst1->GetSelectedCount();
if(nSelected > m_SelectedItemList.GetCount())
{
int MoreThanOnFile = fileslist.Find(_T("\""));
if(MoreThanOnFile != -1)
{
for(int i=0; i<fileslist.GetLength(); i++)
if(fileslist[i] != '\"')
{
strItemText.AppendFormat(_T("%c"),fileslist[i]);
if(fileslist[i-1] == '\"' && fileslist[i] == ' ')
strItemText.Delete(strItemText.GetLength()-1);
}
else if(!strItemText.IsEmpty())
{
m_SelectedItemList.Add((strDirectory+strItemText));
strItemText.Empty();
}
}
else
m_SelectedItemList.Add(strDirectory+fileslist);
}
pDlg->EndDialog(IDOK);
return NULL;
} // if IDOK
}
} // if BN_CLICKED
}// if WM_COMMAND
return CallWindowProc(m_wndProc, hwnd, message, wParam, lParam);
}
#pragma warning( pop )
![avatar](https://profile-avatar.csdnimg.cn/eec1940393ab4bbe90112aac09990711_wgj200123.jpg!1)
wgj200123
- 粉丝: 25
- 资源: 4
最新资源
- C#三轴涂胶软件源码:专业级功能集成,高效生产管理与控制,实时报警监控与用户权限管控,高效精准的C#三轴涂胶软件源码:具备轨迹编辑、自动纠偏等功能与用户权限管理,C#三轴涂胶软件源码,该软件已经在客户
- 基于HTML5 Canvas的3D频谱音乐歌词同步播放器设计源码
- 永磁同步电机驱动器的自适应SDRE非线性无传感器速度控制策略(Matlab&Simulink仿真实现研究),永磁同步电机驱动器的自适应SDRE非线性无传感器速度控制策略及Matlab&Simulink
- 基于重力传感器与客流相机技术的上海零售展人货匹配客户端设计源码
- 基于MBD开发的电动汽车主驱电机控制器模型与量产材料研究(a38),基于MBD开发的电动汽车主驱电机控制器模型与量产材料研究,基于MBD开发的电动汽车主驱电机控制器模型及开发材料(a38?),量产模
- 基于Vue框架的洗衣卡前端页面设计源码
- 基于Vue框架的刘汉龙院士团队后台管理系统设计源码
- 基于位错密度的晶体塑性模型:微观结构与力学行为的关联研究,基于位错密度分析的多角度晶体塑性模型探究,基于位错密度的晶体塑性模型 ,基于位错密度的晶体塑性模型; 晶体塑性; 位错密度; 模型,基于位错密
- 高质量10bit SAR ADC电路设计文档:详尽流程、GPDK工艺与Virtuoso仿真全配套资源,高性能10bit SAR ADC电路设计文档,含详细仿真与gpdk工艺,可直接导入Virtuoso
- 基于陈自鸣先生研究成果的牛码五笔输入法设计源码
- 基于Java的Android蓝牙串口通信库设计源码
- 基于Java和HTML技术的包头师范农产品溯源项目设计源码
- 电力系统暂态稳定分析:基于Matlab的三机九节点系统模拟与功能详解(含临界切除时间考量)报告(共24页),电力系统暂态稳定分析:基于Matlab的三机九节点系统模拟与临界切除时间考量报告,电力系统暂
- V2G电动汽车双向充电桩电路仿真:SVPWM控制开关信号,电压外环电流内环实现整流逆变及功率输出,直流侧充放电模块设计,buck boost电路恒压恒流控制 ,基于SVPWM控制和双层调节系统的电动汽
- AC DC混合微电网Simulink模型:大型交直流混合微电网与双向功率变换器控制策略研究,AC DC混合微电网Simulink模型:交直流双向功率变换与控制策略研究,AC DC混合微电网Simuli
- 昆仑通态MCGS与欧姆龙E5CC温控器通讯:PID控制及输出启停功能实现,昆仑通态MCGS与欧姆龙E5CC温控器通讯:PID控制及输出启停功能实现,昆仑通态MCGS与欧姆龙E5CC温控器通讯+PID模
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)