INT_PTR CInformationBarSettingsDialog::DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
	{
		switch (uMsg) {
		case WM_INITDIALOG:
			{
				const CTSTaskCentreSettings &Settings=m_Core.GetSettings();

				Settings.MainBoard.GetInformationBarFont(&m_CurrentFont);
				m_InformationBar.SetItemMargin(m_Core.ScaleDPI(m_InformationBar.GetDefaultItemMargin()));
				m_InformationBar.SetFont(m_CurrentFont);
				m_InformationBar.Create(hDlg);

				m_ItemMargin=MapDialogUnitX(2);
				::SendDlgItemMessage(hDlg,IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST,
									 LB_SETITEMHEIGHT,0,m_InformationBar.GetHeight()+m_ItemMargin*2);

				CMainBoardSettings::InformationBarItemList ItemList;
				Settings.MainBoard.GetInformationBarItemList(&ItemList);
				for (size_t i=0;i<ItemList.size();i++) {
					CMainBoardSettings::InformationBarItemInfo *pItemInfo=
						new CMainBoardSettings::InformationBarItemInfo(ItemList[i]);
					::SendDlgItemMessage(hDlg,IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST,
										 LB_ADDSTRING,0,reinterpret_cast<LPARAM>(pItemInfo));

					InformationBarItems::CCustomInformationItem *pItem=
						new InformationBarItems::CCustomInformationItem(0);
					pItem->SetFormat(pItemInfo->Format.c_str());
					m_InformationBar.AddItem(pItem);
				}

				static const LPCTSTR TextAlignList[] = {
					TEXT("����"),TEXT("�E��"),TEXT("����"),
				};
				for (int i=0;i<_countof(TextAlignList);i++) {
					::SendDlgItemMessage(hDlg,IDC_SETTINGS_INFORMATION_BAR_TEXT_ALIGN,
										 CB_ADDSTRING,0,reinterpret_cast<LPARAM>(TextAlignList[i]));
				}

				::SendDlgItemMessage(hDlg,IDC_SETTINGS_INFORMATION_BAR_ITEM_WIDTH_SPIN,
									 UDM_SETRANGE32,0,10000);

				SetItemInfo();

				SetFontInfo(hDlg,IDC_SETTINGS_INFORMATION_BAR_FONT_INFO,m_CurrentFont);

				SetTimeComboBox(hDlg,IDC_SETTINGS_INFORMATION_BAR_UPDATE_INTERVAL,
								1,10,Settings.MainBoard.GetInformationBarUpdateInterval());

				CheckItem(IDC_SETTINGS_INFORMATION_BAR_SHOW_ERROR,
						  Settings.MainBoard.GetInformationBarShowError());
				SetTimeComboBox(hDlg,IDC_SETTINGS_INFORMATION_BAR_ERROR_DURATION,
								1,10,Settings.MainBoard.GetInformationBarErrorDuration());
				EnableItems(IDC_SETTINGS_INFORMATION_BAR_ERROR_DURATION_LABEL,
							IDC_SETTINGS_INFORMATION_BAR_ERROR_DURATION,
							Settings.MainBoard.GetInformationBarShowError());
			}
			return TRUE;

		case WM_DRAWITEM:
			{
				LPDRAWITEMSTRUCT pdis=reinterpret_cast<LPDRAWITEMSTRUCT>(lParam);

				if (wParam==IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST) {
					switch (pdis->itemAction) {
					case ODA_DRAWENTIRE:
					case ODA_SELECT:
						{
							const bool fSelected=(pdis->itemState & ODS_SELECTED)!=0;

							::FillRect(pdis->hDC,&pdis->rcItem,
								reinterpret_cast<HBRUSH>(
									static_cast<INT_PTR>((fSelected?COLOR_HIGHLIGHT:COLOR_WINDOW)+1)));

							if ((int)pdis->itemID>=0) {
								const CMainBoardSettings::InformationBarItemInfo *pItemInfo=
									reinterpret_cast<const CMainBoardSettings::InformationBarItemInfo*>(pdis->itemData);
								InformationBarItems::CCustomInformationItem *pItem=
									static_cast<InformationBarItems::CCustomInformationItem*>(m_InformationBar.GetItem(pdis->itemID));
								if (pItem==nullptr)
									break;

								pItem->SetTextAlign(CInformationBar::CItem::TextAlign(pItemInfo->TextAlign));

								RECT rcItem=pdis->rcItem;
								::InflateRect(&rcItem,-m_ItemMargin,-m_ItemMargin);
								RECT rcMargin=m_InformationBar.GetItemMargin();
								rcItem.right=rcItem.left+
									(pItemInfo->Width<0?CInformationBar::CItem::DEFAULT_WIDTH:pItemInfo->Width)+
									rcMargin.left+rcMargin.right;

								m_InformationBar.DrawItemPreview(pItem,pdis->hDC,rcItem);
							}
						}
						if ((pdis->itemState & ODS_FOCUS)==0)
							break;

					case ODA_FOCUS:
						if ((pdis->itemState & ODS_NOFOCUSRECT)==0)
							::DrawFocusRect(pdis->hDC,&pdis->rcItem);
						break;
					}
				}
			}
			return TRUE;

		case WM_COMMAND:
			switch (LOWORD(wParam)) {
			case IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST:
				if (HIWORD(wParam)==LBN_SELCHANGE) {
					SetItemInfo();
				}
				return TRUE;

			case IDC_SETTINGS_INFORMATION_BAR_NEW_ITEM:
				{
					CMainBoardSettings::InformationBarItemInfo *pItemInfo=
						new CMainBoardSettings::InformationBarItemInfo;

					pItemInfo->TextAlign=0;

					LRESULT Index=::SendDlgItemMessage(hDlg,IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST,
													   LB_ADDSTRING,0,reinterpret_cast<LPARAM>(pItemInfo));
					::SendDlgItemMessage(hDlg,IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST,
										 LB_SETCURSEL,Index,0);

					InformationBarItems::CCustomInformationItem *pItem=
						new InformationBarItems::CCustomInformationItem(0);
					m_InformationBar.AddItem(pItem);

					SetItemInfo();
				}
				return TRUE;

			case IDC_SETTINGS_INFORMATION_BAR_DELETE_ITEM:
				{
					LRESULT Sel=::SendDlgItemMessage(hDlg,IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST,LB_GETCURSEL,0,0);

					if (Sel>=0) {
						delete reinterpret_cast<CMainBoardSettings::InformationBarItemInfo*>(
							::SendDlgItemMessage(hDlg,IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST,LB_GETITEMDATA,Sel,0));
						::SendDlgItemMessage(hDlg,IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST,LB_DELETESTRING,Sel,0);
						m_InformationBar.DeleteItem(Sel);
						SetItemInfo();
					}
				}
				return TRUE;

			case IDC_SETTINGS_INFORMATION_BAR_MOVE_UP_ITEM:
			case IDC_SETTINGS_INFORMATION_BAR_MOVE_DOWN_ITEM:
				{
					HWND hwndList=GetItemHandle(IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST);
					bool fUp=LOWORD(wParam)==IDC_SETTINGS_INFORMATION_BAR_MOVE_UP_ITEM;
					LRESULT Sel=::SendMessage(hwndList,LB_GETCURSEL,0,0);
					LRESULT To;

					if (fUp) {
						if (Sel<1)
							return TRUE;
						To=Sel-1;
					} else {
						if (Sel<0 || Sel+1>=::SendMessage(hwndList,LB_GETCOUNT,0,0))
							return TRUE;
						To=Sel+1;
					}

					::SendMessage(hwndList,WM_SETREDRAW,FALSE,0);
					LRESULT ItemData=::SendMessage(hwndList,LB_GETITEMDATA,Sel,0);
					::SendMessage(hwndList,LB_DELETESTRING,Sel,0);
					::SendMessage(hwndList,LB_INSERTSTRING,To,ItemData);
					::SendMessage(hwndList,LB_SETCURSEL,To,0);
					UpdateItemFormat(int(Sel));
					UpdateItemFormat(int(To));
					::SendMessage(hwndList,WM_SETREDRAW,TRUE,0);
					::InvalidateRect(hwndList,nullptr,TRUE);
					SetItemInfo();
				}
				return TRUE;

			case IDC_SETTINGS_INFORMATION_BAR_FORMAT:
				if (HIWORD(wParam)==EN_CHANGE) {
					CMainBoardSettings::InformationBarItemInfo *pItem=GetSelectedItem();

					if (pItem!=nullptr) {
						GetItemString(IDC_SETTINGS_INFORMATION_BAR_FORMAT,&pItem->Format);
						UpdateItemFormat((int)::SendDlgItemMessage(hDlg,IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST,LB_GETCURSEL,0,0));
						UpdateSelectedItem();
					}
				}
				return TRUE;

			case IDC_SETTINGS_INFORMATION_BAR_FORMAT_MENU:
				{
					HMENU hmenu=::CreatePopupMenu();

					InformationBarItems::CCustomInformationItem::ParameterInfo Info;
					for (int i=0;InformationBarItems::CCustomInformationItem::GetParameterInfo(i,&Info);i++) {
						WCHAR szText[128];

						TSTask::FormatString(szText,_countof(szText),L"%s\t%s",
											 Info.pszParameter,Info.pszText);
						::AppendMenu(hmenu,MF_STRING | MF_ENABLED,i+1,szText);
					}

					RECT rc;
					::GetWindowRect(GetItemHandle(IDC_SETTINGS_INFORMATION_BAR_FORMAT_MENU),&rc);
					int Result=::TrackPopupMenu(hmenu,TPM_RETURNCMD,rc.left,rc.bottom,0,hDlg,nullptr);
					::DestroyMenu(hmenu);

					if (Result>0
							&& InformationBarItems::CCustomInformationItem::GetParameterInfo(Result-1,&Info)) {
						HWND hwndEdit=GetItemHandle(IDC_SETTINGS_INFORMATION_BAR_FORMAT);
						DWORD Start,End;

						::SetFocus(hwndEdit);
						::SendMessage(hwndEdit,EM_GETSEL,
									  reinterpret_cast<WPARAM>(&Start),reinterpret_cast<LPARAM>(&End));
						::SendMessage(hwndEdit,EM_REPLACESEL,
									  TRUE,reinterpret_cast<LPARAM>(Info.pszParameter));
						if (End<Start)
							Start=End;
						::SendMessage(hwndEdit,EM_SETSEL,
									  Start,Start+::lstrlen(Info.pszParameter));
					}
				}
				return TRUE;

			case IDC_SETTINGS_INFORMATION_BAR_TEXT_ALIGN:
				if (HIWORD(wParam)==CBN_SELCHANGE) {
					CMainBoardSettings::InformationBarItemInfo *pItem=GetSelectedItem();

					if (pItem!=nullptr) {
						pItem->TextAlign=
							(int)::SendDlgItemMessage(hDlg,IDC_SETTINGS_INFORMATION_BAR_TEXT_ALIGN,CB_GETCURSEL,0,0);
						UpdateSelectedItem();
					}
				}
				return TRUE;

			case IDC_SETTINGS_INFORMATION_BAR_ITEM_WIDTH:
				if (HIWORD(wParam)==EN_CHANGE) {
					CMainBoardSettings::InformationBarItemInfo *pItem=GetSelectedItem();

					if (pItem!=nullptr) {
						pItem->Width=GetItemInt(IDC_SETTINGS_INFORMATION_BAR_ITEM_WIDTH);
						UpdateSelectedItem();
					}
				}
				return TRUE;

			case IDC_SETTINGS_INFORMATION_BAR_CHOOSE_FONT:
				if (ChooseFontDialog(hDlg,&m_CurrentFont)) {
					SetFontInfo(hDlg,IDC_SETTINGS_INFORMATION_BAR_FONT_INFO,m_CurrentFont);
					m_InformationBar.SetFont(m_CurrentFont);
					::SendDlgItemMessage(hDlg,IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST,
										 LB_SETITEMHEIGHT,0,m_InformationBar.GetHeight()+m_ItemMargin*2);
					::InvalidateRect(GetItemHandle(IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST),nullptr,TRUE);
				}
				return TRUE;

			case IDC_SETTINGS_INFORMATION_BAR_SHOW_ERROR:
				EnableItems(IDC_SETTINGS_INFORMATION_BAR_ERROR_DURATION_LABEL,
							IDC_SETTINGS_INFORMATION_BAR_ERROR_DURATION,
							IsItemChecked(IDC_SETTINGS_INFORMATION_BAR_SHOW_ERROR));
			}
			return TRUE;

		case WM_DESTROY:
			{
				int ItemCount=(int)::SendDlgItemMessage(hDlg,IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST,LB_GETCOUNT,0,0);
				for (int i=0;i<ItemCount;i++) {
					delete reinterpret_cast<CMainBoardSettings::InformationBarItemInfo*>(
						::SendDlgItemMessage(hDlg,IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST,LB_GETITEMDATA,i,0));
				}
				::SendDlgItemMessage(hDlg,IDC_SETTINGS_INFORMATION_BAR_ITEM_LIST,LB_RESETCONTENT,0,0);

				m_InformationBar.DeleteAllItems();
			}
			return TRUE;
		}

		return FALSE;
	}
