?? 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 + -