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

📄 行程编码.c

📁 实现了行程编码编码的源码函数
💻 C
字号:
void CCh1_1View::OnCodeRLE() 
{
	// 对当前图像进行行程编码(存为PCX格式文件)
	
	// 获取文档
	CCh1_1Doc* pDoc = GetDocument();
	
	// 指向DIB的指针
	LPSTR	lpDIB;
	
	// 指向DIB象素指针
	LPSTR    lpDIBBits;
	
	// 锁定DIB
	lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB());
	
	// 找到DIB图像象素起始位置
	lpDIBBits = ::FindDIBBits(lpDIB);
	
	// 判断是否是8-bpp位图(这里为了方便,只处理8-bpp位图的行程编码)
	if (::DIBNumColors(lpDIB) != 256)
	{
		// 提示用户
		MessageBox("目前只支持256色位图的行程编码!", "系统提示" ,
			MB_ICONINFORMATION | MB_OK);
		
		// 解除锁定
		::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());
		
		// 返回
		return;
	}
	
	// 更改光标形状
	BeginWaitCursor();
	
	// 文件保存路径
	CString strFilePath;
	
	// 初始化文件名为原始文件名
	strFilePath = pDoc->GetPathName();
	
	// 更改后缀为PCX
	if (strFilePath.Right(4).CompareNoCase(".BMP") == 0)
	{
		// 更改后缀为PCX
		strFilePath = strFilePath.Left(strFilePath.GetLength()-3) + "PCX";
	}
	else
	{
		// 直接添加后缀PCX
		strFilePath += ".PCX";
	}
	
	// 创建SaveAs对话框
	CFileDialog dlg(FALSE, "PCX", strFilePath, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
		"PCX图像文件 (*.PCX) | *.PCX|所有文件 (*.*) | *.*||", NULL);
	
	// 提示用户选择保存的路径
	if (dlg.DoModal() != IDOK)
	{
		// 解除锁定
		::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());
		
		// 恢复光标
		EndWaitCursor();
		
		// 返回
		return;
	}
	
	// 获取用户指定的文件路径
	strFilePath = dlg.GetPathName();
	
	// CFile和CFileException对象
	CFile file;
	CFileException fe;
	
	// 尝试创建指定的PCX文件
	if (!file.Open(strFilePath, CFile::modeCreate |
	  CFile::modeReadWrite | CFile::shareExclusive, &fe))
	{
		// 提示用户
		MessageBox("打开指定PCX文件时失败!", "系统提示" , 
			MB_ICONINFORMATION | MB_OK);
		
		// 返回
		return;
	}
	
	// 调用DIBToPCX256()函数将当前的DIB保存为256色PCX文件
	if (::DIBToPCX256(lpDIB, file))
	{
		// 提示用户
		MessageBox("成功保存为PCX文件!", "系统提示" , 
			MB_ICONINFORMATION | MB_OK);
	}
	else
	{
		// 提示用户
		MessageBox("保存为PCX文件失败!", "系统提示" , 
			MB_ICONINFORMATION | MB_OK);
	}
	
	// 解除锁定
	::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());
	
	// 恢复光标
	EndWaitCursor();
}

⌨️ 快捷键说明

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