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

📄 childfrm.cpp

📁 图像处理源代码VC
💻 CPP
字号:
// ChildFrm.cpp : implementation of the CChildFrame class
//

#include "stdafx.h"
#include "imgproc.h"

#include "ChildFrm.h"

#include "addfile.h"
#include "afx.h"

#include "imgprocDoc.h"
#include "imgprocView.h"

#include "comapi.h"
#include "dibapi.h"
#include "Resource.h"
#include "adddll.h"

#include "InDlg1.h"
#include "In2Dlg.h"
#include "In3Dlg.h"
#include "In4Dlg.h"
#include "In5Dlg.h"
#include "In6Dlg.h"
#include "In7Dlg.h"
#include "In8Dlg.h"
#include "TemDlg.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CChildFrame

IMPLEMENT_DYNCREATE(CChildFrame, CMDIChildWnd)

BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd)
	//{{AFX_MSG_MAP(CChildFrame)
	ON_WM_MDIACTIVATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

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

static int flag=1;

// CChildFrame construction/destruction

CChildFrame::CChildFrame()
{
	// TODO: add member initialization code here
	
}

CChildFrame::~CChildFrame()
{
}

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
       cs.cx=190;
	   cs.cy=250;

	return CMDIChildWnd::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CChildFrame diagnostics

#ifdef _DEBUG
void CChildFrame::AssertValid() const
{
	CMDIChildWnd::AssertValid();
}

