📄 deskoutdlg.cpp
字号:
// FloatBar.cpp : 实现文件
//
#include "stdafx.h"
#include "DeskOutDlg.h"
#include "FloatBar.h"
#include ".\floatbar.h"
#define IDC_BUTTON 1001
#define IDC_BUTTON_MAX 2000
// CFloatBar 对话框
IMPLEMENT_DYNAMIC(CDeskOutDlg, CDialog)
CDeskOutDlg::CDeskOutDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDeskOutDlg::IDD, pParent)
{
rcItem.nItemHeight = 30;
rcItem.nItemWidth = 100;
}
CDeskOutDlg::~CDeskOutDlg()
{
INT_PTR nCount = m_ptrArray.GetSize();
for(int i=0; i<nCount; i++)
{
DESK* pDesk = (DESK*)m_ptrArray.GetAt(i);
if(pDesk!=NULL)
{
delete pDesk;
pDesk = NULL;
}
}
}
void CDeskOutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BOOL CDeskOutDlg::AddDesk(CString strItem)
{
static int nDesk;
DESK* pDesk = new DESK;
pDesk->bIsShow = FALSE;
pDesk->wndHeader.Create(strItem, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CRect(0,0,rcItem.nItemWidth,rcItem.nItemHeight), this, IDC_BUTTON+nDesk);
pDesk->wndHeader.SetShade(CShadeButtonST::SHS_HARDBUMP);
pDesk->wndCleint.Create(strItem, WS_CHILD | WS_BORDER | SS_BLACKRECT, CRect(0,0,30,100), this, IDC_BUTTON+nDesk);
m_ptrArray.Add(pDesk);
nDesk++;
return TRUE;
}
BEGIN_MESSAGE_MAP(CDeskOutDlg, CDialog)
ON_WM_CREATE()
ON_WM_SIZE()
ON_CONTROL_RANGE( BN_CLICKED, IDC_BUTTON, IDC_BUTTON_MAX,CDeskOutDlg::OnBnCliceked)
END_MESSAGE_MAP()
// CFloatBar 消息处理程序
int CDeskOutDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
return 0;
}
void CDeskOutDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
CRect rcClient;
GetClientRect(rcClient);
rcItem.nItemWidth = rcClient.Width();
INT_PTR nCount = m_ptrArray.GetSize();
CRect itemHead(0,-rcItem.nItemHeight, rcItem.nItemWidth,0);
CRect itemClient(0,0, rcItem.nItemWidth,0);
for(int i=0; i<nCount; i++)
{
DESK* pDesk = (DESK*)m_ptrArray.GetAt(i);
if(pDesk != NULL)
{
if(pDesk->bIsShow)
{
itemHead.top += rcItem.nItemHeight;
itemHead.bottom = itemHead.top + rcItem.nItemHeight;
pDesk->wndHeader.MoveWindow(&itemHead);
itemClient.top = itemHead.bottom;
itemClient.bottom = itemClient.top + rcClient.Height()-nCount*rcItem.nItemHeight;
pDesk->wndCleint.MoveWindow(itemClient);
pDesk->wndCleint.ShowWindow(TRUE);
itemHead.top = itemClient.bottom-rcItem.nItemHeight;
itemHead.bottom = itemHead.top + rcItem.nItemHeight;
}
else
{
itemHead.top += rcItem.nItemHeight;
itemHead.bottom = itemHead.top + rcItem.nItemHeight;
pDesk->wndHeader.MoveWindow(&itemHead);
itemClient.top = itemHead.bottom;
itemClient.bottom = itemClient.top;
pDesk->wndCleint.MoveWindow(&itemClient);
pDesk->wndCleint.ShowWindow(TRUE);
}
pDesk->wndHeader.SetShade(CShadeButtonST::SHS_HARDBUMP);
}
}
}
void CDeskOutDlg::OnBnCliceked( UINT nID )
{
INT_PTR nCount = m_ptrArray.GetSize();
DESK* pDesk = NULL;
for(int i=0; i<nCount; i++)
{
pDesk = (DESK*)m_ptrArray.GetAt(i);
pDesk->bIsShow = FALSE;
}
pDesk = (DESK*)m_ptrArray.GetAt(nID-1001);
pDesk->bIsShow = TRUE;
SendMessage(WM_SIZE, 0, 0);
}
BOOL CDeskOutDlg::SetCurSel(int nDesk)
{
INT_PTR nCount = m_ptrArray.GetSize();
if(nDesk<0)
{
DESK* pDesk = (DESK*)m_ptrArray.GetAt(0);
pDesk->bIsShow = TRUE;
}
else if(nDesk>=nCount)
{
DESK* pDesk = (DESK*)m_ptrArray.GetAt(nCount-1);
pDesk->bIsShow = TRUE;
}
else
{
DESK* pDesk = (DESK*)m_ptrArray.GetAt(nDesk);
pDesk->bIsShow = TRUE;
}
return TRUE;
}
DESK* CDeskOutDlg::GetDesk(int nDesk)
{
INT_PTR nCount = m_ptrArray.GetSize();
DESK* pDesk = NULL;
if(nDesk<0)
{
pDesk = NULL;
}
else if(nDesk>=nCount)
{
pDesk = NULL;
}
else
{
pDesk = (DESK*)m_ptrArray.GetAt(nDesk);
}
return pDesk;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -