⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test2doc.h

📁 这个是我现在在做组态软件开发用到的OPC源码
💻 H
字号:
// test2Doc.h : interface of the CTest2Doc class
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_TEST2DOC_H__F8D47ABE_B961_4435_BEC8_F14AA15A1DF8__INCLUDED_)
#define AFX_TEST2DOC_H__F8D47ABE_B961_4435_BEC8_F14AA15A1DF8__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CKServer;
class CKGroup;
class CKItem;

class CTest2Doc : public CDocument
{
protected: // create from serialization only
	//CTest2Doc();
	DECLARE_DYNCREATE(CTest2Doc)

// Attributes
public:
		void SetModified (bool bModified = true);
		CTest2Doc();
		bool IsLocked ();
		void SetLocked (bool bSet);

		BOOL RouteCmdMsg (CView *pActiveView, UINT nID, int nCode, void *pExtra, AFX_CMDHANDLERINFO *pHandlerInfo);

		// add/modify/remove server object
		void AddServer ();
		void AddServer (CKServer *pServer, bool bConnect = false);
		void EditServer (CKServer *pServer);
		void RemoveServer (CKServer *pServer);
		void ConnectServer (CKServer *pServer);
		void DisconnectServer (CKServer *pServer);

		DWORD GetServerCount () {return (m_cdwServers);}

		// add/modify/delete group
		void AddGroup (CKGroup *pGroup);
		void AddGroup ();
		void CloneGroup ();
		void RemoveGroup (CKGroup *pServer);
		
		// add/delete item
		void AddItem ();
		void AddItems (CObArray &cList, DWORD dwCount);
		void RemoveItems (CObArray &cList, DWORD dwCount);

		// group view management我个人认为这个函数的主要作用是将当前选择的服务器和组的指针赋值给文档类,
		//
		void SetSelectedServerGroup (CKServer *pServer, CKGroup *pGroup) 
			{
			m_pCurSelServer = pServer;//关键的一步。
			m_pCurSelGroup = pGroup;

			if (pGroup)
				{
				ASSERT (pServer == NULL);
				UpdateAllViews (NULL, HINT_SELECT_GROUP, (CObject *)pGroup);
				}
			else
				{
				ASSERT (pServer != NULL);
				ASSERT (pGroup == NULL);
				UpdateAllViews (NULL, HINT_SELECT_SERVER, (CObject *)pServer);
				}
			}

		CKServer* GetServerHead () {return (m_pServerHead);}
		CKServer* GetSelectedServer () {return (m_pCurSelServer);}
		CKGroup* GetSelectedGroup () {return (m_pCurSelGroup);}

		// notifications
		void OnServerShutdown (CKServer *pServer);

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CTest2Doc)
	public:
	virtual BOOL OnNewDocument();
	virtual void Serialize(CArchive& ar);
	virtual void DeleteContents ();
	virtual BOOL OnOpenDocument (LPCTSTR lpszPathName);
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CTest2Doc();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

private:
		typedef struct _tagWORKERTHREADARG
			{
			enum TASK
				{
				START_SINGLE_SERVER,
				START_MULTIPLE_SERVER,
				STOP_SINGLE_SERVER,
				STOP_MULTIPLE_SERVER,
				ADD_ITEMS,
				};
			
			_tagWORKERTHREADARG ()
				{
				pvObjectA = NULL;
				pvObjectB = NULL;
				}

			TASK eTask;
			void *pvObjectA;
			void *pvObjectB;
			} WORKERTHREADARG;

		void RunWorkerThread (WORKERTHREADARG *pArg);
		static unsigned _stdcall WorkerThread (void *pvArgs);

	protected:
		// server management
		CKServer *m_pServerHead;
		DWORD m_cdwServers;

		// group view management
		CKServer *m_pCurSelServer;
		CKGroup *m_pCurSelGroup;
		CKServer *m_pdsServer;
		
		// document locked for edits
		CCriticalSection m_csDoc;
		bool m_bLocked;
	public:
//		CKGroupGeneralPage *m_pdsGgp;
		CKGroup *m_pdsGroup;
protected:
	
	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_TEST2DOC_H__F8D47ABE_B961_4435_BEC8_F14AA15A1DF8__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -