📄 ledemusetup.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 + -