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

📄 matlabconsole.c

📁 图像处理的压缩算法
💻 C
📖 第 1 页 / 共 2 页
字号:
		m_reCntrl.GetSel(nStart,m_PromptPosition); //Record the position of latest prompt
		///END Soapy 9/19/03 NO_DELETE_PROMPT
		
		return TRUE;
	}
	
private:
	void add_str(LPCSTR lpcszText, BOOL bAddNewLine=TRUE)
	{
		m_reCntrl.SetSel(-1,-1);
		m_reCntrl.ReplaceSel(lpcszText);
		m_reCntrl.SetSel(-1,-1);
		if(bAddNewLine)
		{
			m_reCntrl.ReplaceSel("\r\n");
			m_reCntrl.SetSel(-1,-1);
		}
	}

	bool is_sys_cmd_key(UINT nKey)
	{
		if(nKey == VK_RETURN || nKey == VK_LEFT || nKey == VK_BACK || nKey == VK_UP || 
			nKey == VK_DOWN || nKey == VK_DELETE || nKey == VK_RIGHT)  ///Soapy 9/19/03 NO_DELETE_PROMPT
			return true;
		
		return false;
	}
	
	bool is_Origin_command(LPCSTR lpcszCmd, string& strResult)
	{
		string strCmdstr = lpcszCmd;
		
		strCmdstr.TrimLeft();	//Soapy 10/22/03 DELETE_SPACE_BEFORE_COMMAND
		
		//----- CPY 1/10/03
		// GetTokens has a bug, if str has ', will generate runtime error
		//int nArgs = strCmdstr.GetTokens(strCmdArgs);
		//if(nArgs < 1)
		//	return false;
		//string strCmd = strCmdArgs[0];
		int nSpace = strCmdstr.Find(' ');
		if(strCmdstr.IsEmpty() || nSpace == 0)
			return false;
	
		string strCmd = strCmdstr;
		if(nSpace > 0)
			strCmd = strCmdstr.Left(nSpace);
		//-----
	
		for(int nCmdID = 0; nCmdID < CMDID_COUNT; nCmdID++)
		{
			if(strCmd.CompareNoCase(s_asCmdList[nCmdID]) == 0)
			{
				//----- CPY 1/10/03
				StringArray	strCmdArgs;
				int nArgs = strCmdstr.GetTokens(strCmdArgs);
				if(nArgs < 1)
					return false;
				//-----
				do_Origin_commad(nCmdID, strCmdArgs, strResult);
				return true;
			}
		}
		return false;
	}
	
	// reutrn true if matrix does not exist and has to be created
	bool get_Origin_matrix(string strMatName, MatrixLayer& mLayer)
	{
		MatrixLayer mltemp(strMatName);
		if(!mltemp)
		{
			mltemp.Create();
			mltemp.GetPage().Rename(strMatName);
			mLayer = mltemp;
			return true;
		}
		mLayer = mltemp;
		return false;
	}
		
	void do_Origin_commad(int nCmdID, StringArray& asArgs, string& strResult)
	{
		uint nArgSize = asArgs.GetSize();
		if(nArgSize < 2 && nCmdID <= CMDID_GET_COMPLEX) // no argument
		{
			strResult = "Usage:" + asArgs[0];
			strResult += " matName1 matName2 ...";
			return;
		}
		///	DVT 7/1/03 QA70-4753 v7.0614 MATLAB_CONSOLE_PUT_COMPLEX
		if(nArgSize < 3 && nCmdID == CMDID_PUT_COMPLEX) // not enough arguments
		{
			strResult = "Usage:" + asArgs[0];
			strResult += " matNameReal matNameImag [matlNameResult (= matNameReal)]";
			return;
		}
		///	end MATLAB_CONSOLE_PUT_COMPLEX
	
		if(NULL == m_pMATLABObj)
		{
			strResult = STR_NO_MATLAB;
			return;
		}
			
		strResult.Empty();
		int ii;
		bool bSuccess;
		
		switch(nCmdID)
		{
		case CMDID_PUT_REAL:
			for(ii = 1; ii < nArgSize; ii++)
			{
				MatrixLayer mlay(asArgs[ii]);
				if(!mlay)
				{
					strResult = "???\r\n " + asArgs[ii];
					strResult += " is not an Origin matrix.\r\n";
					return;
				}
				Matrix<double> mm(mlay);
				m_pMATLABObj->PutMatrix(mm.GetName(), &mm);		
			}
			break;
		///	DVT 7/1/03 QA70-4753 v7.0614 MATLAB_CONSOLE_PUT_COMPLEX
		case CMDID_PUT_COMPLEX:
		{
			MatrixLayer mlayReal(asArgs[1]);
			if(!mlayReal)
			{
				strResult = "???\r\n " + asArgs[1];
				strResult += " is not an Origin matrix.\r\n";
				return;
			}
			Matrix<double> mmR(mlayReal);
			
			MatrixLayer mlayImag(asArgs[2]);
			if(!mlayImag)
			{
				strResult = "???\r\n " + asArgs[2];
				strResult += " is not an Origin matrix.\r\n";
				return;
			}
			Matrix<double> mmI(mlayImag);
			
			///Soapy 9/19/03 CHECK_MATRIX_SIZE_BEFORE_PUT_MATRIX
			if(mmI.GetNumRows()!=mmR.GetNumRows() || mmI.GetNumCols()!=mmR.GetNumCols())
			{
				strResult = "\r\nInconsistent Matrix Size.\r\n ";
				return;
			}
			///END CHECK_MATRIX_SIZE_BEFORE_PUT_MATRIX
			
			m_pMATLABObj->PutMatrix(  nArgSize >= 4 ? asArgs[3] : mmR.GetName(), &mmR, &mmI );
			break;
		}
		///	end MATLAB_CONSOLE_PUT_COMPLEX
		case CMDID_GET_REAL:
			for(ii = 1; ii < nArgSize; ii++)
			{
				///Soapy 9/26/03 REMOVE_DUPLICATED_CODE
				/*
				bool bNew=false;
				MatrixLayer mlay(asArgs[ii]);
				if(!mlay)
				{
					mlay.Create();
					mlay.GetPage().Rename(asArgs[ii]);
					bNew = true;
				}*/
				MatrixLayer mlay;
				bool bNew = get_Origin_matrix(asArgs[ii], mlay);
				///END REMOVE_DUPLICATED_CODE
				
				Matrix<double> mm(mlay);
				///Soapy 11/12/03 GET_REAL_MATRIX_BY_VARIABLE_NAME	
				//bSuccess = m_pMATLABObj->GetMatrix(mm.GetName(), &mm);
				bSuccess = m_pMATLABObj->GetMatrix(asArgs[ii], &mm);
				///END GET_REAL_MATRIX_BY_VARIABLE_NAME
				if(!bSuccess )
				{
					if(bNew)
						mlay.Destroy();
					strResult += asArgs[ii] + " ";
				}
			}
			if(!strResult.IsEmpty())
				strResult += ": matrices not found in Matlab!\r\n";
				
			break;
		case CMDID_GET_COMPLEX:
			// may need to see how to share code with CMDID_GET_REAL
			for(ii = 1; ii < nArgSize; ii++)
			{
				MatrixLayer mlay_r, mlay_i;
				bool bNewR= get_Origin_matrix(asArgs[ii]+"r", mlay_r);
				bool bNewI= get_Origin_matrix(asArgs[ii]+"i", mlay_i);
				
				Matrix<double> mr(mlay_r), mi(mlay_i);
				bSuccess = m_pMATLABObj->GetMatrix(asArgs[ii], &mr, &mi);
				if(!bSuccess)
				{
					if(bNewR)
						mlay_r.Destroy();
					if(bNewI)
						mlay_i.Destroy();
					
					strResult += asArgs[ii] + " ";
				}
			}
			if(!strResult.IsEmpty())
				strResult += ": matrices not found in Matlab!";
				
			break;
			
		case CMDID_EXIT:
		case CMDID_QUIT:
			m_pMATLABObj->Detach();
			GetWindow().SendMessage(WM_CLOSE);
			break;
		case CMDID_CLC: // clear screen display
			m_reCntrl.Text="";
			//add_str_to_richEdit(cCmdWindow, STR_PROMPT, FALSE);
			break;
		}
		return;
	}
	
	int checkAndReturnSelectionRange(int& nStart, int& nEnd)
	{
		m_reCntrl.GetSel(nStart, nEnd);
		
		if(nEnd<m_PromptPosition)
			return UNEDITABLE ;
		else if(nStart < m_PromptPosition)
			return PARTEDITABLE;
		else
			return EDITABLE;
	}
	
	// Check if '[',']' and '{','}' match
	bool isBracketMatch(string str, char char1, char char2)
	{
		int nLength = str.GetLength();
		int nL, nR;
		
		str.Remove(char1);
		nL = nLength - str.GetLength();
		str.Remove(char2);
		nR = nLength - nL - str.GetLength();
		
		return (nR>=nL);  ///Soapy 11/4/03  	FIX_BUG_ON_BRACKET
	}
		
			
private:
	int 		m_nTimerID;
	RichEdit	m_reCntrl;
	Matlab* 	m_pMATLABObj;
	LONG 		m_PromptPosition; ///Soapy 9/19/03 NO_DELETE_PROMPT
	
};

static MATLABConsoleDlg MyDlg;
////////////////////////////////////////////////////////////////////////////////////
// opens the MatlabConsole
BOOL MatlabConsole(BOOL bClose=FALSE)
{
	if(MyDlg.GetWindow())
	{
		if(!bClose)
		{
			out_str("Matlab Console already open");
			return FALSE; //already open
		}
		//we will need to close it
		return TRUE;
	}
	
	return MyDlg.Create();
}

⌨️ 快捷键说明

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