Procházet zdrojové kódy

1、成功加载CFormView的对话框;
2、需要注意的:CFormView对话框的属性Style必须设置成Child,否则LoadFrame时会崩溃;
LoadFrame参数一,必须是对话框资源ID;

scbc.sat2 před 5 roky
rodič
revize
de59cacdd2

+ 57 - 0
SATHelper/SATHelper/DeviceView.cpp

@@ -0,0 +1,57 @@
+// CDeviceView.cpp: 实现文件
+//
+
+#include "stdafx.h"
+#include "SATHelper.h"
+#include "DeviceView.h"
+
+
+// CDeviceView
+
+IMPLEMENT_DYNCREATE(CDeviceView, CFormView)
+
+CDeviceView::CDeviceView()
+	: CFormView(DLG_DEVICEMANAGER)
+{
+
+}
+
+CDeviceView::~CDeviceView()
+{
+}
+
+void CDeviceView::DoDataExchange(CDataExchange* pDX)
+{
+	CFormView::DoDataExchange(pDX);
+}
+
+BEGIN_MESSAGE_MAP(CDeviceView, CFormView)
+END_MESSAGE_MAP()
+
+
+// CDeviceView 诊断
+
+#ifdef _DEBUG
+void CDeviceView::AssertValid() const
+{
+	CFormView::AssertValid();
+}
+
+#ifndef _WIN32_WCE
+void CDeviceView::Dump(CDumpContext& dc) const
+{
+	CFormView::Dump(dc);
+}
+#endif
+#endif //_DEBUG
+
+
+// CDeviceView 消息处理程序
+
+
+void CDeviceView::OnInitialUpdate()
+{
+	CFormView::OnInitialUpdate();
+
+	// TODO: 在此添加专用代码和/或调用基类
+}

+ 34 - 0
SATHelper/SATHelper/DeviceView.h

@@ -0,0 +1,34 @@
+#pragma once
+
+
+
+// CDeviceView 窗体视图
+
+class CDeviceView : public CFormView
+{
+	DECLARE_DYNCREATE(CDeviceView)
+
+protected:
+	CDeviceView();           // 动态创建所使用的受保护的构造函数
+	virtual ~CDeviceView();
+
+public:
+#ifdef AFX_DESIGN_TIME
+	enum { IDD = DLG_DEVICEMANAGER };
+#endif
+#ifdef _DEBUG
+	virtual void AssertValid() const;
+#ifndef _WIN32_WCE
+	virtual void Dump(CDumpContext& dc) const;
+#endif
+#endif
+
+protected:
+	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
+
+	DECLARE_MESSAGE_MAP()
+public:
+	virtual void OnInitialUpdate();
+};
+
+

+ 18 - 2
SATHelper/SATHelper/MainFrm.cpp

@@ -17,7 +17,6 @@
 #include "SATHelper.h"
 
 #include "MainFrm.h"
-#include "SATHelperView.h"
 
 #ifdef _DEBUG
 #define new DEBUG_NEW
@@ -268,7 +267,7 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	ModifyStyle(0, FWS_PREFIXTITLE);
 #endif
 
-#if 1 // 第一个视图;
+#if 0 // 第一个视图;
 	CCreateContext context;
 	CChildFrame* pChildFrame = new CChildFrame();
 	context.m_pLastView = NULL;
@@ -284,6 +283,23 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	}
 #endif
 
+#if 1 // 第一个视图;
+	CCreateContext context;
+	CChildFrame* pChildFrame = new CChildFrame();
+	context.m_pLastView = NULL;
+	context.m_pCurrentFrame = this;
+	context.m_pCurrentDoc = m_pDoc;
+	context.m_pNewViewClass = RUNTIME_CLASS(CDeviceView);
+	context.m_pNewDocTemplate = m_pDoc->GetDocTemplate();
+	// 说明:DLG_DEVICEMANAGER对话框的Style属性必须设置成Child才能LoadFrame成功;
+	if (pChildFrame->LoadFrame(DLG_DEVICEMANAGER, WS_MAXIMIZE | WS_CHILDWINDOW, this, &context))
+	{
+		pChildFrame->ShowWindow(SW_SHOWMAXIMIZED);
+		pChildFrame->InitialUpdateFrame(NULL, TRUE);
+		pChildFrame->MDIActivate();
+	}
+#endif
+
 	return 0;
 }
 

+ 2 - 0
SATHelper/SATHelper/MainFrm.h

@@ -20,7 +20,9 @@
 #include "CalendarBar.h"
 #include "Resource.h"
 #include "SATHelperDoc.h"
+#include "SATHelperView.h"
 #include "ChildFrm.h"
+#include "DeviceView.h"
 //////////////////////////////////////////////////////////////////////////
 #include "TrayIcon.h"
 #define USE_TRAYICON 1

+ 3 - 1
SATHelper/SATHelper/Resource.h

@@ -112,6 +112,8 @@
 #define IDR_RIBBON                      307
 #define IDB_CHECKED                     310
 #define IDB_UNCHECKED                   311
