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

📄 scanviewerview.cpp

📁 看图软件
💻 CPP
📖 第 1 页 / 共 4 页
字号:
			while (res)
			{
				res=fImg.FindNextFile();
				if (!strNextImgPath.IsEmpty()) break;                               
				if (!fImg.IsDirectory()&&!fImg.IsDots())
				{
					//比较扩展名
					if (((CScanViewerApp *)AfxGetApp())->IsPhotoFile(fImg.GetFileName()))
					{								
						//AfxMessageBox(fImg.GetFilePath());
						strNextImgPath=fImg.GetFilePath();
						break;		
					}
					//Sleep(10);
				}
			}
			fImg.Close();//关闭
		}
	}
	pClass.m_strNextImgPath=strNextImgPath;
	//AfxMessageBox(pClass.m_strNextImgPath);
	///////////////////////////////////////////////////////////////////在限定的目录查找(下一张)图片,如找到任一张都退出循环//////////////////////////////////////////////////////////////////////////
	
	
	if (!pClass.m_strPhotoFileArray.IsEmpty())	
		pClass.PostMessage(WM_MYMSG_UPMYVIEW,0,0);                    //发送消息,标记线程完成图片的查找

	if (!strPPArray.IsEmpty()) strPPArray.RemoveAll();				  //释放资源
	return 0;
}


//idcomcn2007
//10:05 2007-12-8
//下一幅图像
void CScanViewerView::OnNavPapednimg()
{
	// TODO: 在此添加命令处理程序代码
	if (m_strPhotoFileArray.IsEmpty()||imgShow.IsNull()) return;		
	int ia=0,iState=0;
	for (ia=0;ia<m_strPhotoFileArray.GetCount();ia++) if (GetDocument()->GetPathName()==m_strPhotoFileArray.GetAt(ia)) iState=ia;
	
	if (iState<m_strPhotoFileArray.GetCount()-1) 
	{
		CString strSta;
		strSta.Format("%s   %d/%d",m_strPhotoFileArray.GetAt(iState+1),iState+2,m_strPhotoFileArray.GetCount());
		CStatusBar * pStatusBar;
		pStatusBar=(CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);
		//pStatusBar->SetWindowText(strSta); 		             //在状态栏显示相应路径
		pStatusBar->SetPaneText(1,strSta); 		             //在状态栏显示相应路径
		
		AfxGetApp()->OpenDocumentFile(m_strPhotoFileArray.GetAt(iState+1));
	}	
	if ((iState==m_strPhotoFileArray.GetCount()-1)&&!m_strNextImgPath.IsEmpty())
	{
		//进入下一个目录,如果下一个目录为空则再下一个,直至为空
		//AfxMessageBox(m_strNextImgPath);
		AfxGetApp()->OpenDocumentFile(m_strNextImgPath);
	}
}


//idcomcn2007
//10:05 2007-12-8
//上一幅图像
void CScanViewerView::OnNavPapeupimg()
{
	// TODO: 在此添加命令处理程序代码
	if (m_strPhotoFileArray.IsEmpty()||imgShow.IsNull()) return;		
	int ia=0,iState=0;
	for (ia=0;ia<m_strPhotoFileArray.GetCount();ia++) if (GetDocument()->GetPathName()==m_strPhotoFileArray.GetAt(ia)) iState=ia;
	
	if (iState>0) 
	{
		CString strSta;
		strSta.Format("%s   %d/%d",m_strPhotoFileArray.GetAt(iState-1),iState,m_strPhotoFileArray.GetCount());
		CStatusBar * pStatusBar;
		pStatusBar=(CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);
		//pStatusBar->SetWindowText(strSta); 		             //在状态栏显示相应路径		
		pStatusBar->SetPaneText(1,strSta); 		             //在状态栏显示相应路径

		AfxGetApp()->OpenDocumentFile(m_strPhotoFileArray.GetAt(iState-1));
	}
	if ((iState==0)&&!m_strUpwardsImgPath.IsEmpty())
	{
		//进入下一个目录,如果下一个目录为空则再下一个,直至为空
		//AfxMessageBox(m_strNextImgPath);
		AfxGetApp()->OpenDocumentFile(m_strUpwardsImgPath);
	}
}


//idcomcn2007
//10:05 2007-12-8
//首图像
void CScanViewerView::OnNavHomeimg()
{
	// TODO: 在此添加命令处理程序代码
	if (m_strPhotoFileArray.IsEmpty()||imgShow.IsNull()) return;	
	CString strSta;
	strSta.Format("%s   %d/%d",m_strPhotoFileArray.GetAt(0),1,m_strPhotoFileArray.GetCount());
	CStatusBar * pStatusBar;
	pStatusBar=(CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);
	//pStatusBar->SetWindowText(strSta); 		             //在状态栏显示相应路径
	pStatusBar->SetPaneText(1,strSta); 		             //在状态栏显示相应路径

	AfxGetApp()->OpenDocumentFile(m_strPhotoFileArray.GetAt(0));
}