void CChildFrame::Dump(CDumpContext& dc) const
{
	CMDIChildWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CChildFrame message handlers

void CChildFrame::OnMDIActivate(BOOL bActivate, CWnd* pActivateWnd, CWnd* pDeactivateWnd) 
{
	CMDIChildWnd::OnMDIActivate(bActivate, pActivateWnd, pDeactivateWnd);
	
    if(flag)
	{
		flag=0;
		addmenu();
	}
		
}

void CChildFrame::addmenu()
{
	CFile file;
//	CFileException fe;
	int i;
	char* pfilename="c:addfile";
	struct Item item;

	if (!file.Open(pfilename,CFile::modeRead|CFile::typeBinary|CFile::shareDenyNone))
	{
/*		#ifdef _DEBUG
          afxDump << "File could not be opened " << e.m_cause << "\n";
        #endif
*/  
		AfxMessageBox("Can't open the file!");
	return;
	}

	CMenu* pTopMenu = AfxGetMainWnd()->GetMenu();
       
	for(i=0;i<20;i++)
	{
		file.Read(&item,sizeof(item));
		if(item.used)
		{
		     CMenu* pMenu = pTopMenu->GetSubMenu(item.menupos+1);
			 pMenu->AppendMenu(MF_STRING|MF_ENABLED,item.id,item.menuname);
		 }
	}
	
	file.Close();

}

BOOL CChildFrame::OnCommand(WPARAM wParam, LPARAM lParam) 
{
	if((wParam>=ID_ITEM0)&&(wParam<=ID_ITEM19))
	{
	    CImgprocView *pView = (CImgprocView *)GetActiveView();
		//AfxMessageBox("kkkk");
		CFile file;
		char *p="c:addfile";
		struct Item item;

		if(!file.Open(p,CFile::modeRead|CFile::typeBinary|CFile::shareDenyNone))
		{
			AfxMessageBox("Can't open the file!");
			return FALSE;
		}
		file.Seek((wParam-ID_ITEM0)*sizeof(item),CFile::begin);
		file.Read(&item,sizeof(item));
		file.Close();

		unsigned short col,row;
		unsigned char** uppimage;
		unsigned char** outimage;
		unsigned char tmp[7][7];
		float v1,v2,v3,v4,v5,v6,v7,v8;

		CInDlg1  dlg1;
		CIn2Dlg  dlg2;
		CIn3Dlg  dlg3;
		CIn4Dlg  dlg4;
		CIn5Dlg  dlg5;
		CIn6Dlg  dlg6;
		CIn7Dlg  dlg7;
		CIn8Dlg  dlg8;
		CTemDlg  dlgtmp;

		switch(item.varnumber)
		{
		case 1:
			dlg1.m_text=item.var1;
			if(dlg1.DoModal()==IDCANCEL)  return TRUE;
			v1=dlg1.m_value;
			break;
		case 2:
			dlg2.m_n1=item.var1;
			dlg2.m_n2=item.var2;
			if(dlg2.DoModal()==IDCANCEL)  return TRUE;
			v1=dlg2.m_v1;
			v2=dlg2.m_v2;
			break;
		case 3:
			dlg3.m_n1=item.var1;
			dlg3.m_n2=item.var2;
			dlg3.m_n3=item.var3;
			if(dlg3.DoModal()==IDCANCEL)  return TRUE;
			v1=dlg3.m_v1;
			v2=dlg3.m_v2;
			v3=dlg3.m_v3;
			break;
		case 4:
			dlg4.m_n1=item.var1;
			dlg4.m_n2=item.var2;
			dlg4.m_n3=item.var3;
			dlg4.m_n4=item.var4;
			if(dlg4.DoModal()==IDCANCEL)  return TRUE;
			v1=dlg4.m_v1;
			v2=dlg4.m_v2;
			v3=dlg4.m_v3;
			v4=dlg4.m_v4;
			break;
		case 5:
			dlg5.m_n1=item.var1;
			dlg5.m_n2=item.var2;
			dlg5.m_n3=item.var3;
			dlg5.m_n4=item.var4;
			dlg5.m_n5=item.var5;
			if(dlg5.DoModal()==IDCANCEL)  return TRUE;
			v1=dlg5.m_v1;
			v2=dlg5.m_v2;
			v3=dlg5.m_v3;
			v4=dlg5.m_v4;
			v5=dlg5.m_v5;
			break;
		case 6:
			dlg6.m_n1=item.var1;
			dlg6.m_n2=item.var2;
			dlg6.m_n3=item.var3;
			dlg6.m_n4=item.var4;
			dlg6.m_n5=item.var5;
			dlg6.m_n6=item.var6;
			if(dlg6.DoModal()==IDCANCEL)  return TRUE;
			v1=dlg6.m_v1;
			v2=dlg6.m_v2;
			v3=dlg6.m_v3;
			v4=dlg6.m_v4;
			v5=dlg6.m_v5;
			v6=dlg6.m_v6;
			break;
		case 7:
			dlg7.m_n1=item.var1;
			dlg7.m_n2=item.var2;
			dlg7.m_n3=item.var3;
			dlg7.m_n4=item.var4;
			dlg7.m_n5=item.var5;
			dlg7.m_n6=item.var6;
			dlg7.m_n7=item.var7;
			if(dlg7.DoModal()==IDCANCEL)  return TRUE;
			v1=dlg7.m_v1;
			v2=dlg7.m_v2;
			v3=dlg7.m_v3;
			v4=dlg7.m_v4;
			v5=dlg7.m_v5;
			v6=dlg7.m_v6;
			v7=dlg7.m_v7;
			break;
		case 8:
			dlg8.m_vname1=item.var1;
			dlg8.m_vname2=item.var2;
			dlg8.m_vname3=item.var3;
			dlg8.m_vname4=item.var4;
			dlg8.m_vname5=item.var5;
			dlg8.m_vname6=item.var6;
			dlg8.m_vname7=item.var7;
			dlg8.m_vname8=item.var8;
			if(dlg8.DoModal()==IDCANCEL)  return TRUE;
			v1=dlg8.m_v1;
			v2=dlg8.m_v2;
			v3=dlg8.m_v3;
			v4=dlg8.m_v4;
			v5=dlg8.m_v5;
			v6=dlg8.m_v6;
			v7=dlg8.m_v7;
			v8=dlg8.m_v8;
			break;
		}

		if(item.tmpflag)
		{
			dlgtmp.m_1_1=0; dlgtmp.m_1_2=0; dlgtmp.m_1_3=0; dlgtmp.m_1_4=0; 
			dlgtmp.m_1_5=0; dlgtmp.m_1_6=0; dlgtmp.m_1_7=0;
			dlgtmp.m_2_1=0; dlgtmp.m_2_2=1; dlgtmp.m_2_3=1; dlgtmp.m_2_4=1; 
			dlgtmp.m_2_5=1; dlgtmp.m_2_6=1; dlgtmp.m_2_7=0;  
			dlgtmp.m_3_1=0; dlgtmp.m_3_2=1; dlgtmp.m_3_3=1; dlgtmp.m_3_4=1; 
			dlgtmp.m_3_5=1; dlgtmp.m_3_6=1; dlgtmp.m_3_7=0;  
			dlgtmp.m_4_1=0; dlgtmp.m_4_2=1; dlgtmp.m_4_3=1; dlgtmp.m_4_4=1; 
			dlgtmp.m_4_5=1; dlgtmp.m_4_6=1; dlgtmp.m_4_7=0;  
			dlgtmp.m_5_1=0; dlgtmp.m_5_2=1; dlgtmp.m_5_3=1; dlgtmp.m_5_4=1; 
			dlgtmp.m_5_5=1; dlgtmp.m_5_6=1; dlgtmp.m_5_7=0;  
			dlgtmp.m_6_1=0; dlgtmp.m_6_2=1; dlgtmp.m_6_3=1; dlgtmp.m_6_4=1; 
			dlgtmp.m_6_5=1; dlgtmp.m_6_6=1; dlgtmp.m_6_7=0;  
			dlgtmp.m_7_1=0; dlgtmp.m_7_2=0; dlgtmp.m_7_3=0; dlgtmp.m_7_4=0; 
			dlgtmp.m_7_5=0; dlgtmp.m_7_6=0; dlgtmp.m_7_7=0;  			
		
			if(dlgtmp.DoModal()==IDCANCEL)   return TRUE;
			
			tmp[0][0]=dlgtmp.m_1_1; tmp[0][1]=dlgtmp.m_1_2; tmp[0][2]=dlgtmp.m_1_3;
			tmp[0][3]=dlgtmp.m_1_4;	tmp[0][4]=dlgtmp.m_1_5; tmp[0][5]=dlgtmp.m_1_6; 
			tmp[0][6]=dlgtmp.m_1_7;
			tmp[1][0]=dlgtmp.m_2_1; tmp[1][1]=dlgtmp.m_2_2; tmp[1][2]=dlgtmp.m_2_3;
			tmp[1][3]=dlgtmp.m_2_4; tmp[1][4]=dlgtmp.m_2_5; tmp[1][5]=dlgtmp.m_2_6;
			tmp[1][6]=dlgtmp.m_2_7;  
			tmp[2][0]=dlgtmp.m_3_1; tmp[2][1]=dlgtmp.m_3_2; tmp[2][2]=dlgtmp.m_3_3; 
			tmp[2][3]=dlgtmp.m_3_4; tmp[2][4]=dlgtmp.m_3_5; tmp[2][5]=dlgtmp.m_3_6; 
			tmp[2][6]=dlgtmp.m_3_7;  
			tmp[3][0]=dlgtmp.m_4_1; tmp[3][1]=dlgtmp.m_4_2; tmp[3][2]=dlgtmp.m_4_3; 
			tmp[3][3]=dlgtmp.m_4_4; tmp[3][4]=dlgtmp.m_4_5; tmp[3][5]=dlgtmp.m_4_6;
			tmp[3][6]=dlgtmp.m_4_7;  
			tmp[4][0]=dlgtmp.m_5_1; tmp[4][1]=dlgtmp.m_5_2; tmp[4][2]=dlgtmp.m_5_3; 
			tmp[4][3]=dlgtmp.m_5_4; tmp[4][4]=dlgtmp.m_5_5; tmp[4][5]=dlgtmp.m_5_6; 
			tmp[4][6]=dlgtmp.m_5_7;  
			tmp[5][0]=dlgtmp.m_6_1; tmp[5][1]=dlgtmp.m_6_2; tmp[5][2]=dlgtmp.m_6_3; 
			tmp[5][3]=dlgtmp.m_6_4; tmp[5][4]=dlgtmp.m_6_5; tmp[5][5]=dlgtmp.m_6_6; 
			tmp[5][6]=dlgtmp.m_6_7;  
			tmp[6][0]=dlgtmp.m_7_1; tmp[6][1]=dlgtmp.m_7_2; tmp[6][2]=dlgtmp.m_7_3; 
			tmp[6][3]=dlgtmp.m_7_4; tmp[6][4]=dlgtmp.m_7_5; tmp[6][5]=dlgtmp.m_7_6; 
			tmp[6][6]=dlgtmp.m_7_7;  
		}	

		CImgprocDoc* pDoc =(CImgprocDoc*)(pView->GetDocument());

		HDIB hDIB = pDoc->GetHDIB();

		if (hDIB != NULL)
		{   
			HDIB back=(HDIB)CopyHandle((HANDLE)hDIB);
			uppimage=::DIBToArray(hDIB,col,row);
       		outimage=(unsigned char**)::fspace_2d(col,row,sizeof(unsigned char));
		//	func(uppimage,outimage,row,col);
		
			HMODULE /*HINSTANCE*/  hll;
		//	FARPROC lpfunc;

			typedef void (* LLL)(unsigned char **InImage,  unsigned char **OutImage, int row,int col,
		        	unsigned char Templete[7][7],float var1,float var2,float var3,
			        float var4,float var5,float var6,float var7,float var8);
			LLL lpfunc;

			hll=(HMODULE)LoadLibrary("adddll.dll");
			if(hll==NULL)
			{
				MessageBox("Can't open the adddll.dll!");
				return FALSE;
			}
			lpfunc=(LLL)GetProcAddress(hll,item.funname);
			lpfunc(uppimage,outimage,/*row*/col,/*col*/row,tmp,v1,v2,v3,v4,v5,v6,v7,v8);
			FreeLibrary(hll);
		
			::ArrayToDIB(col,row,outimage,hDIB);
			::ffree_2d((void**)outimage,col);
			
			pView->myEditCopy();
			pDoc->ReplaceHDIB(back);
//		pDoc->SetModifiedFlag();
			pView->SendMessage(WM_MYOWN);
		}
		
		return  TRUE;
	}	
    else
	return CMDIChildWnd::OnCommand(wParam, lParam);
}

⌨️ 快捷键说明

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