📄 selectlist.cpp
字号:
#include "SelectList.h"
#include "resource.h"
#include "LedEmuSetup.h"
#include <readwriteini.h>
CSelectList::CSelectList(void)
{
}
CSelectList::~CSelectList(void)
{
}
BOOL CSelectList::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_SELECTLIST_TOOL);
m_Toolbar.EnableLeftArrow(true);
m_SelectList.SetPos(0,TITLE_HEIGHT,GetWidth(),GetHeight()-MZM_HEIGHT_TEXT_TOOLBAR-TITLE_HEIGHT);
m_SelectList.SetID(ID_SELECT_LIST);
m_SelectList.EnableNotifyMessage(true);
m_Caption.SetPos(0,0,GetWidth(),TITLE_HEIGHT);
m_Caption.SetText(L"选择预置的选项");
LoadListFromIni();
SetAnimateType_Show(MZ_ANIMTYPE_FADE);
SetAnimateType_Hide(MZ_ANIMTYPE_FADE);
AddUiWin(&m_Toolbar);
AddUiWin(&m_SelectList);
AddUiWin(&m_Caption);
return TRUE;
}
void CSelectList::OnMzCommand(WPARAM wParam, LPARAM lParam)
{
UINT_PTR id = LOWORD(wParam);
int nIndex;
switch(id)
{
case ID_SELECTLIST_TOOL:
nIndex = lParam;
switch(nIndex)
{
case 0:
//swprintf_s(AppString,20,L"LastSelect",SelectID);
IniWriteInt(L"LastSelect",L"Select",LastSelect,IniName);
EndModal(ID_OK);
break;
}
break;
}
}
LRESULT CSelectList::MzDefWndProc(UINT message, WPARAM wParam, LPARAM lParam)
{
//CMzString str(128);
switch(message)
{
// process the mouse notify message
case MZ_WM_MOUSE_NOTIFY:
{
int nID = LOWORD(wParam);
int nNotify = HIWORD(wParam);
int x = LOWORD(lParam);
int y = HIWORD(lParam);
int IndexSave;
// process the mouse left button down notification
if(nID==ID_SELECT_LIST)
{
if ((nNotify==MZ_MN_LBUTTONDOWN)||(nNotify==MZ_MN_LBUTTONDBLCLK))
{
if (!m_SelectList.IsMouseDownAtScrolling() && !m_SelectList.IsMouseMoved())
{
if(x < (GetWidth()/2))
{
IndexSave = m_SelectList.CalcIndexOfPos(x, y);
if((IndexSave != -1) && (IndexSave !=LastSelect))
{
LastSelect = IndexSave;
m_SelectList.SetCurrentSel(LastSelect);
IniWriteInt(L"LastSelect",L"Select",LastSelect,IniName);
}
}
else
{
int nIndex = m_SelectList.CalcIndexOfPos(x, y);
m_SelectList.SetSelectedIndex(nIndex);
}
m_SelectList.Invalidate();
m_SelectList.Update();
}
}
else if(nNotify==MZ_MN_LBUTTONUP)
{
int n;
if((n = m_SelectList.GetSelectedIndex()) != -1 && (x >= (GetWidth()/2)))
{
//str = m_SelectList.GetItem(n)->Text;
//MzMessageBoxEx(m_hWnd,str.C_Str(), L"Test", MB_OK);
CLedEmuSetup dlg;
dlg.SetIniFileName(IniName);
dlg.SetEditItem(n);
RECT rcWork;
rcWork = MzGetWorkArea();
rcWork.top = 0;
dlg.Create(rcWork.left,rcWork.top,RECT_WIDTH(rcWork),RECT_HEIGHT(rcWork), m_hWnd, 0, WS_POPUP);
dlg.DoModal();
m_SelectList.RemoveAll();
LoadListFromIni();
}
}
else if (nNotify==MZ_MN_MOUSEMOVE)
{
m_SelectList.SetSelectedIndex(-1);
m_SelectList.Invalidate();
m_SelectList.Update();
}
return 0;
}
}
return 0;
}
return CMzWndEx::MzDefWndProc(message,wParam,lParam);
}
//设定INI文件名
void CSelectList::SetIniFileName(wchar_t *p)
{
IniName = p;
}
void CSelectList::LoadListFromIni()
{
wchar_t AppString[20];
CMzString str(128);
wchar_t buf[128];
ListItem li;
int i;
int Type,Color;
UserReadIniData(&LastSelect,L"LastSelect",L"Select",0,IniName);//选择第一个
//从INI中读取设置
for(i = 0;i < MAX_PRESENT_ITEM;i++)
{
swprintf_s(AppString,20,L"Setting%02d",i);
UserReadIniData(&Type,AppString,L"Type",0,IniName);//默认为字串
if(Type != 0)
{
UserReadIniString(buf,128,AppString,L"Picture",L"",IniName);//默认没有
}
else
{
UserReadIniString(buf,128,AppString,L"String",L"示例字串",IniName);//显示示例字串
}
UserReadIniData(&Color,AppString,L"Color",0,IniName);//默认为红色
wcscpy_s(str.C_Str(),128,buf);
li.Text = str;
li.Data = (void *)((Color&0xff)+((Type&0xff)<<8));//把Data当数据来传递
m_SelectList.AddItem(li);
}
m_SelectList.SetCurrentSel(LastSelect);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -