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

📄 bcedlg.cpp

📁 又VC++实现的基于TWAIN的扫描仪图像输入处理软件
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// BCEDlg.cpp : implementation file

#include "stdafx.h"
#include "source10.h"
#include "AIEDlg.h"
#include "BCEDlg.h"
#include "functions.h"

#include "scanner.h"

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

extern char InitDir2[100];
extern CScanner* pScanner;
/////////////////////////////////////////////////////////////////////////////
// CBCEDlg dialog
CBCEDlg::CBCEDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CBCEDlg::IDD, pParent)
{
	m_pParent = pParent;
	m_nID = CBCEDlg::IDD;
	//{{AFX_DATA_INIT(CBCEDlg)
	//}}AFX_DATA_INIT
	int channel;
	
    pScanner->m_nColor=GetPrivateProfileInt("color num","color",16777216,InitDir2); 
	if(pScanner->m_nColor==16777216)
	{
	   m_sChannel = _T("主通道");
	   //其实无意义
       m_nLimit= GetPrivateProfileInt("plimit2","limitM",128,InitDir2);
       m_nLimit2 = GetPrivateProfileInt("plimit2","limitM",128,InitDir2);
	}
	else
	{
      channel=GetPrivateProfileInt("xianzhen","channel",42,InitDir2);
      if(channel==44)//红色通道
	   {
          m_sChannel=_T("红通道");
          m_nLimit= GetPrivateProfileInt("plimit2","limitR",128,InitDir2);
          m_nLimit2 = GetPrivateProfileInt("plimit2","limitR",128,InitDir2);
       }
	   if(channel==42)//绿色通道
	   {
         m_sChannel=_T("绿通道");
         m_nLimit= GetPrivateProfileInt("plimit2","limitG",128,InitDir2);
         m_nLimit2 = GetPrivateProfileInt("plimit2","limitG",128,InitDir2); 
	   }
	   if(channel==41)//蓝色通道
	   {
        m_nLimit= GetPrivateProfileInt("plimit2","limitB",128,InitDir2);
        m_nLimit2 = GetPrivateProfileInt("plimit2","limitB",128,InitDir2);
		m_sChannel=_T("蓝通道");
	   }
  	   
    }
	
    m_nBrightness = GetPrivateProfileInt("pbrightness2","brightM",128,InitDir2); 
	m_nContrast = GetPrivateProfileInt("pcontrast2","contrastM",128,InitDir2);
    m_nBrightness2 = GetPrivateProfileInt("pbrightness2","brightM",128,InitDir2);
    m_nContrast2 = GetPrivateProfileInt("pcontrast2","contrastM",128,InitDir2);

	
}


void CBCEDlg::DoDataExchange(CDataExchange* pDX)
{
	
	//{{AFX_DATA_MAP(CBCEDlg)
	DDX_Control(pDX, IDC_CONTRAST, m_ctrlContrast);
	DDX_Control(pDX, IDC_BRIGHTNESS, m_ctrlBrightness);
    DDX_Control(pDX, IDC_LIMIT, m_ctrlLimit);
	
	DDX_Scroll(pDX, IDC_BRIGHTNESS, m_nBrightness);
	DDX_Scroll(pDX, IDC_CONTRAST, m_nContrast);
    DDX_Scroll(pDX, IDC_LIMIT, m_nLimit);

	DDX_CBString(pDX, IDC_CHANNEL, m_sChannel);
  
	DDX_Text(pDX, IDC_STATIC_C, m_nContrast2);
    DDX_Text(pDX, IDC_STATIC_B, m_nBrightness2);
    DDX_Text(pDX, IDC_STATIC_LIMIT, m_nLimit2); 
	//}}AFX_DATA_MAP
	CDialog::DoDataExchange(pDX);
}

BOOL CBCEDlg::Create(void)
{
	return CDialog::Create(m_nID,m_pParent);
}
BEGIN_MESSAGE_MAP(CBCEDlg, CDialog)
	//{{AFX_MSG_MAP(CBCEDlg)
	ON_WM_HSCROLL()
	ON_CBN_SELCHANGE(IDC_CHANNEL, OnSelchangeChannel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
//预扫描区的调整
/////////////////////////////////////////////////////////////////////////////

//在BCE对话框中的滚动条调整
void CBCEDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	BOOL bAjustBrightness=FALSE;
	BOOL bAjustContrast=FALSE;
    BOOL bAjustLimit=FALSE;

	int npos1;
    char str[36];

    int channel;
    channel=GetPrivateProfileInt("xianzhen","channel",42,InitDir2);
    pScanner->m_nColor=GetPrivateProfileInt("color num","color",16777216,InitDir2); 
   
	switch(nSBCode)
	{
	//拖动滚动条
	case SB_THUMBTRACK:
		//调整明度滚动条
		if(pScrollBar==&m_ctrlBrightness)
		{
			//移动滚动条并刷新
			m_ctrlBrightness.SetScrollPos( nPos );
			//得到滚动条的位置
			m_nBrightness = m_ctrlBrightness.GetScrollPos( );
			bAjustBrightness = TRUE;
            
            if(nPos>128)
			{
			  npos1=(nPos-128)*100/128;
              SetDlgItemInt(IDC_STATIC_B,npos1,TRUE);
			}
			else
			{
              npos1=(128-nPos)*100/128;
              SetDlgItemInt(IDC_STATIC_B,-npos1,TRUE); 
			}
           
			if(pScanner->m_nColor==16777216)
			{
              sprintf(str, "%d", nPos);
              if(m_sChannel=="主通道")
			  {
                WritePrivateProfileString("pbrightness2", "brightM", str, InitDir2);
                WritePrivateProfileString("pbrightness2", "brightR", str, InitDir2);
                WritePrivateProfileString("pbrightness2", "brightG", str, InitDir2); 
			    WritePrivateProfileString("pbrightness2", "brightB", str, InitDir2);
			  }
              if(m_sChannel=="红通道")
			  {
                WritePrivateProfileString("pbrightness2", "brightR", str, InitDir2);
			  }
              if(m_sChannel=="绿通道")
			  {
                WritePrivateProfileString("pbrightness2", "brightG", str, InitDir2);
			  }
              if(m_sChannel=="蓝通道")
			  {
                WritePrivateProfileString("pbrightness2", "brightB", str, InitDir2);
			  }
			}
			else
			{
               sprintf(str, "%d", nPos);
               if(channel==44)//红色通道
			   {
                 WritePrivateProfileString("pbrightness2", "brightR", str, InitDir2);
			   }
	           if(channel==42)//绿色通道
			   {
                  WritePrivateProfileString("pbrightness2", "brightG", str, InitDir2);
			   }
          	   if(channel==41)//蓝色通道
			   {
                 WritePrivateProfileString("pbrightness2", "brightB", str, InitDir2);
			   }
			}
		}
		//调整对比度滚动条
		if(pScrollBar==&m_ctrlContrast)
		{
			m_ctrlContrast.SetScrollPos( nPos );
			m_nContrast = nPos;
			bAjustContrast = TRUE;
		    
			if(nPos>128)
			{
			  npos1=(nPos-128)*100/128;
              SetDlgItemInt(IDC_STATIC_C,npos1,TRUE);
			}
			else
			{
              npos1=(128-nPos)*100/128;
              SetDlgItemInt(IDC_STATIC_C,-npos1,TRUE); 
			}

            if(pScanner->m_nColor==16777216)
			{
              sprintf(str, "%d", nPos);
              if(m_sChannel=="主通道")
			  {
                WritePrivateProfileString("pcontrast2", "contrastM", str, InitDir2);
                WritePrivateProfileString("pcontrast2", "contrastR", str, InitDir2);
                WritePrivateProfileString("pcontrast2", "contrastG", str, InitDir2);
			    WritePrivateProfileString("pcontrast2", "contrastB", str, InitDir2);
			  }

              if(m_sChannel=="红通道")
			  {
                WritePrivateProfileString("pcontrast2", "contrastR", str, InitDir2);
			  }  
              if(m_sChannel=="绿通道")
			  {
                WritePrivateProfileString("pcontrast2", "contrastG", str, InitDir2);
			  }
              if(m_sChannel=="蓝通道")
			  {
                WritePrivateProfileString("pcontrast2", "contrastB", str, InitDir2);
			  }
			}
            else
			{
               sprintf(str, "%d", nPos);
               if(channel==44)//红色通道
			   {
                  WritePrivateProfileString("pcontrast2", "contrastR", str, InitDir2);
			   }
	           if(channel==42)//绿色通道
			   {
                  WritePrivateProfileString("pcontrast2", "contrastG", str, InitDir2);
			   }
          	   if(channel==41)//蓝色通道
			   {
                 WritePrivateProfileString("pcontrast2", "contrastB", str, InitDir2);
			   }
			}
		}
       //黑白二值的阈值
        if(pScrollBar==&m_ctrlLimit)
		{
			m_ctrlLimit.SetScrollPos( nPos );
			m_nLimit = nPos;
			bAjustLimit = TRUE;
		    SetDlgItemInt(IDC_STATIC_LIMIT,nPos,TRUE);
 
            if(channel==44)
			{
             sprintf(str, "%d", nPos);
             WritePrivateProfileString("plimit2", "limitR", str, InitDir2);
		} 
            if(channel==42)
			{
             sprintf(str, "%d", nPos);
             WritePrivateProfileString("plimit2", "limitG", str, InitDir2);
			}
            if(channel==41)
			{
             sprintf(str, "%d", nPos);
             WritePrivateProfileString("plimit2", "limitB", str, InitDir2);
			}
		}
		break;

		//用右箭头调整滚动条并间隔为5个单位
	case SB_LINERIGHT:
				  
		//调整明度滚动条
		if(pScrollBar==&m_ctrlBrightness)
		{
			nPos = m_ctrlBrightness.GetScrollPos();
			if(nPos+5>=255)
				nPos = 255;
			else
				nPos = nPos+5;

			m_ctrlBrightness.SetScrollPos( nPos );		
			m_nBrightness = nPos;
			bAjustBrightness = TRUE;
		
			 if(nPos>128)
			{
			  npos1=(nPos-128)*100/128;
              SetDlgItemInt(IDC_STATIC_B,npos1,TRUE);
			}
			else
			{
              npos1=(128-nPos)*100/128;
              SetDlgItemInt(IDC_STATIC_B,-npos1,TRUE); 
			}

           	if(pScanner->m_nColor==16777216)
			{
              sprintf(str, "%d", nPos);
              if(m_sChannel=="主通道")
			  {
                WritePrivateProfileString("pbrightness2", "brightM", str, InitDir2);
                WritePrivateProfileString("pbrightness2", "brightR", str, InitDir2);
                WritePrivateProfileString("pbrightness2", "brightG", str, InitDir2); 
			    WritePrivateProfileString("pbrightness2", "brightB", str, InitDir2);
			  }
              if(m_sChannel=="红通道")
			  {
                WritePrivateProfileString("pbrightness2", "brightR", str, InitDir2);
			  }
              if(m_sChannel=="绿通道")
			  {
                WritePrivateProfileString("pbrightness2", "brightG", str, InitDir2);
			  }
              if(m_sChannel=="蓝通道")
			  {
                WritePrivateProfileString("pbrightness2", "brightB", str, InitDir2);
			  }
			}
			else
			{
               sprintf(str, "%d", nPos);
               if(channel==44)//红色通道
			   {
                 WritePrivateProfileString("pbrightness2", "brightR", str, InitDir2);
			   }
	           if(channel==42)//绿色通道
			   {
                  WritePrivateProfileString("pbrightness2", "brightG", str, InitDir2);
			   }
          	   if(channel==41)//蓝色通道
			   {
                 WritePrivateProfileString("pbrightness2", "brightB", str, InitDir2);
			   }
			}
		}

		//调整对比度滚动条
		if(pScrollBar==&m_ctrlContrast)
		{
			nPos = m_ctrlContrast.GetScrollPos();
			if(nPos+5>=255)
				nPos = 255;
			else
				nPos = nPos+5;
			
			m_ctrlContrast.SetScrollPos( nPos );
			m_nContrast = nPos;
			bAjustContrast = TRUE;
	        if(nPos>128)
			{
			  npos1=(nPos-128)*100/128;
              SetDlgItemInt(IDC_STATIC_C,npos1,TRUE);
			}
			else
			{
              npos1=(128-nPos)*100/128;
              SetDlgItemInt(IDC_STATIC_C,-npos1,TRUE); 
			}

            if(pScanner->m_nColor==16777216)
			{
              sprintf(str, "%d", nPos);
              if(m_sChannel=="主通道")
			  {

⌨️ 快捷键说明

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