+#define IDD_DIALOG1                     312
+#define DLG_DEVICEMANAGER               312
 #define ID_WRITE_PASTEASHYPERLINK       32770
 #define ID_TRAYMENU_RECONNECT           32771
 #define ID_TRAYMENU_EXIT                32772
@@ -137,7 +139,7 @@
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        312
+#define _APS_NEXT_RESOURCE_VALUE        314
 #define _APS_NEXT_COMMAND_VALUE         32775
 #define _APS_NEXT_CONTROL_VALUE         1000
 #define _APS_NEXT_SYMED_VALUE           310

+ 31 - 4
SATHelper/SATHelper/SATHelper.rc

@@ -441,6 +441,14 @@ BEGIN
     DEFPUSHBUTTON   "确定",IDOK,113,41,50,14,WS_GROUP
 END
 
+DLG_DEVICEMANAGER DIALOGEX 0, 0, 312, 177
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_BORDER
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON   "确定",IDOK,198,156,50,14
+    PUSHBUTTON      "取消",IDCANCEL,255,156,50,14
+END
+
 
 /////////////////////////////////////////////////////////////////////////////
 //
@@ -496,6 +504,14 @@ BEGIN
         TOPMARGIN, 7
         BOTTOMMARGIN, 55
     END
+
+    DLG_DEVICEMANAGER, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 305
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 170
+    END
 END
 #endif    // APSTUDIO_INVOKED
 
@@ -508,6 +524,17 @@ END
 IDR_RIBBON              RT_RIBBON_XML           "res\\ribbon.mfcribbon-ms"
 
 
+/////////////////////////////////////////////////////////////////////////////
+//
+// AFX_DIALOG_LAYOUT
+//
+
+DLG_DEVICEMANAGER AFX_DIALOG_LAYOUT
+BEGIN
+    0
+END
+
+
 /////////////////////////////////////////////////////////////////////////////
 //
 // String Table
@@ -711,11 +738,11 @@ END
 
 #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
 LANGUAGE 4, 2
-#include "res\SATHelper.rc2"  // 闂?Microsoft Visual C++ 缂傛牞绶惃鍕カ濠?
-#include "l.CHS\afxres.rc"      // 閺嶅洤鍣紒鍕
-#include "l.CHS\afxprint.rc"    // 閹垫挸宓?閹垫挸宓冩0鍕潔鐠у嫭绨?
+#include "res\SATHelper.rc2"  // 闂?Microsoft Visual C++ 缂傚倹鐗炵欢顐︽儍閸曨喚銈繝?
+#include "l.CHS\afxres.rc"      // 闁哄秴娲ら崳顖滅磼閸曨亝顐?
+#include "l.CHS\afxprint.rc"    // 闁瑰灚鎸稿畵?闁瑰灚鎸稿畵鍐╋紣閸曨噮娼旈悹褍瀚花?
 #if !defined(_AFXDLL)
-#include "l.CHS\afxribbon.rc"        // MFC 閸旂喕鍏橀崠鍝勬嫲閹貉冨煑閺壜ょカ濠?
+#include "l.CHS\afxribbon.rc"        // MFC 闁告梻鍠曢崗姗€宕犻崫鍕闁硅矇鍐ㄧ厬闁哄銈囥偒婵?
 #endif
 #endif
 

+ 2 - 0
SATHelper/SATHelper/SATHelper.vcxproj

@@ -206,6 +206,7 @@
     <ClInclude Include="..\UI\TreeComboBox.h" />
     <ClInclude Include="..\UI\XColorStatic.h" />
     <ClInclude Include="calendarbar.h" />
+    <ClInclude Include="DeviceView.h" />
     <ClInclude Include="ChildFrm.h" />
     <ClInclude Include="ClassView.h" />
     <ClInclude Include="CritSection.h" />
@@ -250,6 +251,7 @@
     <ClCompile Include="..\UI\TreeComboBox.cpp" />
     <ClCompile Include="..\UI\XColorStatic.cpp" />
     <ClCompile Include="calendarbar.cpp" />
+    <ClCompile Include="DeviceView.cpp" />
     <ClCompile Include="ChildFrm.cpp" />
     <ClCompile Include="ClassView.cpp" />
     <ClCompile Include="Device.cpp" />

+ 6 - 0
SATHelper/SATHelper/SATHelper.vcxproj.filters

@@ -147,6 +147,9 @@
     <ClInclude Include="IRControlWnd.h">
       <Filter>DockPane</Filter>
     </ClInclude>
+    <ClInclude Include="DeviceView.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="SATHelper.cpp">
@@ -245,6 +248,9 @@
     <ClCompile Include="IRControlWnd.cpp">
       <Filter>DockPane</Filter>
     </ClCompile>
+    <ClCompile Include="DeviceView.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="SATHelper.rc">

+ 2 - 0
SATHelper/SATHelper/stdafx.h

@@ -58,5 +58,7 @@ using namespace chrono;
 #include "cJSON.h"
 #include "Device.h"
 #include <afxext.h>
+#include <afxcontrolbars.h>
+#include <afxext.h>
 
 #endif //PCH_H