//idcomcn2007
//10:05 2007-12-8
//末图像
void CScanViewerView::OnNavEndimg()
{
	// TODO: 在此添加命令处理程序代码
	if (m_strPhotoFileArray.IsEmpty()||imgShow.IsNull()) return;	
	CString strSta;
	strSta.Format("%s   %d/%d",m_strPhotoFileArray.GetAt(m_strPhotoFileArray.GetCount()-1),m_strPhotoFileArray.GetCount(),m_strPhotoFileArray.GetCount());
	CStatusBar * pStatusBar;
	pStatusBar=(CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);
	//pStatusBar->SetWindowText(strSta); 		             //在状态栏显示相应路径
	pStatusBar->SetPaneText(1,strSta); 		             //在状态栏显示相应路径
	
	AfxGetApp()->OpenDocumentFile(m_strPhotoFileArray.GetAt(m_strPhotoFileArray.GetCount()-1));
}



//idcomcn2007
//17:54 2007-12-22
///////////////////////////////////////////////////////////////////更新视口大小菜单//////////////////////////////////////////////////////////////////////////
void CScanViewerView::OnUpdateFullsize(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetCheck(m_enViewSize==FULL_SIZE);
}

void CScanViewerView::OnUpdateEqualsize(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetCheck(m_enViewSize==EQUAL_SIZE);
}

void CScanViewerView::OnUpdateEqualwidth(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetCheck(m_enViewSize==EQUAL_WIDTH);
}

void CScanViewerView::OnUpdateEqualheight(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetCheck(m_enViewSize==EQUAL_HEIGHT);
}
///////////////////////////////////////////////////////////////////更新视口大小菜单//////////////////////////////////////////////////////////////////////////


//idcomcn2007
//17:54 2007-12-22
///////////////////////////////////////////////////////////////////更新显示模式//////////////////////////////////////////////////////////////////////////
void CScanViewerView::OnFullsize()
{
	// TODO: 在此添加命令处理程序代码
	m_enViewSize=FULL_SIZE;
	CStatusBar * pStatusBar;
	pStatusBar=(CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);	
	pStatusBar->SetPaneText(2,"实际大小(数字键/)"); 		             //在状态栏显示相应路径

	OnInitialUpdate();                                                   //初始化窗口
}

void CScanViewerView::OnEqualsize()
{
	// TODO: 在此添加命令处理程序代码
	m_enViewSize=EQUAL_SIZE;
	CStatusBar * pStatusBar;
	pStatusBar=(CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);	
	pStatusBar->SetPaneText(2,"合适大小(数字键*)"); 		             //在状态栏显示相应路径

	OnInitialUpdate();                                                   //初始化窗口
}

void CScanViewerView::OnEqualwidth()
{
	// TODO: 在此添加命令处理程序代码
	m_enViewSize=EQUAL_WIDTH;
	CStatusBar * pStatusBar;
	pStatusBar=(CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);	
	pStatusBar->SetPaneText(2,"合适宽度(Ctrl+→)"); 		             //在状态栏显示相应路径

	OnInitialUpdate();                                                   //初始化窗口
}

void CScanViewerView::OnEqualheight()
{
	// TODO: 在此添加命令处理程序代码
	m_enViewSize=EQUAL_HEIGHT;
	CStatusBar * pStatusBar;
	pStatusBar=(CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);	
	pStatusBar->SetPaneText(2,"合适高度(Ctrl+↓)"); 		             //在状态栏显示相应路径

	OnInitialUpdate();                                                   //初始化窗口
}
///////////////////////////////////////////////////////////////////更新显示模式//////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////放大和缩小图片//////////////////////////////////////////////////////////////////////////
//idcomcn2007
//21:46 2007-12-25
//放大图片
void CScanViewerView::OnMagnify()
{
	// TODO: 在此添加命令处理程序代码		
	if (!imgShow.IsNull()) 
	{	
		double dw=0,dh=0,dZoom=1.1;
		dw=imgShow.GetWidth()*dZoom;
		dh=imgShow.GetHeight()*dZoom;

		HBITMAP hBmp=imgShow.Detach();
		if (!imgShow.IsNull())	imgShow.Destroy();
		imgShow.Create((int)dw,(int)dh,32);
				
		Bitmap* pImgTemp;
		pImgTemp=Bitmap::FromHBITMAP(hBmp,NULL);

		HDC hDCimg=imgShow.GetDC();
		Graphics grpShow(hDCimg);			
		grpShow.DrawImage(pImgTemp, 0, 0,(INT)dw,(INT)dh);
		grpShow.ReleaseHDC(hDCimg);                  //要记得relese,GDI都需要释放,否则资源会被占用而不接受其他操作	
		imgShow.ReleaseDC();                         //ReleaseDC for each call to GetDC.		
		delete pImgTemp;
		DeleteObject(hBmp);


		// TODO: 计算此视图的合计大小
		CSize sizeTotal;		
		sizeTotal.cx=imgShow.GetWidth()+BLANK_LEFT+BLANK_RIGHT;
		sizeTotal.cy=imgShow.GetHeight()+BLANK_TOP+BLANK_BOTTOM;
		SetScrollSizes(MM_TEXT, sizeTotal,CSize(150,150),CSize(4,4));
		AfxGetMainWnd()->Invalidate();
	}
}


//idcomcn2007
//21:46 2007-12-25
//缩小图片
void CScanViewerView::OnReduce()
{
	// TODO: 在此添加命令处理程序代码
	if (!imgShow.IsNull()) 
	{	
		double dw=0,dh=0,dZoom=1.1;
		dw=imgShow.GetWidth()/dZoom;
		dh=imgShow.GetHeight()/dZoom;
		if (dw<=1) dw=1;
		if (dh<=1) dh=1;

		HBITMAP hBmp=imgShow.Detach();
		if (!imgShow.IsNull())	imgShow.Destroy();
		imgShow.Create((int)dw,(int)dh,32);
				
		Bitmap* pImgTemp;
		pImgTemp=Bitmap::FromHBITMAP(hBmp,NULL);

		HDC hDCimg=imgShow.GetDC();
		Graphics grpShow(hDCimg);			
		grpShow.DrawImage(pImgTemp, 0, 0,(INT)dw,(INT)dh);
		grpShow.ReleaseHDC(hDCimg);                  //要记得relese,GDI都需要释放,否则资源会被占用而不接受其他操作	
		imgShow.ReleaseDC();                         //ReleaseDC for each call to GetDC.		
		delete pImgTemp;
		DeleteObject(hBmp);


		// TODO: 计算此视图的合计大小
		CSize sizeTotal;		
		sizeTotal.cx=imgShow.GetWidth()+BLANK_LEFT+BLANK_RIGHT;
		sizeTotal.cy=imgShow.GetHeight()+BLANK_TOP+BLANK_BOTTOM;
		SetScrollSizes(MM_TEXT, sizeTotal,CSize(150,150),CSize(4,4));
		AfxGetMainWnd()->Invalidate();
	}
}
///////////////////////////////////////////////////////////////////放大和缩小图片//////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////设置顺时针方向旋转多少度//////////////////////////////////////////////////////////////////////////
void CScanViewerView::OnClockwiseRotate0()
{
	// TODO: 在此添加命令处理程序代码
	m_enClockwiseRotate=CLOCKWISE_ROTATE_0;
	OnInitialUpdate();                                                   //初始化窗口
}

void CScanViewerView::OnClockwiseRotate90()
{
	// TODO: 在此添加命令处理程序代码
	m_enClockwiseRotate=CLOCKWISE_ROTATE_90;
	OnInitialUpdate();                                                   //初始化窗口
}

void CScanViewerView::OnClockwiseRotate180()
{
	// TODO: 在此添加命令处理程序代码
	m_enClockwiseRotate=CLOCKWISE_ROTATE_180;
	OnInitialUpdate();                                                   //初始化窗口
}

void CScanViewerView::OnClockwiseRotate270()
{
	// TODO: 在此添加命令处理程序代码
	m_enClockwiseRotate=CLOCKWISE_ROTATE_270;
	OnInitialUpdate();                                                   //初始化窗口
}
///////////////////////////////////////////////////////////////////设置顺时针方向旋转多少度//////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////更新菜单(设置顺时针方向旋转多少度)//////////////////////////////////////////////////////////////////////////
void CScanViewerView::OnUpdateClockwiseRotate0(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetCheck(m_enClockwiseRotate==CLOCKWISE_ROTATE_0);
}

void CScanViewerView::OnUpdateClockwiseRotate90(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetCheck(m_enClockwiseRotate==CLOCKWISE_ROTATE_90);
}

void CScanViewerView::OnUpdateClockwiseRotate180(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetCheck(m_enClockwiseRotate==CLOCKWISE_ROTATE_180);
}

void CScanViewerView::OnUpdateClockwiseRotate270(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetCheck(m_enClockwiseRotate==CLOCKWISE_ROTATE_270);
}
///////////////////////////////////////////////////////////////////更新菜单(设置顺时针方向旋转多少度)//////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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