Просмотр исходного кода

遥控截图,由线程处理;否则会卡界面;

scbc.sat2 5 лет назад
Родитель
Сommit
069adcb6bf

+ 27 - 8
SATHelper/SATHelper/IRControlWnd.cpp

@@ -58,6 +58,7 @@ COLORREF HexColor2RGB(std::string strHexColor)
 CIRControlWnd::CIRControlWnd() noexcept
 {
 	m_nComboHeight = 0;
+	m_bSendKey = FALSE;
 }
 
 CIRControlWnd::~CIRControlWnd()
@@ -95,6 +96,7 @@ BEGIN_MESSAGE_MAP(CIRControlWnd, CDockablePane)
 	ON_WM_SETFOCUS()
 	ON_WM_SETTINGCHANGE()
 	ON_WM_PAINT()
+	ON_MESSAGE(WM_IR_SHOT_IMG, OnIRShotImg)
 	// 信号按钮;
 	ON_COMMAND_RANGE(BTNID, BTNID + 100, OnSignalBtnClick)
 	ON_UPDATE_COMMAND_UI_RANGE(BTNID, BTNID + 100, OnUpdateSignalBtn)
@@ -197,6 +199,24 @@ int CIRControlWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
 
 	StartIRDevice(FALSE);
 
+	std::thread t([](CIRControlWnd *pWnd) {
+		while (true)
+		{
+			if (g_pMainFrame->m_bShotIR && pWnd->m_bSendKey)
+			{
+				pWnd->m_bSendKey = FALSE;
+				Sleep(200);
+				CUB530View* pView = (CUB530View*)g_pMainFrame->m_pUB530View->GetActiveView();
+				if (pView)
+				{
+					pView->OnCutJpg();
+				}
+			}
+			Sleep(20);
+		}
+	},this);
+	t.detach();
+
 	return 0;
 }
 
@@ -549,15 +569,8 @@ void CIRControlWnd::OnSignalBtnClick(UINT uId) // 发送遥控信号;
 		// 发送单信号;
 		if (g_sendSignal(text.GetString(), 1, 20))
 		{
+			m_bSendKey = TRUE;
 			TRACE("发送单信号成功\n");
-			if ( g_pMainFrame->m_bShotIR)
-			{
-				CUB530View *pView = (CUB530View*)g_pMainFrame->m_pUB530View->GetActiveView();
-				if ( pView )
-				{
-					pView->OnCutJpg();
-				}
-			}			
 		}
 		else
 		{
@@ -704,3 +717,9 @@ void CIRControlWnd::AddHScroll()
 	// be scrolled to.
 	m_wndSignalCombo.SetHorizontalExtent(dx);
 }
+
+LRESULT CIRControlWnd::OnIRShotImg(WPARAM wparam, LPARAM lparam)
+{
+	
+	return LRESULT();
+}

+ 4 - 0
SATHelper/SATHelper/IRControlWnd.h

@@ -15,6 +15,7 @@
 
 // 按钮id起始值;
 #define BTNID 11000
+#define WM_IR_SHOT_IMG WM_USER + 10012
 
 // layout.xml item;
 typedef struct __BTN_INFO__
@@ -129,5 +130,8 @@ public:
 	void AutoSetDroppedWidth();
 	// CCombobox添加水平滚动条;
 	void AddHScroll();
+	// 遥控截图自定义消息;
+	BOOL m_bSendKey;
+	afx_msg LRESULT  OnIRShotImg(WPARAM wparam, LPARAM lparam);
 };
 

+ 1 - 2
SATHelper/SATHelper/MainFrm.cpp

@@ -202,6 +202,7 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	if (CMDIFrameWndEx::OnCreate(lpCreateStruct) == -1)
 		return -1;
 
+	g_pMainFrame = this;
 #if USE_TRAYICON
 	InitTrayIcon();
 #endif
@@ -312,8 +313,6 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	ModifyStyle(0, FWS_PREFIXTITLE);
 #endif
 
-	g_pMainFrame = this;
-
 #if _USE_DLGVIEW_ // 第一个视图;
 	CCreateContext context;
 	m_pUB530View = new CChildFrame();

+ 2 - 2
SATHelper/SATHelper/resource.h

@@ -159,17 +159,17 @@
 #define ID_BUTTON2                      32805
 #define ID_COMBO1_22293                 32806
 #define ID_CHECK1_22293                 32807
-#define ID_CHECK2                       32818
 #define ID_CHECK_SHOT_SPEC              32818
 #define ID_CHECK_SHOT_LOCAL             32819
 #define ID_CHECK_SHOT_SYSTEM            32820
+#define ID_CHECK_IR_SHOT                32823
 
 // Next default values for new objects
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        317
-#define _APS_NEXT_COMMAND_VALUE         32821
+#define _APS_NEXT_COMMAND_VALUE         32824
 #define _APS_NEXT_CONTROL_VALUE         1007
 #define _APS_NEXT_SYMED_VALUE           310
 #endif