SetParamDlg.cpp
上传用户:zhanglf88
上传日期:2013-11-19
资源大小:6036k
文件大小:17k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. // SetParamDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "SetParamDlg.h"
  5. #ifdef _DEBUG
  6. #define new DEBUG_NEW
  7. #undef THIS_FILE
  8. static char THIS_FILE[] = __FILE__;
  9. #endif
  10. /////////////////////////////////////////////////////////////////////////////
  11. // CTechComboBox
  12. BOOL CTechComboBox::Initialize( )
  13. {
  14. ResetContent();
  15. for( int nTech = STT_MIN; nTech < STT_MAX; nTech ++ )
  16. {
  17. int nIndex = AddString( AfxGetSTTFullName(nTech) );
  18. SetItemData( nIndex, nTech );
  19. }
  20. SetCurSel( 0 );
  21. return TRUE;
  22. }
  23. BOOL CTechComboBox::Select( int nTech )
  24. {
  25. for( int i=0; i<GetCount(); i++ )
  26. {
  27. if( ((UINT)nTech) == GetItemData(i) )
  28. {
  29. SetCurSel(i);
  30. return TRUE;
  31. }
  32. }
  33. return FALSE;
  34. }
  35. int CTechComboBox::GetSelect( )
  36. {
  37. int nSel = GetCurSel();
  38. if( CB_ERR == nSel )
  39. return STT_MIN;
  40. int nTech = GetItemData(nSel);
  41. if( nTech >= STT_MIN && nTech <= STT_MAX )
  42. return nTech;
  43. return STT_MIN;
  44. }
  45. /////////////////////////////////////////////////////////////////////////////
  46. // CKTypeComboBox
  47. BOOL CKTypeComboBox::Initialize( )
  48. {
  49. ResetContent();
  50. int ktype, nIndex, nSel = CB_ERR;
  51. ktype = CKData::ktypeMin5;
  52. nIndex = AddString( AfxGetKTypeString(ktype) );
  53. SetItemData( nIndex, ktype );
  54. ktype = CKData::ktypeMin15;
  55. nIndex = AddString( AfxGetKTypeString(ktype) );
  56. SetItemData( nIndex, ktype );
  57. ktype = CKData::ktypeMin30;
  58. nIndex = AddString( AfxGetKTypeString(ktype) );
  59. SetItemData( nIndex, ktype );
  60. ktype = CKData::ktypeMin60;
  61. nIndex = AddString( AfxGetKTypeString(ktype) );
  62. SetItemData( nIndex, ktype );
  63. ktype = CKData::ktypeDay;
  64. nIndex = AddString( AfxGetKTypeString(ktype) );
  65. SetItemData( nIndex, ktype );
  66. nSel = nIndex;
  67. ktype = CKData::ktypeWeek;
  68. nIndex = AddString( AfxGetKTypeString(ktype) );
  69. SetItemData( nIndex, ktype );
  70. ktype = CKData::ktypeMonth;
  71. nIndex = AddString( AfxGetKTypeString(ktype) );
  72. SetItemData( nIndex, ktype );
  73. SetCurSel( nSel );
  74. return TRUE;
  75. }
  76. BOOL CKTypeComboBox::InitializeDayMin5( )
  77. {
  78. ResetContent();
  79. int ktype, nIndex, nSel = CB_ERR;
  80. ktype = CKData::ktypeMin5;
  81. nIndex = AddString( AfxGetKTypeString(ktype) );
  82. SetItemData( nIndex, ktype );
  83. ktype = CKData::ktypeDay;
  84. nIndex = AddString( AfxGetKTypeString(ktype) );
  85. SetItemData( nIndex, ktype );
  86. nSel = nIndex;
  87. SetCurSel( nSel );
  88. return TRUE;
  89. }
  90. BOOL CKTypeComboBox::InitializeDay( )
  91. {
  92. ResetContent();
  93. int ktype, nIndex, nSel = CB_ERR;
  94. ktype = CKData::ktypeDay;
  95. nIndex = AddString( AfxGetKTypeString(ktype) );
  96. SetItemData( nIndex, ktype );
  97. nSel = nIndex;
  98. ktype = CKData::ktypeWeek;
  99. nIndex = AddString( AfxGetKTypeString(ktype) );
  100. SetItemData( nIndex, ktype );
  101. ktype = CKData::ktypeMonth;
  102. nIndex = AddString( AfxGetKTypeString(ktype) );
  103. SetItemData( nIndex, ktype );
  104. SetCurSel( nSel );
  105. return TRUE;
  106. }
  107. BOOL CKTypeComboBox::InitializeWeek( )
  108. {
  109. ResetContent();
  110. int ktype, nIndex, nSel = CB_ERR;
  111. ktype = CKData::ktypeWeek;
  112. nIndex = AddString( AfxGetKTypeString(ktype) );
  113. SetItemData( nIndex, ktype );
  114. nSel = nIndex;
  115. ktype = CKData::ktypeMonth;
  116. nIndex = AddString( AfxGetKTypeString(ktype) );
  117. SetItemData( nIndex, ktype );
  118. SetCurSel( nSel );
  119. return TRUE;
  120. }
  121. BOOL CKTypeComboBox::Select( int nKType )
  122. {
  123. for( int i=0; i<GetCount(); i++ )
  124. {
  125. if( ((UINT)nKType) == GetItemData(i) )
  126. {
  127. SetCurSel(i);
  128. return TRUE;
  129. }
  130. }
  131. return FALSE;
  132. }
  133. int CKTypeComboBox::GetSelect( )
  134. {
  135. int nSel = GetCurSel();
  136. if( CB_ERR == nSel )
  137. return CKData::ktypeDay;
  138. int nKType = GetItemData(nSel);
  139. if( nKType >= CKData::ktypeMin && nKType <= CKData::ktypeMax )
  140. return nKType;
  141. return CKData::ktypeDay;
  142. }
  143. /////////////////////////////////////////////////////////////////////////////
  144. // CIntensityComboBox
  145. BOOL CIntensityComboBox::InitializeGate( )
  146. {
  147. ResetContent();
  148. int nSignal, nIndex, nSel = CB_ERR;
  149. for( nSignal = ITS_MAX; nSignal >= ITS_MIN; nSignal -- )
  150. {
  151. if( ITSG_BUYINTENSE != nSignal && ITSG_BUY != nSignal && ITSG_BUYFEEBLE != nSignal && ITS_NOTHING != nSignal
  152. && ITSG_SELLINTENSE != nSignal && ITSG_SELL != nSignal && ITSG_SELLFEEBLE != nSignal )
  153. continue;
  154. nIndex = AddString( AfxGetIntensityString(nSignal) );
  155. SetItemData( nIndex, nSignal );
  156. if( ITS_NOTHING == nSignal )
  157. nSel = nIndex;
  158. }
  159. SetCurSel( nSel );
  160. return TRUE;
  161. }
  162. BOOL CIntensityComboBox::Initialize( )
  163. {
  164. ResetContent();
  165. int nSignal, nIndex, nSel = CB_ERR;
  166. for( nSignal = ITS_MAX; nSignal >= ITS_MIN; nSignal -- )
  167. {
  168. if( ITS_BUYINTENSE != nSignal && ITS_BUY != nSignal && ITS_BUYFEEBLE != nSignal && ITS_NOTHING != nSignal
  169. && ITS_SELLINTENSE != nSignal && ITS_SELL != nSignal && ITS_SELLFEEBLE != nSignal )
  170. continue;
  171. nIndex = AddString( AfxGetIntensityString(nSignal) );
  172. SetItemData( nIndex, nSignal );
  173. if( ITS_NOTHING == nSignal )
  174. nSel = nIndex;
  175. }
  176. SetCurSel( nSel );
  177. return TRUE;
  178. }
  179. BOOL CIntensityComboBox::Select( UINT nITS )
  180. {
  181. for( int i=0; i<GetCount(); i++ )
  182. {
  183. if( nITS == GetItemData(i) )
  184. {
  185. SetCurSel(i);
  186. return TRUE;
  187. }
  188. }
  189. return FALSE;
  190. }
  191. BOOL CIntensityComboBox::ResetAndSelect( UINT nITS )
  192. {
  193. Initialize( );
  194. return Select( nITS );
  195. }
  196. int CIntensityComboBox::GetSelect( )
  197. {
  198. int nSel = GetCurSel();
  199. if( CB_ERR == nSel )
  200. return ITS_NOTHING;
  201. int nITS = GetItemData(nSel);
  202. if( nITS >= ITS_MIN && nITS <= ITS_MAX )
  203. return nITS;
  204. return ITS_NOTHING;
  205. }
  206. /////////////////////////////////////////////////////////////////////////////
  207. // ParamHelp
  208. void ParamHelp( UINT nTech )
  209. {
  210. CString strTech = AfxGetSTTShortName( nTech );
  211. if( !strTech.IsEmpty() )
  212. strTech = "#" + strTech;
  213. HtmlHelp(NULL, "StockAna.chm::/htm/techs.htm" + strTech, HH_DISPLAY_TOPIC, 0);
  214. }
  215. /////////////////////////////////////////////////////////////////////////////
  216. // CParamDlg
  217. void CParamDlg::DoDataExchange(CDataExchange* pDX)
  218. {
  219. CDialog::DoDataExchange(pDX);
  220. DDX_Control(pDX, IDC_PARAMHELP, m_btnParamHelp);
  221. DDX_Control(pDX, IDC_DEFAULT, m_btnDefault);
  222. }
  223. /////////////////////////////////////////////////////////////////////////////
  224. // CSetParamDlg dialog
  225. #define SETPARAM_MAINLEFT 215
  226. #define SETPARAM_MAINTOP 23
  227. CSetParamDlg::CSetParamDlg(CWnd* pParent /*=NULL*/)
  228. : CDialog(CSetParamDlg::IDD, pParent)
  229. {
  230. //{{AFX_DATA_INIT(CSetParamDlg)
  231. //}}AFX_DATA_INIT
  232. m_pParamDlg = NULL;
  233. m_nSTTFirstSelected = STT_MIN-1;
  234. }
  235. CSetParamDlg::~CSetParamDlg( )
  236. {
  237. if( m_pParamDlg )
  238. {
  239. delete m_pParamDlg;
  240. m_pParamDlg = NULL;
  241. }
  242. }
  243. void CSetParamDlg::SetFirstSelected( UINT nSTT )
  244. {
  245. m_nSTTFirstSelected = nSTT;
  246. }
  247. void CSetParamDlg::DoDataExchange(CDataExchange* pDX)
  248. {
  249. CDialog::DoDataExchange(pDX);
  250. //{{AFX_DATA_MAP(CSetParamDlg)
  251. DDX_Control(pDX, IDC_ALLDEFAULT, m_btnAllDefault);
  252. DDX_Control(pDX, IDOK, m_btnOK);
  253. DDX_Control(pDX, IDC_TREE, m_tree);
  254. //}}AFX_DATA_MAP
  255. }
  256. BEGIN_MESSAGE_MAP(CSetParamDlg, CDialog)
  257. //{{AFX_MSG_MAP(CSetParamDlg)
  258. ON_BN_CLICKED(IDC_ALLDEFAULT, OnAlldefault)
  259. ON_NOTIFY(TVN_SELCHANGED, IDC_TREE, OnSelchangedTree)
  260. ON_NOTIFY(TVN_SELCHANGING, IDC_TREE, OnSelchangingTree)
  261. //}}AFX_MSG_MAP
  262. END_MESSAGE_MAP()
  263. /////////////////////////////////////////////////////////////////////////////
  264. // CSetParamDlg message handlers
  265. BOOL CSetParamDlg::OnInitDialog() 
  266. {
  267. CDialog::OnInitDialog();
  268. m_ImageList.Create(IDB_TECHSVIEW_ICONS, 16, 1, RGB(0,255,0));
  269. m_tree.SetImageList (&m_ImageList, TVSIL_NORMAL);
  270. CString strClassLast;
  271. HTREEITEM hTechClass = NULL, hTech = NULL;
  272. HTREEITEM hTechClassKLine = NULL, hTechFirstSelected = NULL;
  273. UINT nTechUserCount = CTechUser::GetTechUserCount();
  274. for( UINT i=STT_MIN; i <= STT_MAX+nTechUserCount; i ++ )
  275. {
  276. UINT nTech = i;
  277. if( nTech > STT_MAX )
  278. nTech = i-STT_MAX-1+STT_USER_MIN;
  279. CString strClass = AfxGetSTTClassName(nTech);
  280. if( strClass.GetLength() > 0 && 0 != strClass.Compare(strClassLast) )
  281. {
  282. hTechClass = m_tree.InsertItem(strClass,/*IMG_TECHCLASS*/0,/*IMG_TECHCLASS_SEL*/0);
  283. m_tree.SetItemData( hTechClass, 0 );
  284. if( nTech >= STT_KLINE_MIN && nTech <= STT_KLINE_MAX )
  285. hTechClassKLine = hTechClass;
  286. }
  287. strClassLast = strClass;
  288. if( NULL == hTechClass )
  289. hTechClass = TVI_ROOT;
  290. CString strTechName = AfxGetSTTFullName(nTech);
  291. hTech = m_tree.InsertItem(strTechName,/*IMG_TECH*/0,/*IMG_TECH_SEL*/0,hTechClass);
  292. m_tree.SetItemData( hTech, nTech );
  293. if( m_nSTTFirstSelected == nTech )
  294. hTechFirstSelected = hTech;
  295. }
  296. if( hTechFirstSelected )
  297. {
  298. m_tree.Expand( m_tree.GetParentItem(hTechFirstSelected), TVE_EXPAND );
  299. m_tree.Select( hTechFirstSelected, TVGN_CARET );
  300. }
  301. else
  302. {
  303. m_tree.Expand( hTechClassKLine, TVE_EXPAND );
  304. HTREEITEM hSelect = m_tree.GetChildItem( hTechClassKLine );
  305. m_tree.Select( hSelect, TVGN_CARET );
  306. }
  307. return TRUE;  // return TRUE unless you set the focus to a control
  308.               // EXCEPTION: OCX Property Pages should return FALSE
  309. }
  310. void CSetParamDlg::OnAlldefault() 
  311. {
  312. // TODO: Add your control notification handler code here
  313. AfxGetProfile().GetTechParameters().SetDefaultParametersAll( );
  314. if( m_pParamDlg && ::IsWindow(m_pParamDlg->GetSafeHwnd()) )
  315. {
  316. m_pParamDlg->RefreshData( FALSE );
  317. }
  318. }
  319. void CSetParamDlg::OnSelchangingTree(NMHDR* pNMHDR, LRESULT* pResult) 
  320. {
  321. NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
  322. // TODO: Add your control notification handler code here
  323. if( m_pParamDlg && ::IsWindow(m_pParamDlg->GetSafeHwnd()) )
  324. {
  325. if( !m_pParamDlg->RefreshData( TRUE ) )
  326. {
  327. AfxMessageBox( IDS_SETPARAM_INVALID, MB_OK | MB_ICONINFORMATION );
  328. *pResult = -1;
  329. return;
  330. }
  331. m_pParamDlg->OnCmdMsg( IDOK, 0, NULL, NULL );
  332. delete m_pParamDlg;
  333. m_pParamDlg = NULL;
  334. }
  335. *pResult = 0;
  336. }
  337. void CSetParamDlg::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult)
  338. {
  339. NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
  340. // TODO: Add your control notification handler code here
  341. HTREEITEM hSelItem = m_tree.GetSelectedItem();
  342. if( hSelItem )
  343. {
  344. DWORD dwData = m_tree.GetItemData( hSelItem );
  345. if( !( (dwData >= STT_MIN && dwData <= STT_MAX) || dwData >= STT_USER_MIN ) )
  346. return;
  347. CTechParameters & param = AfxGetProfile().GetTechParameters();
  348. switch( dwData )
  349. {
  350. case STT_MA: m_pParamDlg = new CMADlg(NULL,&(param.ma)); m_pParamDlg->Create( CMADlg::IDD, this ); break;
  351. case STT_BBI: m_pParamDlg = new CBBIDlg(NULL,&(param.bbi)); m_pParamDlg->Create( CBBIDlg::IDD, this ); break;
  352. case STT_BOLL: m_pParamDlg = new CBOLLDlg(NULL,&(param.boll)); m_pParamDlg->Create( CBOLLDlg::IDD, this ); break;
  353. case STT_PV: m_pParamDlg = new CPVDlg(NULL,&(param.pv)); m_pParamDlg->Create( CPVDlg::IDD, this ); break;
  354. case STT_SAR: m_pParamDlg = new CSARDlg(NULL,&(param.sar)); m_pParamDlg->Create( CSARDlg::IDD, this ); break;
  355. case STT_DJ: m_pParamDlg = new CDJDlg(NULL,&(param.dj)); m_pParamDlg->Create( CDJDlg::IDD, this ); break;
  356. case STT_CW: m_pParamDlg = new CCWDlg(NULL,&(param.cw)); m_pParamDlg->Create( CCWDlg::IDD, this ); break;
  357. case STT_MACD: m_pParamDlg = new CMACDDlg(NULL,&(param.macd)); m_pParamDlg->Create( CMACDDlg::IDD, this ); break;
  358. case STT_MIKE: m_pParamDlg = new CMIKEDlg(NULL,&(param.mike)); m_pParamDlg->Create( CMIKEDlg::IDD, this ); break;
  359. case STT_PSY: m_pParamDlg = new CPSYDlg(NULL,&(param.psy)); m_pParamDlg->Create( CPSYDlg::IDD, this ); break;
  360. case STT_VOLUME: m_pParamDlg = new CVOLUMEDlg(NULL,&(param.volume)); m_pParamDlg->Create( CVOLUMEDlg::IDD, this ); break;
  361. case STT_NVI: m_pParamDlg = new CNVIDlg(NULL,&(param.nvi)); m_pParamDlg->Create( CNVIDlg::IDD, this ); break;
  362. case STT_PVI: m_pParamDlg = new CPVIDlg(NULL,&(param.pvi)); m_pParamDlg->Create( CPVIDlg::IDD, this ); break;
  363. case STT_VR: m_pParamDlg = new CVRDlg(NULL,&(param.vr)); m_pParamDlg->Create( CVRDlg::IDD, this ); break;
  364. case STT_VROC: m_pParamDlg = new CVROCDlg(NULL,&(param.vroc)); m_pParamDlg->Create( CVROCDlg::IDD, this ); break;
  365. case STT_OBV: m_pParamDlg = new COBVDlg(NULL,&(param.obv)); m_pParamDlg->Create( COBVDlg::IDD, this ); break;
  366. case STT_MOBV: m_pParamDlg = new CMOBVDlg(NULL,&(param.mobv)); m_pParamDlg->Create( CMOBVDlg::IDD, this ); break;
  367. case STT_MFI: m_pParamDlg = new CMFIDlg(NULL,&(param.mfi)); m_pParamDlg->Create( CMFIDlg::IDD, this ); break;
  368. case STT_VMACD: m_pParamDlg = new CVMACDDlg(NULL,&(param.vmacd)); m_pParamDlg->Create( CVMACDDlg::IDD, this ); break;
  369. case STT_WVAD: m_pParamDlg = new CWVADDlg(NULL,&(param.wvad)); m_pParamDlg->Create( CWVADDlg::IDD, this ); break;
  370. case STT_EMV: m_pParamDlg = new CEMVDlg(NULL,&(param.emv)); m_pParamDlg->Create( CEMVDlg::IDD, this ); break;
  371. case STT_VRSI: m_pParamDlg = new CVRSIDlg(NULL,&(param.vrsi)); m_pParamDlg->Create( CVRSIDlg::IDD, this ); break;
  372. case STT_NVRSI: m_pParamDlg = new CNVRSIDlg(NULL,&(param.nvrsi)); m_pParamDlg->Create( CNVRSIDlg::IDD, this ); break;
  373. case STT_AD: m_pParamDlg = new CADDlg(NULL,&(param.ad)); m_pParamDlg->Create( CADDlg::IDD, this ); break;
  374. case STT_CI: m_pParamDlg = new CCIDlg(NULL,&(param.ci)); m_pParamDlg->Create( CCIDlg::IDD, this ); break;
  375. case STT_KDJ: m_pParamDlg = new CKDJDlg(NULL,&(param.kdj)); m_pParamDlg->Create( CKDJDlg::IDD, this ); break;
  376. case STT_R: m_pParamDlg = new CRDlg(NULL,&(param.r)); m_pParamDlg->Create( CRDlg::IDD, this ); break;
  377. case STT_RSI: m_pParamDlg = new CRSIDlg(NULL,&(param.rsi)); m_pParamDlg->Create( CRSIDlg::IDD, this ); break;
  378. case STT_BIAS: m_pParamDlg = new CBIASDlg(NULL,&(param.bias)); m_pParamDlg->Create( CBIASDlg::IDD, this ); break;
  379. case STT_MTM: m_pParamDlg = new CMTMDlg(NULL,&(param.mtm)); m_pParamDlg->Create( CMTMDlg::IDD, this ); break;
  380. case STT_DMI: m_pParamDlg = new CDMIDlg(NULL,&(param.dmi)); m_pParamDlg->Create( CDMIDlg::IDD, this ); break;
  381. case STT_ROC: m_pParamDlg = new CROCDlg(NULL,&(param.roc)); m_pParamDlg->Create( CROCDlg::IDD, this ); break;
  382. case STT_CCI: m_pParamDlg = new CCCIDlg(NULL,&(param.cci)); m_pParamDlg->Create( CCCIDlg::IDD, this ); break;
  383. case STT_CV: m_pParamDlg = new CCVDlg(NULL,&(param.cv)); m_pParamDlg->Create( CCVDlg::IDD, this ); break;
  384. case STT_ARBR: m_pParamDlg = new CARBRDlg(NULL,&(param.arbr)); m_pParamDlg->Create( CARBRDlg::IDD, this ); break;
  385. case STT_CR: m_pParamDlg = new CCRDlg(NULL,&(param.cr)); m_pParamDlg->Create( CCRDlg::IDD, this ); break;
  386. case STT_OSC: m_pParamDlg = new COSCDlg(NULL,&(param.osc)); m_pParamDlg->Create( COSCDlg::IDD, this ); break;
  387. case STT_UOS: m_pParamDlg = new CUOSDlg(NULL,&(param.uos)); m_pParamDlg->Create( CUOSDlg::IDD, this ); break;
  388. case STT_MAOSC: m_pParamDlg = new CMAOSCDlg(NULL,&(param.maosc)); m_pParamDlg->Create( CMAOSCDlg::IDD, this ); break;
  389. case STT_36BIAS: m_pParamDlg = new C36BIASDlg(NULL,&(param.bias36)); m_pParamDlg->Create( C36BIASDlg::IDD, this ); break;
  390. case STT_DPO: m_pParamDlg = new CDPODlg(NULL,&(param.dpo)); m_pParamDlg->Create( CDPODlg::IDD, this ); break;
  391. case STT_KST: m_pParamDlg = new CKSTDlg(NULL,&(param.kst)); m_pParamDlg->Create( CKSTDlg::IDD, this ); break;
  392. case STT_REI: m_pParamDlg = new CREIDlg(NULL,&(param.rei)); m_pParamDlg->Create( CREIDlg::IDD, this ); break;
  393. case STT_DMKI: m_pParamDlg = new CDMKIDlg(NULL,&(param.dmki)); m_pParamDlg->Create( CDMKIDlg::IDD, this ); break;
  394. case STT_PCNT: m_pParamDlg = new CPCNTDlg(NULL,&(param.pcnt)); m_pParamDlg->Create( CPCNTDlg::IDD, this ); break;
  395. case STT_HLC: m_pParamDlg = new CHLCDlg(NULL,&(param.hlc)); m_pParamDlg->Create( CHLCDlg::IDD, this ); break;
  396. case STT_CDP: m_pParamDlg = new CCDPDlg(NULL,&(param.cdp)); m_pParamDlg->Create( CCDPDlg::IDD, this ); break;
  397. case STT_ASI: m_pParamDlg = new CASIDlg(NULL,&(param.asi)); m_pParamDlg->Create( CASIDlg::IDD, this ); break;
  398. case STT_ATR: m_pParamDlg = new CATRDlg(NULL,&(param.atr)); m_pParamDlg->Create( CATRDlg::IDD, this ); break;
  399. case STT_CYO: m_pParamDlg = new CCYODlg(NULL,&(param.cyo)); m_pParamDlg->Create( CCYODlg::IDD, this );break;
  400. case STT_DCYO: m_pParamDlg = new CDCYODlg(NULL,&(param.dcyo)); m_pParamDlg->Create( CDCYODlg::IDD, this );break;
  401. case STT_HSL: m_pParamDlg = new CHSLDlg(NULL,&(param.hsl)); m_pParamDlg->Create( CHSLDlg::IDD, this );break;
  402. case STT_DPER: m_pParamDlg = new CDPERDlg(NULL,&(param.dper)); m_pParamDlg->Create( CDPERDlg::IDD, this );break;
  403. default:
  404. ;
  405. }
  406. if( m_pParamDlg && ::IsWindow(m_pParamDlg->GetSafeHwnd()) )
  407. m_pParamDlg->SetWindowPos( NULL, SETPARAM_MAINLEFT, SETPARAM_MAINTOP, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOACTIVATE );
  408. m_tree.SetFocus();
  409. }
  410. *pResult = 0;
  411. }
  412. void CSetParamDlg::OnOK() 
  413. {
  414. // TODO: Add extra validation here
  415. if( m_pParamDlg && ::IsWindow(m_pParamDlg->GetSafeHwnd()) )
  416. {
  417. if( !m_pParamDlg->RefreshData( TRUE ) )
  418. {
  419. AfxMessageBox( IDS_SETPARAM_INVALID, MB_OK | MB_ICONINFORMATION );
  420. return;
  421. }
  422. m_pParamDlg->OnCmdMsg( IDOK, 0, NULL, NULL );
  423. delete m_pParamDlg;
  424. m_pParamDlg = NULL;
  425. }
  426. AfxGetProfile().StoreProfile( );
  427. CDialog::OnOK();
  428. }