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

📄 ledemusetup.cpp

📁 魅族M8 LED源码 wince的。。。需要的下
💻 CPP
字号:
#include "LedEmuSetup.h"
#include "resource.h"
#include "UserIni.h"
#include <readwriteini.h>

#include <InitGuid.h>
#include <IMzUnknown.h>
#include <IMzUnknown_IID.h>
//#include <IPhotoViewer.h>
//#include <IPhotoViewer_GUID.h>
#include <IFileBrowser.h>
#include <IFileBrowser_GUID.h>

const int EDIT_HIGHT=50;

COLORREF AllColors[]=
{
	RGB(255,0,0),
	RGB(0,255,0),
	RGB(255,255,0),
	RGB(0,0,255),
	RGB(255,0,255),
	RGB(0,255,255),
	RGB(255,255,255)
};
wchar_t *AllDotInfo[]=
{
	L"点阵30*45",
	L"点阵24*36",
	L"点阵20*30",
};

wchar_t *AllColorString[]=
{
	L"红色",
	L"绿色",
	L"黄色",
	L"蓝色",
	L"紫色",
	L"青色",
	L"白色",
};

CLedEmuSetup::CLedEmuSetup(void)
{
}

CLedEmuSetup::~CLedEmuSetup(void)
{
}


BOOL CLedEmuSetup::OnInitDialog()
{
	// Must all the Init of parent class first!
	if (!CMzWndEx::OnInitDialog())
	{
		return FALSE;
	}

	m_Toolbar.SetPos(0,GetHeight()-MZM_HEIGHT_TEXT_TOOLBAR,GetWidth(),MZM_HEIGHT_TEXT_TOOLBAR);
    m_Toolbar.SetButton(0, true, true, L"返回");
    m_Toolbar.SetID(ID_SETUP_TOOL);
	m_Toolbar.EnableLeftArrow(true);

	m_Caption.SetPos(0,0,GetWidth(),TITLE_HEIGHT);
	m_Caption.SetText(L"详细设置");

	/*
	UiSingleLineEdit m_StringEdit;
	UiSingleLineEdit m_FileName;
	CUiStatusBar m_ColorSetup;
	CUiStatusBar m_DelaySetup;
	UiStatic m_DisColor;

	UiButton m_SelText,m_SelPic;/**/
	wchar_t AppString[20];

	swprintf_s(AppString,20,L"Setting%02d",SelectID);

	UserReadIniData(&Type,AppString,L"Type",0,IniName);//默认为字串
	UserReadIniString(DisPicName,128,AppString,L"Picture",L"",IniName);//默认没有
	UserReadIniString(DisStr,128,AppString,L"String",L"示例字串",IniName);//显示示例字串

	UserReadIniData(&Color,AppString,L"Color",0,IniName);//默认为红色
	UserReadIniData(&Delay,AppString,L"Delay",40,IniName);
	UserReadIniData(&BackLight,AppString,L"BackLight",100,IniName);
	UserReadIniData(&DotSizeSelect,AppString,L"DotSizeSelect",1,IniName);

	m_StringEdit.SetPos(0,TITLE_HEIGHT,GetWidth(),EDIT_HIGHT);
	m_StringEdit.SetID(ID_EDIT_STRING);
	m_StringEdit.SetLeftInvalid(100);
	if(Type == 0)
	{
		m_StringEdit.SetText(DisStr);
		m_StringEdit.SetTip2(L"文字");
	}
	else
	{
		m_StringEdit.SetText(DisPicName);
		m_StringEdit.SetTip2(L"图片");
	}
	m_StringEdit.SetMaxChars(120);
	m_StringEdit.SetSipMode(IM_SIP_MODE_GEL_PY);

	m_Browse.SetPos(GetWidth()-100,TITLE_HEIGHT+EDIT_HIGHT,100,80);
	m_Browse.SetText(L"浏览");
	m_Browse.SetID(ID_BUTTON_BROWSE);
	
	m_SelText.SetPos(0,TITLE_HEIGHT+EDIT_HIGHT,100,80);
	m_SelText.SetText(L"文字");
	m_SelText.SetID(ID_BUTTON_SELTEXT);

	m_SelPic.SetPos((GetWidth()-100)/2,TITLE_HEIGHT+EDIT_HIGHT,100,80);
	m_SelPic.SetText(L"图片");
	m_SelPic.SetID(ID_BUTTON_SELPIC);

	m_DisColor.SetPos(0,TITLE_HEIGHT+EDIT_HIGHT+80,150,40);
	m_DisColor.SetText(AllColorString[Color]);
	m_DisColor.SetTextColor(AllColors[Color]);
	m_DisColor.SetMargin(5);
	m_DisColor.SetDrawTextFormat(DT_LEFT);

	m_ColorSetup.SetPos(150,TITLE_HEIGHT+EDIT_HIGHT+80,GetWidth()-150,40);
	m_ColorSetup.SetID(ID_STATUS_COLOR);
	m_ColorSetup.SetRange(0,6);
	m_ColorSetup.SetPadpos(Color);

	m_DisDelay.SetPos(0,TITLE_HEIGHT+EDIT_HIGHT+80+60,150,40);
	swprintf_s(AppString,10,L"延迟%dms",Delay);
	m_DisDelay.SetText(AppString);
	m_DisDelay.SetMargin(5);
	m_DisDelay.SetDrawTextFormat(DT_LEFT);

	m_DelaySetup.SetPos(150,TITLE_HEIGHT+EDIT_HIGHT+80+60,GetWidth()-150,40);
	m_DelaySetup.SetID(ID_STATUS_DELAY);
	m_DelaySetup.SetRange(20,1000);
	m_DelaySetup.SetPadpos(Delay);

	m_DisLight.SetPos(0,TITLE_HEIGHT+EDIT_HIGHT+80+60*2,150,40);
	swprintf_s(AppString,10,L"背光%d%%",BackLight);
	m_DisLight.SetText(AppString);
	m_DisLight.SetMargin(5);
	m_DisLight.SetDrawTextFormat(DT_LEFT);

	m_LightSetup.SetPos(150,TITLE_HEIGHT+EDIT_HIGHT+80+60*2,GetWidth()-150,40);
	m_LightSetup.SetID(ID_STATUS_LIGHT);
	m_LightSetup.SetRange(0,100);
	m_LightSetup.SetPadpos(BackLight);

	m_DisDot.SetPos(0,TITLE_HEIGHT+EDIT_HIGHT+80+60*3,150,40);
	m_DisDot.SetText(AllDotInfo[DotSizeSelect]);
	m_DisDot.SetMargin(5);
	m_DisDot.SetDrawTextFormat(DT_LEFT);

	m_DotSetup.SetPos(150,TITLE_HEIGHT+EDIT_HIGHT+80+60*3,GetWidth()-150,40);
	m_DotSetup.SetID(ID_STATUS_DOT_SIZE);
	m_DotSetup.SetRange(0,2);
	m_DotSetup.SetPadpos(DotSizeSelect);


	SetAnimateType_Show(MZ_ANIMTYPE_SCROLL_RIGHT_TO_LEFT_PUSH);
	SetAnimateType_Hide(MZ_ANIMTYPE_SCROLL_LEFT_TO_RIGHT_PUSH);
	AddUiWin(&m_Toolbar);
	AddUiWin(&m_StringEdit);
	AddUiWin(&m_Caption);
	AddUiWin(&m_Browse);
	AddUiWin(&m_SelText);
	AddUiWin(&m_SelPic);

	AddUiWin(&m_DelaySetup);
	AddUiWin(&m_ColorSetup);
	AddUiWin(&m_DisColor);
	AddUiWin(&m_DisDelay);
	AddUiWin(&m_DisLight);
	AddUiWin(&m_LightSetup);
	AddUiWin(&m_DisDot);
	AddUiWin(&m_DotSetup);

	return TRUE;
}

