123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- // Dlg_Settings.cpp : 实现文件
- //
- #include "stdafx.h"
- #include "StoneU_HC_OCX.h"
- #include "Dlg_Settings.h"
- #include "Global.h"
- // CDlg_Settings 对话框
- #define REMOVE_HEIGHT 28
- int CALLBACK _SHBrowseForFolderCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData);
- BOOL SelectFolder(CString& lpstrFolderPos, CString strInitFolder)
- {
- BOOL bRes = FALSE;
- char lpszPath[MAX_PATH];
- LPMALLOC lpMalloc;
- BROWSEINFO sInfo;
- LPITEMIDLIST lpidlBrowse;
- if (::SHGetMalloc(&lpMalloc) != NOERROR)
- return FALSE;
- if (strInitFolder != _T(""))
- {
- if(strInitFolder.Right(1) == _T("\\")) // 删除尾部的"\\"
- strInitFolder = strInitFolder.Left(strInitFolder.GetLength() - 1);
- }
- ::ZeroMemory(&sInfo, sizeof(BROWSEINFO));
- sInfo.pidlRoot = 0;
- sInfo.pszDisplayName = lpszPath;
- sInfo.lpszTitle = _T("请选择您需要的目的文件夹:");
- sInfo.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE | BIF_USENEWUI;
- sInfo.lpfn = _SHBrowseForFolderCallbackProc;
- sInfo.lParam = (LPARAM)strInitFolder.GetBuffer(0);
- // 显示文件夹选择对话框
- lpidlBrowse = ::SHBrowseForFolder(&sInfo);
- if (lpidlBrowse != NULL)
- {
- // 取得文件夹名
- if (::SHGetPathFromIDList(lpidlBrowse,lpszPath))
- {
- lpstrFolderPos = _T("");
- lpstrFolderPos = lpszPath;
- if(lpstrFolderPos != "")
- {
- if(lpstrFolderPos.Right(1) != _T("\\"))
- lpstrFolderPos += _T("\\"); //在末尾时附加"\\"
- }
- }
- bRes = TRUE;
- }
- if(lpidlBrowse != NULL)
- {
- ::CoTaskMemFree(lpidlBrowse);
- }
- lpMalloc->Release();
- return bRes;
- }
- int CALLBACK _SHBrowseForFolderCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
- {
- static HWND hWndEdit = NULL;
- CString strDir;
- switch (uMsg)
- {
- case BFFM_INITIALIZED:
- {
- ::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);
- CRect rect;
- HWND hChild = GetWindow(hwnd, GW_CHILD);
- while (hChild)
- {
- TCHAR szClass[256];
- GetClassName(hChild, szClass, 255);
- // 如果是中间的树目录控件,使可以随窗口移动大小
- if (strcmp(szClass, "SHBrowseForFolder ShellNameSpace Control") == 0)
- {
- GetWindowRect(hChild, rect);
- rect.top -= REMOVE_HEIGHT;
- CPoint pt = rect.TopLeft();
- ScreenToClient(hwnd, &pt);
- MoveWindow(hChild, pt.x, pt.y, rect.Width(), rect.Height(), TRUE);
- }
- if (strcmp(szClass, "Edit") == 0)
- {
- hWndEdit = hChild;
- }
- hChild = GetNextWindow(hChild, GW_HWNDNEXT);
- }
- SetWindowText(hwnd, "文件浏览...");
- }
- break;
- case BFFM_SELCHANGED:
- if(hWndEdit)
- {
- if(::SHGetPathFromIDList((LPITEMIDLIST)lParam, strDir.GetBufferSetLength(MAX_PATH)))
- {
- SetWindowText(hWndEdit, strDir);
- }
- else
- {
- SetWindowText(hWndEdit, NULL);
- SendMessage(hwnd, BFFM_VALIDATEFAILED, 0, 0);
- }
- strDir.ReleaseBuffer();
- }
- break;
- default:
- break;
- }
- return 0;
- }
- IMPLEMENT_DYNAMIC(CDlg_Settings, CDialog)
- CDlg_Settings::CDlg_Settings(CWnd* pParent /*=NULL*/)
- : CDialog(CDlg_Settings::IDD, pParent)
- , m_sEdit_VideoPath(_T(""))
- , m_nComb_Velume(0)
- , m_nComb_OperateType(0)
- , m_nComb_VideoMaxTime(0)
- , m_nComb_NoMotionTime(0)
- {
- }
- CDlg_Settings::~CDlg_Settings()
- {
- }
- void CDlg_Settings::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- DDX_Text(pDX, IDC_EDIT_VIDEOPATH, m_sEdit_VideoPath);
- DDX_Control(pDX, IDC_COMBO_VELUME, m_Comb_Velume);
- DDX_CBIndex(pDX, IDC_COMBO_VELUME, m_nComb_Velume);
- DDX_Control(pDX, IDC_COMBO_OPERATETYPE, m_Comb_OperateType);
- DDX_CBIndex(pDX, IDC_COMBO_OPERATETYPE, m_nComb_OperateType);
- DDX_Control(pDX, IDC_BTN_BROWSE, m_btn_Browse);
- DDX_Control(pDX, IDC_BTN_SAVE, m_btn_Save);
- DDX_Control(pDX, IDC_COMBO_VIDEOMAXTIME, m_Comb_VideoMaxTime);
- DDX_CBIndex(pDX, IDC_COMBO_VIDEOMAXTIME, m_nComb_VideoMaxTime);
- DDX_Control(pDX, IDC_COMBO_NOMOTIONTIME, m_Comb_NoMotionTime);
- DDX_CBIndex(pDX, IDC_COMBO_NOMOTIONTIME, m_nComb_NoMotionTime);
- }
- BEGIN_MESSAGE_MAP(CDlg_Settings, CDialog)
- ON_BN_CLICKED(IDC_BTN_BROWSE, OnBnClickedBtnBrowse)
- ON_BN_CLICKED(IDC_BTN_SAVE, OnBnClickedBtnSave)
- END_MESSAGE_MAP()
- // CDlg_Settings 消息处理程序
- BOOL CDlg_Settings::OnInitDialog()
- {
- CDialog::OnInitDialog();
- SetCtrlPos();
- // TODO: 在此添加额外的初始化
- m_Comb_Velume.InsertString( 0,"500m" );
- m_Comb_Velume.InsertString(1,"1G");
- m_Comb_Velume.InsertString(2,"3G");
- m_Comb_Velume.InsertString(3,"5G");
- m_Comb_Velume.SetCurSel(0);
- m_Comb_OperateType.InsertString(0,"覆盖最早的视频" );
- m_Comb_OperateType.InsertString(1,"不保存视频");
- m_Comb_OperateType.SetCurSel(0);
- m_Comb_VideoMaxTime.InsertString(0,"3分钟" );
- m_Comb_VideoMaxTime.InsertString(1,"5分钟");
- m_Comb_VideoMaxTime.InsertString(2,"10分钟");
- m_Comb_VideoMaxTime.InsertString(3,"20分钟");
- m_Comb_VideoMaxTime.InsertString(4,"30分钟");
- m_Comb_VideoMaxTime.InsertString(5,"1小时");
- m_Comb_VideoMaxTime.SetCurSel(0);
- m_Comb_NoMotionTime.InsertString(0,"5秒" );
- m_Comb_NoMotionTime.InsertString(1,"10秒");
- m_Comb_NoMotionTime.InsertString(2,"30秒");
- m_Comb_NoMotionTime.InsertString(3,"1分钟");
- m_Comb_NoMotionTime.InsertString(4,"3分钟");
- m_Comb_NoMotionTime.SetCurSel(0);
- m_sEdit_VideoPath = g_strVideoPath;
- m_nComb_Velume = g_nDiskVolume;
- m_nComb_OperateType = g_nOperateType;
- m_nComb_VideoMaxTime = g_nVideoMaxTime;
- m_nComb_NoMotionTime = g_nNoMotionTime;
- UpdateData( false );
- //m_btn_Browse.SetBitmaps(IDB_BITMAP_SAVE, RGB(255, 0, 255));
- //m_btn_Browse.SetFlat(FALSE);
- //m_btn_Browse.SetAlign(CButtonST::ST_ALIGN_HORIZ);
- //m_btn_Browse.SetIcon(IDI_BROWSE);
- //m_btn_Browse.SetFlat(FALSE);
- //m_btn_Browse.SetAlign(CButtonST::ST_ALIGN_HORIZ);
- //m_btn_Save.SetBitmaps(IDB_BITMAP_SAVE, RGB(255, 0, 255));
- //m_btn_Save.SetFlat(FALSE);
- //m_btn_Save.SetAlign(CButtonST::ST_ALIGN_HORIZ);
- return TRUE; // return TRUE unless you set the focus to a control
- // 异常: OCX 属性页应返回 FALSE
- }
- void CDlg_Settings::SetCtrlPos()
- {
- if( g_nChangePos==0 )
- return;
- this->MoveWindow( g_Rect );
- }
- void CDlg_Settings::OnBnClickedBtnBrowse()
- {
- SelectFolder( m_sEdit_VideoPath,"D:\\" );
- UpdateData( false );
- }
- void CDlg_Settings::OnBnClickedBtnSave()
- {
- UpdateData();
- g_strVideoPath = m_sEdit_VideoPath;
- g_nDiskVolume = m_nComb_Velume;
- g_nOperateType = m_nComb_OperateType;
- g_nVideoMaxTime = m_nComb_VideoMaxTime;
- g_nNoMotionTime = m_nComb_NoMotionTime;
- g_IniFile.SetVarStr(_T("video"),_T("VideoPath"),g_strVideoPath);
- g_IniFile.SetVarInt(_T("video"),_T("DiskVelume"),g_nDiskVolume);
- g_IniFile.SetVarInt(_T("video"),_T("OperateType"),g_nOperateType);
- g_IniFile.SetVarInt(_T("video"),_T("VideoMaxTime"),g_nVideoMaxTime);
- g_IniFile.SetVarInt(_T("video"),_T("NoMotionTime"),g_nNoMotionTime);
- if (!SetCurrentDirectory(g_strVideoPath))
- CreateDirectory(g_strVideoPath, NULL);
- }
|