Esempio n. 2
0
INT_PTR CPanelOptions::DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
	switch (uMsg) {
	case WM_INITDIALOG:
		{
			DlgCheckBox_Check(hDlg,IDC_PANELOPTIONS_SNAPATMAINWINDOW,
												m_fSnapAtMainWindow);
			DlgCheckBox_Check(hDlg,IDC_PANELOPTIONS_ATTACHTOMAINWINDOW,
												m_fAttachToMainWindow);

			// Opacity
			::SendDlgItemMessage(hDlg,IDC_PANELOPTIONS_OPACITY_TB,
										TBM_SETRANGE,TRUE,MAKELPARAM(20,100));
			::SendDlgItemMessage(hDlg,IDC_PANELOPTIONS_OPACITY_TB,
										TBM_SETPOS,TRUE,m_Opacity);
			::SendDlgItemMessage(hDlg,IDC_PANELOPTIONS_OPACITY_TB,
										TBM_SETPAGESIZE,0,10);
			::SendDlgItemMessage(hDlg,IDC_PANELOPTIONS_OPACITY_TB,
										TBM_SETTICFREQ,10,0);
			::SetDlgItemInt(hDlg,IDC_PANELOPTIONS_OPACITY_EDIT,m_Opacity,TRUE);
			::SendDlgItemMessage(hDlg,IDC_PANELOPTIONS_OPACITY_UD,
										UDM_SETRANGE,0,MAKELPARAM(100,20));

			m_CurSettingFont=m_Font;
			SetFontInfo(hDlg,IDC_PANELOPTIONS_FONTINFO,&m_Font);
			DlgCheckBox_Check(hDlg,IDC_PANELOPTIONS_SPECCAPTIONFONT,m_fSpecCaptionFont);
			EnableDlgItems(hDlg,IDC_PANELOPTIONS_CAPTIONFONT_INFO,
						   IDC_PANELOPTIONS_CAPTIONFONT_CHOOSE,
						   m_fSpecCaptionFont);
			m_CurSettingCaptionFont=m_CaptionFont;
			SetFontInfo(hDlg,IDC_PANELOPTIONS_CAPTIONFONT_INFO,&m_CaptionFont);

			m_ItemListView.Attach(::GetDlgItem(hDlg,IDC_PANELOPTIONS_ITEMLIST));
			m_ItemListView.InitCheckList();
			PanelItemInfoList ItemList(m_ItemList);
			for (size_t i=0;i<m_AvailItemList.size();i++) {
				const TVTest::String &ID=m_AvailItemList[i].ID;
				if (std::find_if(ItemList.begin(),ItemList.end(),
						[&](const PanelItemInfo &Item) -> bool {
							return CompareID(Item.ID,ID); })==ItemList.end()) {
					PanelItemInfo Item;
					Item.ID=ID;
					Item.fVisible=m_AvailItemList[i].fVisible;
					ItemList.push_back(Item);
				}
			}
			int ItemCount=0;
			for (int i=0;i<(int)ItemList.size();i++) {
				const PanelItemInfo &Item=ItemList[i];
				int ID=GetItemIDFromIDText(Item.ID);
				if (ID>=0) {
					m_ItemListView.InsertItem(ItemCount,m_AvailItemList[ID].Title.c_str(),ID);
					m_ItemListView.CheckItem(ItemCount,Item.fVisible);
					ItemCount++;
				}
			}
			UpdateItemListControlsState();

			DlgComboBox_AddString(hDlg,IDC_PANELOPTIONS_FIRSTTAB,TEXT("最後に表示したタブ"));
			int Sel=0;
			if (!m_InitialTab.empty()) {
				LPTSTR p;
				long IDNum=std::_tcstol(m_InitialTab.c_str(),&p,10);
				if (*p==_T('\0')) {
					if (IDNum>=0 && (size_t)IDNum<m_AvailItemList.size())
						Sel=IDNum+1;
				}
			}
			for (size_t i=0;i<m_AvailItemList.size();i++) {
				DlgComboBox_AddString(hDlg,IDC_PANELOPTIONS_FIRSTTAB,m_AvailItemList[i].Title.c_str());
				if (Sel==0 && CompareID(m_AvailItemList[i].ID,m_InitialTab))
					Sel=(int)i+1;
			}
			DlgComboBox_SetCurSel(hDlg,IDC_PANELOPTIONS_FIRSTTAB,Sel);

			static const LPCTSTR TabStyleList[] = {
				TEXT("文字のみ"),
				TEXT("アイコンのみ"),
				TEXT("アイコンと文字"),
			};
			for (int i=0;i<lengthof(TabStyleList);i++)
				DlgComboBox_AddString(hDlg,IDC_PANELOPTIONS_TABSTYLE,TabStyleList[i]);
			DlgComboBox_SetCurSel(hDlg,IDC_PANELOPTIONS_TABSTYLE,(int)m_TabStyle);

			DlgCheckBox_Check(hDlg,IDC_PANELOPTIONS_TABTOOLTIP,m_fTabTooltip);
		}
		return TRUE;

	case WM_HSCROLL:
		if (reinterpret_cast<HWND>(lParam)==
				::GetDlgItem(hDlg,IDC_PANELOPTIONS_OPACITY_TB)) {
			SyncEditWithTrackBar(hDlg,IDC_PANELOPTIONS_OPACITY_TB,
									  IDC_PANELOPTIONS_OPACITY_EDIT);
		}
		return TRUE;

	case WM_COMMAND:
		switch (LOWORD(wParam)) {
		case IDC_PANELOPTIONS_OPACITY_EDIT:
			if (HIWORD(wParam)==EN_CHANGE)
				SyncTrackBarWithEdit(hDlg,IDC_PANELOPTIONS_OPACITY_EDIT,
										  IDC_PANELOPTIONS_OPACITY_TB);
			return TRUE;

		case IDC_PANELOPTIONS_ITEMLIST_UP:
		case IDC_PANELOPTIONS_ITEMLIST_DOWN:
			{
				int From=m_ItemListView.GetSelectedItem(),To;

				if (LOWORD(wParam)==IDC_PANELOPTIONS_ITEMLIST_UP)
					To=From-1;
				else
					To=From+1;
				if (To<0 || To>=m_ItemListView.GetItemCount())
					return TRUE;
				m_ItemListView.MoveItem(From,To);
				UpdateItemListControlsState();
			}
			return TRUE;

		case IDC_PANELOPTIONS_CHOOSEFONT:
			if (ChooseFontDialog(hDlg,&m_CurSettingFont))
				SetFontInfo(hDlg,IDC_PANELOPTIONS_FONTINFO,&m_CurSettingFont);
			return TRUE;

		case IDC_PANELOPTIONS_SPECCAPTIONFONT:
			EnableDlgItemsSyncCheckBox(hDlg,IDC_PANELOPTIONS_CAPTIONFONT_INFO,
									   IDC_PANELOPTIONS_CAPTIONFONT_CHOOSE,
									   IDC_PANELOPTIONS_SPECCAPTIONFONT);
			return TRUE;

		case IDC_PANELOPTIONS_CAPTIONFONT_CHOOSE:
			if (ChooseFontDialog(hDlg,&m_CurSettingCaptionFont))
				SetFontInfo(hDlg,IDC_PANELOPTIONS_CAPTIONFONT_INFO,&m_CurSettingCaptionFont);
			return TRUE;
		}
		return TRUE;

	case WM_NOTIFY:
		switch (((LPNMHDR)lParam)->code) {
		case PSN_APPLY:
			{
				CMainPanel &Panel=GetAppClass().Panel;

				m_fSnapAtMainWindow=
					DlgCheckBox_IsChecked(hDlg,IDC_PANELOPTIONS_SNAPATMAINWINDOW);
				m_fAttachToMainWindow=
					DlgCheckBox_IsChecked(hDlg,IDC_PANELOPTIONS_ATTACHTOMAINWINDOW);
				m_Opacity=::GetDlgItemInt(hDlg,IDC_PANELOPTIONS_OPACITY_EDIT,NULL,TRUE);
				Panel.Frame.SetPanelOpacity(m_Opacity*255/100);

				bool fFontChanged=!CompareLogFont(&m_Font,&m_CurSettingFont);
				if (fFontChanged) {
					m_Font=m_CurSettingFont;
					Panel.Form.SetTabFont(&m_Font);
					Panel.Form.SetPageFont(&m_Font);
				}

				bool fChangeCaptionFont=false;
				bool fSpecCaptionFont=DlgCheckBox_IsChecked(hDlg,IDC_PANELOPTIONS_SPECCAPTIONFONT);
				if (m_fSpecCaptionFont!=fSpecCaptionFont) {
					m_fSpecCaptionFont=fSpecCaptionFont;
					fChangeCaptionFont=true;
				}
				if (!CompareLogFont(&m_CaptionFont,&m_CurSettingCaptionFont)) {
					m_CaptionFont=m_CurSettingCaptionFont;
					if (m_fSpecCaptionFont)
						fChangeCaptionFont=true;
				} else if (m_fSpecCaptionFont && fFontChanged) {
					fChangeCaptionFont=true;
				}
				if (fChangeCaptionFont) {
					CPanelForm::CPage *pCaptionPanel=Panel.Form.GetPageByID(PANEL_ID_CAPTION);
					if (pCaptionPanel!=NULL)
						pCaptionPanel->SetFont(m_fSpecCaptionFont?
											   &m_CaptionFont:&m_Font);
				}

				const int ItemCount=m_ItemListView.GetItemCount();
				m_ItemList.clear();
				m_ItemList.resize(ItemCount);
				for (int i=0;i<ItemCount;i++) {
					const PanelItemInfo &ItemInfo=m_AvailItemList[m_ItemListView.GetItemParam(i)];
					m_ItemList[i].ID=ItemInfo.ID;
					m_ItemList[i].fVisible=m_ItemListView.IsItemChecked(i);
				}
				ApplyItemList(&Panel.Form);

				int InitialTab=(int)DlgComboBox_GetCurSel(hDlg,IDC_PANELOPTIONS_FIRSTTAB);
				if (InitialTab==0) {
					m_InitialTab.clear();
				} else if (InitialTab>0) {
					m_InitialTab=m_AvailItemList[InitialTab-1].ID;
				}

				int TabStyleSel=(int)DlgComboBox_GetCurSel(hDlg,IDC_PANELOPTIONS_TABSTYLE);
				if (TabStyleSel>=0) {
					m_TabStyle=static_cast<CPanelForm::TabStyle>(TabStyleSel);
					Panel.Form.SetTabStyle(m_TabStyle);
				}

				m_fTabTooltip=
					DlgCheckBox_IsChecked(hDlg,IDC_PANELOPTIONS_TABTOOLTIP);
				Panel.Form.EnableTooltip(m_fTabTooltip);

				m_fChanged=true;
			}
			break;

		case LVN_ITEMCHANGED:
			UpdateItemListControlsState();
			return TRUE;
		}
		break;

	case WM_DESTROY:
		m_ItemListView.Detach();
		return TRUE;
	}

	return FALSE;
}