void CLedEmuSetup::OnMzCommand(WPARAM wParam, LPARAM lParam)
{
	UINT_PTR id = LOWORD(wParam);
	int nIndex;

	CMzString str(128);

	switch(id)
	{
	case ID_SETUP_TOOL:
        nIndex = lParam;
        switch(nIndex)
		{
		case 0:
			SaveAllInfo2Ini();
			EndModal(ID_OK);
			break;
		}
		break;
	case ID_BUTTON_SELTEXT:
		if(Type == 1)
		{
			Type = 0;
			str = m_StringEdit.GetText();
			wcscpy_s(DisPicName,128,str.C_Str());

			m_StringEdit.SetTip2(L"文字");
			m_StringEdit.SetText(DisStr);
			m_StringEdit.Invalidate();
		}
		break;
	case ID_BUTTON_SELPIC:
		if(Type == 0)
		{
			Type = 1;
			str = m_StringEdit.GetText();

			wcscpy_s(DisStr,128,str.C_Str());

			m_StringEdit.SetTip2(L"图片");
			m_StringEdit.SetText(DisPicName);
			m_StringEdit.Invalidate();
		}
		break;
	case ID_BUTTON_BROWSE:
		if(Type != 0)
		{
			IMzSelect *pSelect = NULL; 
			IFileBrowser *pFile = NULL;                      
			wchar_t WorkPath[255];
			wcscpy_s(WorkPath,255,IniName);
			int i = wcslen(WorkPath)-1;
			for(;WorkPath[i]!='\\';i--);
			WorkPath[i]='\0';
	
			CoInitializeEx(NULL, COINIT_MULTITHREADED );
			if ( SUCCEEDED( CoCreateInstance( CLSID_FileBrowser, NULL,CLSCTX_INPROC_SERVER ,IID_MZ_FileBrowser,(void **)&pFile ) ) )
			{     
				if( SUCCEEDED( pFile->QueryInterface( IID_MZ_Select, (void**)&pSelect ) ) )
				{
					TCHAR file[ MAX_PATH ] = { 0 };
					pFile->SetParentWnd( m_hWnd );
					pFile->SetOpenDirectoryPath(WorkPath); //如果不调用此函数则默认为根目录
					pFile->SetExtFilter( L"*.bmp;" );                                      
					pFile->SetOpenDocumentType(DOCUMENT_SELECT_SINGLE_FILE); //应用根据需求进行文档打开方式的设置
					if( pSelect->Invoke() ) 
					{//各应用根据自己需求获取文档的返回值						
						_tcscpy( file, pFile->GetSelectedFileName());

						ImagingHelper pDotImg;
						if(pDotImg.LoadImage(file,false,true,false))
						{

							i = pDotImg.GetImageHeight();
							int j = GetWidth();
							if((i == j/LED_HEIGHT1)|| (i == j/LED_HEIGHT2) || (i == j/LED_HEIGHT3))
							{
								m_StringEdit.SetText(file);
							}
							else
							{
								MzMessageBoxEx( m_hWnd,L"文件高度只可以为20,24,30", L"Test" );
							}
						}
						else
						{
							MzMessageBoxEx( m_hWnd,L"打开图片文件错误", L"Test" );
						}
						//std::wstring displayText = L"选择的文件为:";
						//displayText += file;
						//MzMessageBoxEx( m_hWnd, displayText.c_str(), L"Test" );
						//displayText.clear();

					}
					pSelect->Release();
				}     
				pFile->Release();
			}	
			CoUninitialize();
		}
	}
}

