Ver Fonte

1、OnInitialUpdate 执行两次的暂时解决办法;

scbc.sat2 há 5 anos atrás
pai
commit
b8d848e7de

+ 55 - 3
SATHelper/SATHelper/DeviceView.cpp

@@ -249,10 +249,13 @@ void CDeviceView::RunDevice()
 		if (pdev->Open())
 		{
 			g_dmap.insert(std::pair<int, CDevice*>(pdev->m_iID, pdev));
-
+			m_ck_chroma1.SetCheck(TRUE);
 		}
 		else
+		{
 			delete pdev;
+			m_ck_chroma1.SetCheck(FALSE);
+		}
 	}
 	
 	if (m_rscfg.chroma2.size())
@@ -267,10 +270,18 @@ void CDeviceView::RunDevice()
 		pdev->m_strDeviceName = "Chroma22293";
 		pdev->m_iDeviceType = 1;
 		if (pdev->Open())
+		{
 			g_dmap.insert(std::pair<int, CDevice*>(pdev->m_iID, pdev));
+			m_ck_chroma2.SetCheck(TRUE);
+		}
 		else
+		{
 			delete pdev;
+			m_ck_chroma2.SetCheck(FALSE);
+		}
 	}
+
+	UpdateData(FALSE);
 }
 
 void CDeviceView::InitCombobox_port()
@@ -587,22 +598,63 @@ void CDeviceView::OnBnClickedButton2()
 void CDeviceView::OnBnClickedCheck1()
 {
 	// TODO: 在此添加控件通知处理程序代码
+	CDevice* pDev = g_dmap.find(1)->second;
+	if (m_ck_chroma1.GetCheck())
+		pDev->Open();
+	else
+		pDev->Close();
 }
 
 
 void CDeviceView::OnBnClickedCheck2()
 {
 	// TODO: 在此添加控件通知处理程序代码
+	CDevice* pDev = g_dmap.find(2)->second;
+	if (m_ck_chroma2.GetCheck())
+		pDev->Open();
+	else
+		pDev->Close();
 }
 
 
 void CDeviceView::OnCbnSelchangeCombo1()
 {
-	// TODO: 在此添加控件通知处理程序代码
+	// 保存到配置文件中;
+	int nCurSel = m_cb_chroma1.GetCurSel();
+	if ( nCurSel != CB_ERR )
+	{
+		CString strChroma1;
+		m_cb_chroma1.GetLBText(nCurSel, strChroma1);
+		WritePrivateProfileString(_T("SATHelper"), _T("chroma1"), strChroma1, m_szRsCfgPath);
+
+		CDevice *pDev = g_dmap.find(1)->second;
+		int port = atoi(strChroma1.Right(1).GetString());
+		if (pDev->m_iPort != port)
+		{
+			pDev->m_iPort = port;
+			pDev->Close();
+			m_ck_chroma1.SetCheck(pDev->Open());
+		}
+	}	
 }
 
 
 void CDeviceView::OnCbnSelchangeCombo2()
 {
-	// TODO: 在此添加控件通知处理程序代码
+	int nCurSel = m_cb_chroma2.GetCurSel();
+	if (nCurSel != CB_ERR)
+	{
+		CString strChroma2;
+		m_cb_chroma2.GetLBText(nCurSel, strChroma2);
+		WritePrivateProfileString(_T("SATHelper"), _T("chroma2"), strChroma2, m_szRsCfgPath);
+
+		CDevice* pDev = g_dmap.find(2)->second;
+		int port = atoi(strChroma2.Right(1).GetString());
+		if (pDev->m_iPort != port)
+		{
+			pDev->m_iPort = port;
+			pDev->Close();
+			m_ck_chroma2.SetCheck(pDev->Open());
+		}
+	}
 }

+ 4 - 4
SATHelper/SATHelper/MainFrm.cpp

@@ -285,7 +285,7 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	{
 		//m_pUB530View->ShowWindow(SW_SHOWMAXIMIZED);
 		m_pUB530View->InitialUpdateFrame(context.m_pCurrentDoc, TRUE);
-		//m_pUB530View->MDIActivate();
+		m_pUB530View->MDIActivate();
 	}
 #else
 	CCreateContext context;
@@ -312,7 +312,7 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	context2.m_pNewViewClass = RUNTIME_CLASS(CDeviceView);
 	context2.m_pNewDocTemplate = m_pDoc->GetDocTemplate();
 	// 说明:DLG_DEVICEMANAGER对话框的Style属性必须设置成Child才能LoadFrame成功;
-	if (m_pDeviceView->LoadFrame(DLG_DEVICEMANAGER, WS_MAXIMIZE | WS_CHILDWINDOW, this, &context2))
+	if (m_pDeviceView->LoadFrame(DLG_DEVICEMANAGER, WS_MAXIMIZE | WS_CHILDWINDOW| WS_OVERLAPPEDWINDOW, this, &context2))
 	{
 		//m_pDeviceView->ShowWindow(SW_SHOWMAXIMIZED);
 		m_pDeviceView->InitialUpdateFrame(NULL, TRUE);
@@ -320,8 +320,8 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	}
 #endif
 
-	m_pUB530View->MDIActivate();
-	m_pUB530View->ShowWindow(SW_SHOWMAXIMIZED);
+	//m_pUB530View->MDIActivate();
+	//m_pUB530View->ShowWindow(SW_SHOWMAXIMIZED);
 
 	return 0;
 }

+ 2 - 1
SATHelper/SATHelper/SATHelper.cpp

@@ -182,7 +182,8 @@ BOOL CSATHelperApp::InitInstance()
 
 	// 创建模板类的文档对象;
 	pMainFrame->m_pDoc = (CSATHelperDoc*)pDocTemplate->CreateNewDocument();
-	if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
+	CCreateContext cc;
+	if (!pMainFrame->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, &cc))
 	{
 		delete pMainFrame;
 		return FALSE;