117 lines
3.6 KiB
C++
117 lines
3.6 KiB
C++
|
|
// TestSimulatorDlg.h : 標頭檔
|
|
//
|
|
|
|
#pragma once
|
|
|
|
#include "BlockBasis.h"
|
|
#include "BlockIn.h"
|
|
#include "BlockOut.h"
|
|
#include "BlockAnd.h"
|
|
#include "BlockOr.h"
|
|
#include "BlockNot.h"
|
|
#include "BlockFun.h"
|
|
#include "InputDlg.h"
|
|
#include "FunDlg.h"
|
|
#include "OscDlg.h"
|
|
#include "Complex.h"
|
|
|
|
#include <vector>
|
|
#include <deque>
|
|
|
|
|
|
// CTestSimulatorDlg 對話方塊
|
|
class CTestSimulatorDlg : public CDialogEx
|
|
{
|
|
// 建構
|
|
public:
|
|
CTestSimulatorDlg(CWnd* pParent = NULL); // 標準建構函式
|
|
|
|
// 對話方塊資料
|
|
enum { IDD = IDD_TESTSIMULATOR_DIALOG };
|
|
|
|
protected:
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支援
|
|
|
|
private:
|
|
std::vector <CBlockBasis*> m_vcBlkContainer; //存放不同Block的vector
|
|
|
|
CRect m_rcWork; //工作區
|
|
CRect m_rcClient; //對話盒客戶區
|
|
CPoint m_ptLEnd; //連線中線段終點
|
|
COscDlg* m_pOscDlg; //示波器對話盒指標
|
|
CDC m_dcBgPic; //存放背景圖片的dc
|
|
CBitmap m_bitmapBgPic; //存放背景圖片的bitmap
|
|
CBitmap* m_pOldBitmap; //指向原bitmap的指標
|
|
CString m_strPicPath; //背景圖片路徑
|
|
COLORREF m_clrBg; //背景顏色
|
|
|
|
BOOL m_bInitDlg; //判斷對話窗初始化
|
|
BOOL m_bSelectBlk; //判斷Block選取
|
|
BOOL m_bMoveBlk; //判斷Block移動
|
|
BOOL m_bLineMode; //判斷畫線模式
|
|
BOOL m_bConnect; //判斷連線
|
|
BOOL m_bDelBlk; //判斷Block刪除
|
|
BOOL m_bBgPic; //判斷載入背景圖片
|
|
BOOL m_bGrid; //判斷格點顯示
|
|
BOOL m_bLock; //判斷鎖定格點
|
|
|
|
int m_iWorkLeft; //工作區左側座標
|
|
int m_iWorkTop; //工作區上方座標
|
|
int m_iWorkRight; //工作區右側座標
|
|
int m_iWorkBottom; //工作區下方座標
|
|
int m_iBlkWidth; //Block寬度
|
|
int m_iBlkHeight; //Block高度
|
|
int m_iGridX; //X方向格點間隔
|
|
int m_iGridY; //Y方向格點間隔
|
|
int m_iContainerSize; //存放Block的vector大小
|
|
int m_iSlctBlkNum; //選取Block編號
|
|
int m_iHeadBlkNum; //連接Block編號
|
|
int m_iSimBlkNum; //模擬Block編號
|
|
int m_iOutSize; //模擬Block其channel數目
|
|
|
|
// 程式碼實作
|
|
protected:
|
|
HICON m_hIcon;
|
|
|
|
// 產生的訊息對應函式
|
|
virtual BOOL OnInitDialog ();
|
|
afx_msg void OnSysCommand (UINT nID, LPARAM lParam);
|
|
afx_msg void OnPaint ();
|
|
afx_msg HCURSOR OnQueryDragIcon ();
|
|
DECLARE_MESSAGE_MAP ()
|
|
public:
|
|
std::deque <std::deque <double> > m_deq2DOutputValue; //存放output value的deque
|
|
BOOL m_bSimulate; //判斷模擬模式
|
|
int m_iStep; //模擬進行步數
|
|
|
|
afx_msg void OnBnClickedButtonIn ();
|
|
afx_msg void OnBnClickedButtonOut ();
|
|
afx_msg void OnBnClickedButtonAnd ();
|
|
afx_msg void OnBnClickedButtonOr ();
|
|
afx_msg void OnBnClickedButtonNot ();
|
|
afx_msg void OnBnClickedButtonFunction ();
|
|
afx_msg void OnBnClickedButtonLine ();
|
|
afx_msg void OnBnClickedButtonSimulate ();
|
|
afx_msg void OnBnClickedButtonGrid ();
|
|
afx_msg void OnBnClickedButtonLock ();
|
|
afx_msg void OnBnClickedButtonBgpic ();
|
|
afx_msg void OnBnClickedButtonBgcolor ();
|
|
afx_msg void OnBnClickedButtonOpen ();
|
|
afx_msg void OnBnClickedButtonSave ();
|
|
afx_msg void OnLButtonDown (UINT nFlags, CPoint ptCursor);
|
|
afx_msg void OnMouseMove (UINT nFlags, CPoint ptCursor);
|
|
afx_msg void OnLButtonUp (UINT nFlags, CPoint ptCursor);
|
|
afx_msg void OnLButtonDblClk (UINT nFlags, CPoint point);
|
|
afx_msg void OnTimer (UINT_PTR nIDEvent);
|
|
afx_msg void OnSize (UINT nType, int cx, int cy);
|
|
virtual BOOL PreTranslateMessage (MSG* pMsg);
|
|
afx_msg void OnDestroy ();
|
|
|
|
void SplitString (CString, char, CStringArray&);
|
|
void Resize (int nID, double dMulWid, double dMulHei);
|
|
void Resize (CBlockBasis* pBlk, double dMulWid, double dMulHei);
|
|
int GetComputationLayers (int iDataSize);
|
|
double FFT (const std::deque <double> &, int, double);
|
|
};
|