基于gh0st的远程控制器
实现了终端管理、进程管理、窗口管理、桌面管理、文件管理、语音管理、视频管理、服务管理、注册表管理等功能。
This commit is contained in:
138
server/2015Remote/TrueColorToolBar.cpp
Normal file
138
server/2015Remote/TrueColorToolBar.cpp
Normal file
@@ -0,0 +1,138 @@
|
||||
/***=========================================================================
|
||||
==== ====
|
||||
==== D C U t i l i t y ====
|
||||
==== ====
|
||||
=============================================================================
|
||||
==== ====
|
||||
==== File name : TrueColorToolBar.cpp ====
|
||||
==== Project name : Tester ====
|
||||
==== Project number : --- ====
|
||||
==== Creation date : 13/1/2003 ====
|
||||
==== Author(s) : Dany Cantin ====
|
||||
==== ====
|
||||
==== Copyright ?DCUtility 2003 ====
|
||||
==== ====
|
||||
=============================================================================
|
||||
===========================================================================*/
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "TrueColorToolBar.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CTrueColorToolBar
|
||||
|
||||
CTrueColorToolBar::CTrueColorToolBar()
|
||||
{
|
||||
m_bDropDown = FALSE;
|
||||
}
|
||||
|
||||
CTrueColorToolBar::~CTrueColorToolBar()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CTrueColorToolBar, CToolBar)
|
||||
ON_NOTIFY_REFLECT(TBN_DROPDOWN, OnToolbarDropDown)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CTrueColorToolBar message handlers
|
||||
BOOL CTrueColorToolBar::LoadTrueColorToolBar(int nBtnWidth,
|
||||
UINT uToolBar,
|
||||
UINT uToolBarHot,
|
||||
UINT uToolBarDisabled)
|
||||
{
|
||||
if (!SetTrueColorToolBar(TB_SETIMAGELIST, uToolBar, nBtnWidth))
|
||||
return FALSE;
|
||||
|
||||
if (uToolBarHot) {
|
||||
if (!SetTrueColorToolBar(TB_SETHOTIMAGELIST, uToolBarHot, nBtnWidth))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (uToolBarDisabled) {
|
||||
if (!SetTrueColorToolBar(TB_SETDISABLEDIMAGELIST, uToolBarDisabled, nBtnWidth))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
BOOL CTrueColorToolBar::SetTrueColorToolBar(UINT uToolBarType,
|
||||
UINT uToolBar,
|
||||
int nBtnWidth)
|
||||
{
|
||||
CImageList cImageList;
|
||||
CBitmap cBitmap;
|
||||
BITMAP bmBitmap;
|
||||
|
||||
if (!cBitmap.Attach(LoadImage(AfxGetResourceHandle(), MAKEINTRESOURCE(uToolBar),
|
||||
IMAGE_BITMAP, 0, 0,
|
||||
LR_DEFAULTSIZE|LR_CREATEDIBSECTION)) ||
|
||||
!cBitmap.GetBitmap(&bmBitmap))
|
||||
return FALSE;
|
||||
|
||||
CSize cSize(bmBitmap.bmWidth, bmBitmap.bmHeight);
|
||||
int nNbBtn = cSize.cx/nBtnWidth;
|
||||
RGBTRIPLE* rgb = (RGBTRIPLE*)(bmBitmap.bmBits);
|
||||
COLORREF rgbMask = RGB(rgb[0].rgbtRed, rgb[0].rgbtGreen, rgb[0].rgbtBlue);
|
||||
|
||||
if (!cImageList.Create(nBtnWidth, cSize.cy, ILC_COLOR24|ILC_MASK, nNbBtn, 0))
|
||||
return FALSE;
|
||||
|
||||
if (cImageList.Add(&cBitmap, rgbMask) == -1)
|
||||
return FALSE;
|
||||
|
||||
SendMessage(uToolBarType, 0, (LPARAM)cImageList.m_hImageList);
|
||||
cImageList.Detach();
|
||||
cBitmap.Detach();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CTrueColorToolBar::AddDropDownButton(CWnd* pParent, UINT uButtonID, UINT uMenuID)
|
||||
{
|
||||
if (!m_bDropDown) {
|
||||
GetToolBarCtrl().SendMessage(TB_SETEXTENDEDSTYLE, 0, (LPARAM)TBSTYLE_EX_DRAWDDARROWS);
|
||||
m_bDropDown = TRUE;
|
||||
}
|
||||
|
||||
SetButtonStyle(CommandToIndex(uButtonID), TBSTYLE_DROPDOWN);
|
||||
|
||||
stDropDownInfo DropDownInfo;
|
||||
DropDownInfo.pParent = pParent;
|
||||
DropDownInfo.uButtonID = uButtonID;
|
||||
DropDownInfo.uMenuID = uMenuID;
|
||||
m_lstDropDownButton.Add(DropDownInfo);
|
||||
}
|
||||
|
||||
void CTrueColorToolBar::OnToolbarDropDown(NMHDR * pnmtb, LRESULT *plr)
|
||||
{
|
||||
NMTOOLBARA * pnmtbb=(NMTOOLBARA *)pnmtb;
|
||||
for (int i = 0; i < m_lstDropDownButton.GetSize(); i++) {
|
||||
|
||||
stDropDownInfo DropDownInfo = m_lstDropDownButton.GetAt(i);
|
||||
|
||||
if (DropDownInfo.uButtonID == UINT(pnmtbb->iItem)) {
|
||||
|
||||
CMenu menu;
|
||||
menu.LoadMenu(DropDownInfo.uMenuID);
|
||||
CMenu* pPopup = menu.GetSubMenu(0);
|
||||
|
||||
CRect rc;
|
||||
SendMessage(TB_GETRECT, (WPARAM)pnmtbb->iItem, (LPARAM)&rc);
|
||||
ClientToScreen(&rc);
|
||||
|
||||
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_VERTICAL,
|
||||
rc.left, rc.bottom, DropDownInfo.pParent, &rc);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user