| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- // ControlDlg.cpp : 实现文件
- //
- #include "stdafx.h"
- #include "Control.h"
- #include "ControlDlg.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #endif
- // CControlDlg 对话框
- CControlDlg::CControlDlg(CWnd* pParent /*=NULL*/)
- : CSkinDialog(CControlDlg::IDD, pParent)
- {
- m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- m_bIsInit = false;
- }
- void CControlDlg::DoDataExchange(CDataExchange* pDX)
- {
- CSkinDialog::DoDataExchange(pDX);
- //DDX_Control(pDX,IDC_LISTBAR,m_ListBoxEx);
- }
- BEGIN_MESSAGE_MAP(CControlDlg, CSkinDialog)
- ON_WM_QUERYDRAGICON()
- //}}AFX_MSG_MAP
- ON_WM_LBUTTONDOWN()
- ON_WM_SIZE()
- ON_MESSAGE(WM_ACTIVE_ITEM,OnActiveItem)
- END_MESSAGE_MAP()
- // CControlDlg 消息处理程序
- BOOL CControlDlg::OnInitDialog()
- {
- CSkinDialog::OnInitDialog();
- // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
- // 执行此操作
- SetIcon(m_hIcon, TRUE); // 设置大图标
- SetIcon(m_hIcon, FALSE); // 设置小图标
- m_ImageBack.LoadImage(AfxGetInstanceHandle(),TEXT("BACK_VIEW"));
- m_ImageLogo.LoadImage(AfxGetInstanceHandle(),TEXT("LOGO"));
- HDC hParentDC = GetBackDC();
- CRect rcControl(0,0,0,0);
- m_btClose.Create(NULL,WS_CHILD|WS_VISIBLE,rcControl,this,IDCANCEL);
- m_btClose.SetBackImage(TEXT("Res\\Button\\btn_close_normal.png"),TEXT("Res\\Button\\btn_close_highlight.png"),TEXT("Res\\Button\\btn_close_down.png"),TEXT("Res\\Button\\btn_close_normal.png"));
- m_btClose.SetButtonType(en_PushButton);
- m_btClose.SetParentBack(hParentDC);
- m_btClose.SetSize(39,20);
- m_btMinSize.Create(NULL,WS_CHILD|WS_VISIBLE,rcControl,this,IDCANCEL);
- m_btMinSize.SetBackImage(TEXT("Res\\Button\\btn_mini_normal.png"),TEXT("Res\\Button\\btn_mini_highlight.png"),TEXT("Res\\Button\\btn_mini_down.png"),TEXT("Res\\Button\\btn_mini_normal.png"));
- m_btMinSize.SetButtonType(en_PushButton);
- m_btMinSize.SetParentBack(hParentDC);
- m_btMinSize.SetSize(28,20);
- m_ListBoxEx.Create(WS_CHILD|WS_VISIBLE| LBS_OWNERDRAWVARIABLE|LBS_HASSTRINGS,rcControl,this,IDC_LISTBAR);
- m_ListBoxEx.SetItemHeight(26);
-
- m_ListBoxEx.AddString(TEXT("Button"));
- m_ListBoxEx.AddString(TEXT("Edit"));
- m_ListBoxEx.AddString(TEXT("Combo Box"));
- m_ListBoxEx.AddString(TEXT("List Box"));
- m_ListBoxEx.AddString(TEXT("Scroll Bar"));
- m_ListBoxEx.AddString(TEXT("Slider Control"));
- m_ListBoxEx.AddString(TEXT("Spin Control"));
- m_ListBoxEx.AddString(TEXT("Progress Control"));
- m_ListBoxEx.AddString(TEXT("Hot Key"));
- m_ListBoxEx.AddString(TEXT("List Control"));
- m_ListBoxEx.AddString(TEXT("Tree Control"));
- m_ListBoxEx.AddString(TEXT("Tab Control"));
- m_ListBoxEx.AddString(TEXT("Rich Edit"));
- m_ListBoxEx.AddString(TEXT("IP Address Control"));
- m_ListBoxEx.SetCurSel(0);
- //设置变量
- m_wActiveIndex=0xFF;
- //基本配置
- m_ArrayControl.push_back(&m_ButtonDlg);
- m_ArrayControl.push_back(&m_EditDlg);
- m_ArrayControl.push_back(&m_ComBoxDlg);
- m_ArrayControl.push_back(&m_ListBoxDlg);
- m_ArrayControl.push_back(&m_ScrollDlg);
- m_ArrayControl.push_back(&m_SliderDlg);
- //激活子项
- ActiveOptionItem(0);
- m_bIsInit = true;
- CRect rcClient;
- GetClientRect(&rcClient);
- RectifyControl(rcClient.Width(),rcClient.Height());
- return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
- }
- //当用户拖动最小化窗口时系统调用此函数取得光标
- //显示。
- HCURSOR CControlDlg::OnQueryDragIcon()
- {
- return static_cast<HCURSOR>(m_hIcon);
- }
- void CControlDlg::OnLButtonDown(UINT nFlags, CPoint point)
- {
- PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));
- CSkinDialog::OnLButtonDown(nFlags, point);
- }
- void CControlDlg::OnSize(UINT nType, int cx, int cy)
- {
- CSkinDialog::OnSize(nType, cx, cy);
- if( !m_bIsInit ) return;
- RectifyControl(cx, cy);
- }
- void CControlDlg::RectifyControl( int cx, int cy )
- {
- //变量定义
- const UINT uFlags=SWP_NOACTIVATE|SWP_NOZORDER|SWP_NOCOPYBITS;
- //锁定屏幕
- LockWindowUpdate();
- //移动控件
- HDWP hDwp=BeginDeferWindowPos(32);
- CRect rcButton;
- m_btClose.GetWindowRect(&rcButton);
- DeferWindowPos(hDwp,m_btClose,NULL,cx-rcButton.Width(),0,0,0,uFlags|SWP_NOSIZE);
- DeferWindowPos(hDwp,m_btMinSize,NULL,cx-rcButton.Width()-28,0,0,0,uFlags|SWP_NOSIZE);
- DeferWindowPos(hDwp,m_ListBoxEx,NULL,1,80,130,cy-81,uFlags);
- EndDeferWindowPos(hDwp);
- //重画界面
- Invalidate(FALSE);
- UpdateWindow();
- //解除锁定
- UnlockWindowUpdate();
- }
- LRESULT CControlDlg::OnActiveItem( WPARAM wParam,LPARAM lParam )
- {
- int nItem = int(wParam);
- ActiveOptionItem(nItem);
- return 0L;
- }
- //激活配置
- bool CControlDlg::ActiveOptionItem( WORD wIndex )
- {
- //判断状态
- if (m_wActiveIndex==wIndex)
- {
- m_ArrayControl[m_wActiveIndex]->SetFocus();
- return true;
- }
- if ( wIndex+1 > m_ArrayControl.size() )
- {
- return true;
- }
- //保存旧项
- CDlgControlItem * pControlItem=NULL;
- if (m_wActiveIndex<m_ArrayControl.size()) pControlItem=m_ArrayControl[m_wActiveIndex];
- //创建新项
- m_wActiveIndex=wIndex;
- CRect rcClient,rcItemRect;
- GetWindowRect(&rcClient);
- rcItemRect.left = 131;
- rcItemRect.top = 80;
- rcItemRect.right = rcClient.Width()-1;
- rcItemRect.bottom = rcClient.Height()-1;
- CString strItemText;
- m_ListBoxEx.GetText(m_wActiveIndex,strItemText);
- m_ArrayControl[m_wActiveIndex]->ShowControlItem(rcItemRect,this,strItemText);
- //激活新项
- m_ArrayControl[m_wActiveIndex]->SetFocus();
- if (pControlItem!=NULL) pControlItem->ShowWindow(SW_HIDE);
- return true;
- }
- void CControlDlg::DrawClientArea( CDC*pDC,int nWidth,int nHeight )
- {
- m_ImageBack.Draw(pDC,0,0,nWidth,nHeight,2,86,4,4);
- m_ImageLogo.DrawImage(pDC,10,5,20,20);
- }
|