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

📄 picviewer.cpp

📁 一个国人自己实现图像库的程序(有参考价值)
💻 CPP
字号:
// PicViewer.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "PicViewer.h"

#include "MainFrm.h"
#include "ChildFrm.h"
#include "PicViewerDoc.h"
#include "PicViewerView.h"
#include "CombineDlg.h"
#include "DlgAbout.h"

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

/////////////////////////////////////////////////////////////////////////////
// CPicViewerApp

BEGIN_MESSAGE_MAP(CPicViewerApp, CWinApp)
	//{{AFX_MSG_MAP(CPicViewerApp)
	ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
	ON_COMMAND(IDMI_COMBINE_CHANNEL, OnCombineChannel)
	ON_UPDATE_COMMAND_UI(IDMI_COMBINE_CHANNEL, OnUpdateCombineChannel)
	//}}AFX_MSG_MAP
	// Standard file based document commands
	ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
	ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
	// Standard print setup command
	ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPicViewerApp construction

CPicViewerApp::CPicViewerApp()
{
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CPicViewerApp object

CPicViewerApp theApp;

/////////////////////////////////////////////////////////////////////////////
// CPicViewerApp initialization

BOOL CPicViewerApp::InitInstance()
{
	void	* pStartCPU = ::fooStartCountCpuSpeed () ;
	// Standard initialization
	// If you are not using these features and wish to reduce the size
	//  of your final executable, you should remove from the following
	//  the specific initialization routines you do not need.

#ifdef _AFXDLL
	Enable3dControls();			// Call this when using MFC in a shared DLL
#else
	Enable3dControlsStatic();	// Call this when linking to MFC statically
#endif

	// Change the registry key under which our settings are stored.
	// TODO: You should modify this string to be something appropriate
	// such as the name of your company or organization.
	SetRegistryKey(_T("Local AppWizard-Generated Applications"));

	LoadStdProfileSettings();  // Load standard INI file options (including MRU)

	// Register the application's document templates.  Document templates
	//  serve as the connection between documents, frame windows and views.

	CMultiDocTemplate* pDocTemplate;
	pDocTemplate = new CMultiDocTemplate(
		IDR_PICVIETYPE,
		RUNTIME_CLASS(CPicViewerDoc),
		RUNTIME_CLASS(CChildFrame), // custom MDI child frame
		RUNTIME_CLASS(CPicViewerView));
	AddDocTemplate(pDocTemplate);

	// create main MDI Frame window
	CMainFrame* pMainFrame = new CMainFrame;
	if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
		return FALSE;
	m_pMainWnd = pMainFrame;

	// Parse command line for standard shell commands, DDE, file open

	//	关闭第一个子窗口
	CCommandLineInfo cmdInfo;
//	cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing ;

	ParseCommandLine(cmdInfo);

	// Dispatch commands specified on the command line
	if (!ProcessShellCommand(cmdInfo))
		return FALSE;

	// The main window has been initialized, so show and update it.
	pMainFrame->ShowWindow(SW_MAXIMIZE);
//	pMainFrame->MDIMaximize (pMainFrame->GetActiveFrame ()) ;
	pMainFrame->UpdateWindow();

	m_dwCpuFreq = ::fooEndCountCpuSpeed (pStartCPU) ;
//	this->m_pMainWnd->GetMenu ()->CheckMenuItem (IDMI_COLOR_PANNEL, MF_CHECKED) ;
	return TRUE;
}

// App command to run the dialog
void CPicViewerApp::OnAppAbout()
{
	DlgAbout aboutDlg;
	aboutDlg.DoModal();
}

/////////////////////////////////////////////////////////////////////////////
// CPicViewerApp message handlers

int CPicViewerApp::ExitInstance() 
{
	return CWinApp::ExitInstance();
}

void CPicViewerApp::OnCombineChannel() 
{
	CCombineDLG		dlg ;
	if (dlg.DoModal () == IDOK)
	{
		FCDib	comDib ;
		comDib.CombineChannel (dlg.m_pRed, dlg.m_pGreen, dlg.m_pBlue, dlg.m_pAlpha) ;
		
		POSITION posTemplate = GetFirstDocTemplatePosition();
		CDocTemplate* pDocTemplate = GetNextDocTemplate(posTemplate);

		CPicViewerDoc	* pDocument = (CPicViewerDoc*) pDocTemplate->OpenDocumentFile (NULL) ;
		pDocument->m_fPic = comDib ;
		pDocument->AttachPic () ;
		pDocument->m_bFirstShow = TRUE ;
		pDocument->SetModifiedFlag (TRUE) ;
		pDocument->UpdateAllViews (NULL) ;
		pDocument->SetTitle (_T("Channel Combined DIB")) ;
	}
}
void CPicViewerApp::OnUpdateCombineChannel(CCmdUI* pCmdUI) 
{
	int			nOpenDocuments = 0 ;
	POSITION	posTemplate = GetFirstDocTemplatePosition () ;
	while (posTemplate != NULL)
	{
		CDocTemplate	* pTemplate = GetNextDocTemplate (posTemplate) ;
		POSITION		posDoc = pTemplate->GetFirstDocPosition () ;
		while (posDoc != NULL) 
		{
			CPicViewerDoc	* pDoc = (CPicViewerDoc *)pTemplate->GetNextDoc (posDoc) ;
			if (pDoc->m_fPic.IsGrayPalette ())
				nOpenDocuments++ ;
		}
	}
	pCmdUI->Enable (nOpenDocuments != 0) ;
}
int	 CPicViewerApp::NumberOfOpenDocuments () const
{
	int			nOpenDocuments = 0 ;
	POSITION	posTemplate = GetFirstDocTemplatePosition () ;
	while (posTemplate != NULL)
	{
		CDocTemplate	* pTemplate = GetNextDocTemplate (posTemplate) ;
		POSITION		posDoc = pTemplate->GetFirstDocPosition () ;
		while (posDoc != NULL) 
		{
			CDocument	* pDoc = pTemplate->GetNextDoc (posDoc) ;
			nOpenDocuments++ ;
		}
	}
	return nOpenDocuments ;
}

⌨️ 快捷键说明

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