123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- // 这段 MFC 示例源代码演示如何使用 MFC Microsoft Office Fluent 用户界面
- // (“Fluent UI”)。该示例仅供参考,
- // 用以补充《Microsoft 基础类参考》和
- // MFC C++ 库软件随附的相关电子文档。
- // 复制、使用或分发 Fluent UI 的许可条款是单独提供的。
- // 若要了解有关 Fluent UI 许可计划的详细信息,请访问
- // https://go.microsoft.com/fwlink/?LinkId=238214.
- //
- // 版权所有(C) Microsoft Corporation
- // 保留所有权利。
- //#include "DlgIRControl.h"
- #include <map>
- #pragma once
- // 按钮id起始值;
- #define BTNID 11000
- #define WM_IR_SHOT_IMG WM_USER + 10012
- // layout.xml item;
- typedef struct __BTN_INFO__
- {
- std::string name;
- int width;
- int height;
- DWORD color;
- CMFCButton *pBTN = nullptr;
- bool bEnable = false;
- }BtnInfo, *pBtnInfo;
- class CIRControlToolBar : public CMFCToolBar
- {
- public:
- virtual void OnUpdateCmdUI(CFrameWnd* /*pTarget*/, BOOL bDisableIfNoHndler)
- {
- CMFCToolBar::OnUpdateCmdUI((CFrameWnd*) GetOwner(), bDisableIfNoHndler);
- }
- virtual BOOL AllowShowOnList() const { return FALSE; }
- };
- class CIRControlWnd : public CDockablePane
- {
- // 构造
- public:
- CIRControlWnd() noexcept;
- void AdjustLayout();
- // 特性
- public:
- protected:
- CFont m_fntPropList;
- // 重启服务端进程;
- CMFCButton m_btnRestart;
- // 信号集文件;
- CComboBox m_wndSignalCombo;
- // 选择通用遥控器;
- CMFCButton m_wndSignalCheck;
- #if __PANE_DLG__
- CDlgIRControl m_dlgIRControl;
- #endif
- CMFCButton m_btnSwitchRemote;
- CMFCButton m_btnFindinfraRed;
- CMFCButton m_btnFindBluetooth;
- // TREE一级选项;
- CComboBox m_cbTree1;
- // TREE二级选项;
- CComboBox m_cbTree2;
- // TREE三级;
- CComboBox m_cbTree3;
- int CreateCtrl();
-
- // 实现
- public:
- virtual ~CIRControlWnd();
- // 去掉关闭按钮;但组合多个pane时无效;
- virtual BOOL CanBeClosed() const { return FALSE; };
- // 禁止拖动Pane;
- virtual BOOL FloatPane(CRect rectFloat, AFX_DOCK_METHOD dockMethod = DM_UNKNOWN, bool bShow = true) { return FALSE; }
- // 禁用停靠,双击底部无效(不会停靠)
- virtual BOOL CanFloat() const { return FALSE; };
- // 禁用大小;//崩溃;
- //virtual BOOL IsResizable() const {return FALSE;}
- protected:
- afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
- afx_msg void OnSize(UINT nType, int cx, int cy);
- afx_msg void OnExpandAllProperties();
- afx_msg void OnUpdateExpandAllProperties(CCmdUI* pCmdUI);
- afx_msg void OnSortProperties();
- afx_msg void OnUpdateSortProperties(CCmdUI* pCmdUI);
- afx_msg void OnProperties1();
- afx_msg void OnUpdateProperties1(CCmdUI* pCmdUI);
- afx_msg void OnProperties2();
- afx_msg void OnUpdateProperties2(CCmdUI* pCmdUI);
- afx_msg void OnSetFocus(CWnd* pOldWnd);
- afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection);
- // 下拉框选项变化事件;
- afx_msg void OnCbnSelchangeSignal();
- afx_msg void OnCbnSelchangeTree1();
- afx_msg void OnCbnSelchangeTree2();
- afx_msg void OnCbnSelchangeTree3();
- DECLARE_MESSAGE_MAP()
- void SetPropListFont();
- int m_nComboHeight;
- // 重启红老鼠;
- void StartIRDevice(BOOL bReStart = TRUE);
- // 禁用信号按钮;
- void DisableSignalBtn() {
- for (std::vector<BtnInfo>::iterator it = m_vtBtnInfo.begin(); it != m_vtBtnInfo.end(); it++)
- {
- it->bEnable = false;
- }
- }
- public:
- // 重载信号文件;
- void ReLoadSignalXml();
- std::map<UINT, BtnInfo&> m_map_btn;
- std::vector<std::string> m_vtsignal_gen;
- std::vector<std::string> m_vtsignal_pro;
- std::vector<std::string> m_vtsignal_tw;
- void LoadSignals();
- std::vector<BtnInfo> m_vtBtnInfo;
- void Loadlayout(std::vector<BtnInfo> &vt);
- afx_msg void OnPaint();
- // 单击按钮;
- afx_msg void OnSignalBtnClick(UINT uId);
- // 更新按钮状态;
- afx_msg void OnUpdateSignalBtn(CCmdUI* pCmdUI);
- // 更新checkbox状态;
- afx_msg void OnUpdateCheckBox(CCmdUI * pCmdUI);
- afx_msg void OnCheckBoxClicked();
- // 更新重启按钮状态;
- afx_msg void OnUpdateBtnRestartProc(CCmdUI* pCmdUI);
- afx_msg void OnBtnRestartProcClicked();
- // 选择遥控器;
- afx_msg void OnUpdateSwitchRemote(CCmdUI* pCmdUI);
- afx_msg void OnSwitchRemoteClicked();
- afx_msg void OnUpdateFindFindinfraRed(CCmdUI* pCmdUI);
- afx_msg void OnFindFindinfraRedClicked();
- afx_msg void OnUpdateFindBluetooth(CCmdUI* pCmdUI);
- afx_msg void OnFindBluetoothClicked();
- // 更新按钮实际状态;
- void UpdateSignalBtnStatus();
- // 自动根据Combobox选项长度设置宽度;
- void AutoSetDroppedWidth(CComboBox* pCombobox);
- // CCombobox添加水平滚动条;
- void AddHScroll(CComboBox* pCombobox);
- //////////////////////////////////////////////////////////////////////////
- // 读取resource_run.cfg配置文件内容;
- typedef struct __RS_RUN_CFG__
- {
- std::string sound_list; // 声音级别;
- std::string sound1;
- std::string sound2;
- std::string full_cut; // 是否全步骤截图;('True/False')
- //....
- std::string tg39_port;
- std::string tv_port;
- std::string sat_home;
- std::string sat_result_dir;
- std::string chroma22293;
- //...
- std::string menutree_chip;
- std::string menutree_style;
- std::string menutree_channel;
- //...
- std::string chroma1;
- std::string chroma2;
- // 是否监听电视;
- bool bWatchTV;
- }RsRunCfg, * pRsRunCfg;
- RsRunCfg m_rscfg;
- void ReadResourceRunCfg();
- // 读取menutree目录;
- typedef struct __UI_TREE__
- {
- std::string ui;
- std::vector<std::string> vtSubUI;
- }UITree, * pUITree;
- std::map<std::string, std::vector<UITree>> m_map_tree;
- // 当前选中的MenuTree路径;
- TCHAR m_szCurMenuTreeDir[MAX_PATH];
- // 初始化MenuTree下拉框;
- void LoadMenuTreePath();
- void InitMenuTreeCombobox();
- // 遥控截图自定义消息;
- BOOL m_bSendKey;
- afx_msg LRESULT OnIRShotImg(WPARAM wparam, LPARAM lparam);
- };
|