LRESULT CLedEmuSetup::MzDefWndProc(UINT message, WPARAM wParam, LPARAM lParam)
{
	//CMzString str(128);
	wchar_t tmpS[20];
	switch(message)
	{
		// process the mouse notify message
	case MZ_MOUSE_DOWN_MOVE:
		{
			switch(wParam)//ID
			{
			case ID_STATUS_COLOR:
				Color = lParam;
				m_DisColor.SetText(AllColorString[Color]);
				m_DisColor.SetTextColor(AllColors[Color]);
				m_DisColor.Invalidate();
				break;
			case ID_STATUS_DELAY:
				Delay = lParam;
				swprintf_s(tmpS,10,L"延迟%dms",Delay);
				m_DisDelay.SetText(tmpS);
				m_DisDelay.Invalidate();
				break;
			case ID_STATUS_LIGHT:
				BackLight = lParam;
				swprintf_s(tmpS,10,L"背光%d%%",BackLight);
				m_DisLight.SetText(tmpS);
				m_DisLight.Invalidate();
				break;
			case ID_STATUS_DOT_SIZE:
				DotSizeSelect = lParam;
				m_DisDot.SetText(AllDotInfo[DotSizeSelect]);
				m_DisDot.Invalidate();
				break;
			}
		}
		break;
	}
	return CMzWndEx::MzDefWndProc(message,wParam,lParam);
}

void CLedEmuSetup::SetIniFileName(wchar_t *p)
{
	IniName = p;
}
void CLedEmuSetup::SetEditItem(int n)
{
	SelectID = n;
}

void CLedEmuSetup::SaveAllInfo2Ini()
{
	wchar_t AppString[20];
	CMzString str(128);
	str = m_StringEdit.GetText();
	if(Type == 0)
	{
		wcscpy_s(DisStr,128,str.C_Str());
	}
	else
	{
		wcscpy_s(DisPicName,128,str.C_Str());
		if(wcslen(DisPicName) == 0)
		{
			MzMessageBoxEx(m_hWnd,L"图片文件名为空,可能会导致未知错误",L"警告");
		}
	}

	swprintf_s(AppString,20,L"Setting%02d",SelectID);
	IniWriteInt(AppString,L"Type",Type,IniName);
	IniWriteInt(AppString,L"Color",Color,IniName);
	IniWriteInt(AppString,L"Delay",Delay,IniName);
	IniWriteInt(AppString,L"BackLight",BackLight,IniName);
	IniWriteInt(AppString,L"DotSizeSelect",DotSizeSelect,IniName);

	IniWriteString(AppString,L"String",DisStr,IniName);
	IniWriteString(AppString,L"Picture",DisPicName,IniName);
}

⌨️ 快捷键说明

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