BrowseDialogDlg.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:5k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // BrowseDialogDlg.cpp : implementation file
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "BrowseDialog.h"
  22. #include "BrowseDialogDlg.h"
  23. #include "AboutDlg.h"
  24. #ifdef _DEBUG
  25. #define new DEBUG_NEW
  26. #undef THIS_FILE
  27. static char THIS_FILE[] = __FILE__;
  28. #endif
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CBrowseDialogDlg dialog
  31. CBrowseDialogDlg::CBrowseDialogDlg(CWnd* pParent /*=NULL*/)
  32. : CXTResizeDialog(CBrowseDialogDlg::IDD, pParent)
  33. {
  34. //{{AFX_DATA_INIT(CBrowseDialogDlg)
  35. m_strDirectory = _T("");
  36. //}}AFX_DATA_INIT
  37. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  38. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  39. }
  40. void CBrowseDialogDlg::DoDataExchange(CDataExchange* pDX)
  41. {
  42. CXTResizeDialog::DoDataExchange(pDX);
  43. //{{AFX_DATA_MAP(CBrowseDialogDlg)
  44. DDX_Text(pDX, IDC_EDIT_DIR, m_strDirectory);
  45. //}}AFX_DATA_MAP
  46. }
  47. BEGIN_MESSAGE_MAP(CBrowseDialogDlg, CXTResizeDialog)
  48. //{{AFX_MSG_MAP(CBrowseDialogDlg)
  49. ON_WM_SYSCOMMAND()
  50. ON_WM_PAINT()
  51. ON_WM_QUERYDRAGICON()
  52. ON_BN_CLICKED(IDC_BTN_BROWSE, OnBtnBrowse)
  53. ON_WM_DESTROY()
  54. //}}AFX_MSG_MAP
  55. END_MESSAGE_MAP()
  56. /////////////////////////////////////////////////////////////////////////////
  57. // CBrowseDialogDlg message handlers
  58. BOOL CBrowseDialogDlg::OnInitDialog()
  59. {
  60. CXTResizeDialog::OnInitDialog();
  61. // Add "About..." menu item to system menu.
  62. // IDM_ABOUTBOX must be in the system command range.
  63. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  64. ASSERT(IDM_ABOUTBOX < 0xF000);
  65. CMenu* pSysMenu = GetSystemMenu(FALSE);
  66. if (pSysMenu != NULL)
  67. {
  68. CString strAboutMenu;
  69. strAboutMenu.LoadString(IDS_ABOUTBOX);
  70. if (!strAboutMenu.IsEmpty())
  71. {
  72. pSysMenu->AppendMenu(MF_SEPARATOR);
  73. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  74. }
  75. }
  76. // Set the icon for this dialog.  The framework does this automatically
  77. //  when the application's main window is not a dialog
  78. SetIcon(m_hIcon, TRUE);         // Set big icon
  79. SetIcon(m_hIcon, FALSE);        // Set small icon
  80. // Set control resizing.
  81. SetResize(IDC_EDIT_DIR, SZ_TOP_LEFT, SZ_TOP_RIGHT);
  82. SetResize(IDC_BTN_BROWSE, SZ_TOP_RIGHT, SZ_TOP_RIGHT);
  83. SetResize(IDCANCEL, SZ_BOTTOM_RIGHT, SZ_BOTTOM_RIGHT);
  84. // prevent vertical resizing.
  85. SetFlag(xtResizeNoVertical);
  86. // Load window placement
  87. LoadPlacement(_T("CBrowseDialogDlg"));
  88. return TRUE;  // return TRUE  unless you set the focus to a control
  89. }
  90. void CBrowseDialogDlg::OnDestroy()
  91. {
  92. // Save window placement
  93. SavePlacement(_T("CBrowseDialogDlg"));
  94. CXTResizeDialog::OnDestroy();
  95. }
  96. void CBrowseDialogDlg::OnSysCommand(UINT nID, LPARAM lParam)
  97. {
  98. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  99. {
  100. CAboutDlg dlgAbout;
  101. dlgAbout.DoModal();
  102. }
  103. else
  104. {
  105. CXTResizeDialog::OnSysCommand(nID, lParam);
  106. }
  107. }
  108. // If you add a minimize button to your dialog, you will need the code below
  109. //  to draw the icon.  For MFC applications using the document/view model,
  110. //  this is automatically done for you by the framework.
  111. void CBrowseDialogDlg::OnPaint()
  112. {
  113. if (IsIconic())
  114. {
  115. CPaintDC dc(this); // device context for painting
  116. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  117. // Center icon in client rectangle
  118. int cxIcon = GetSystemMetrics(SM_CXICON);
  119. int cyIcon = GetSystemMetrics(SM_CYICON);
  120. CRect rect;
  121. GetClientRect(&rect);
  122. int x = (rect.Width() - cxIcon + 1) / 2;
  123. int y = (rect.Height() - cyIcon + 1) / 2;
  124. // Draw the icon
  125. dc.DrawIcon(x, y, m_hIcon);
  126. }
  127. else
  128. {
  129. CXTResizeDialog::OnPaint();
  130. }
  131. }
  132. // The system calls this to obtain the cursor to display while the user drags
  133. //  the minimized window.
  134. HCURSOR CBrowseDialogDlg::OnQueryDragIcon()
  135. {
  136. return (HCURSOR) m_hIcon;
  137. }
  138. void CBrowseDialogDlg::OnBtnBrowse()
  139. {
  140. if (UpdateData(TRUE))
  141. {
  142. CXTBrowseDialog dlg;
  143. dlg.SetTitle(_T("Select Your Directory"));
  144. if (!m_strDirectory.IsEmpty())
  145. {
  146. TCHAR path[_MAX_PATH];
  147. STRCPY_S(path, _MAX_PATH, m_strDirectory);
  148. dlg.SetSelPath(path);
  149. }
  150. if (dlg.DoModal() == IDOK)
  151. {
  152. m_strDirectory = dlg.GetSelPath();
  153. UpdateData(FALSE);
  154. }
  155. }
  156. }