style: Format source code and support grouping client
This commit is contained in:
@@ -12,16 +12,16 @@
|
||||
IMPLEMENT_DYNAMIC(CServicesDlg, CDialog)
|
||||
|
||||
// ItemData1 <20><>Ҫ<EFBFBD><D2AA>ItemDataͬ<61><CDAC><EFBFBD>ˣ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
typedef struct ItemData1
|
||||
{
|
||||
CString Data[5];
|
||||
CString GetData(int index) const {
|
||||
return this ? Data[index] : "";
|
||||
}
|
||||
typedef struct ItemData1 {
|
||||
CString Data[5];
|
||||
CString GetData(int index) const
|
||||
{
|
||||
return this ? Data[index] : "";
|
||||
}
|
||||
} ItemData1;
|
||||
|
||||
CServicesDlg::CServicesDlg(CWnd* pParent, Server* IOCPServer, CONTEXT_OBJECT *ContextObject)
|
||||
: DialogBase(CServicesDlg::IDD, pParent, IOCPServer, ContextObject, IDI_SERVICE)
|
||||
: DialogBase(CServicesDlg::IDD, pParent, IOCPServer, ContextObject, IDI_SERVICE)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -31,22 +31,22 @@ CServicesDlg::~CServicesDlg()
|
||||
|
||||
void CServicesDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_LIST, m_ControlList);
|
||||
DDX_Control(pDX, IDC_STATIC_COUNT, m_ServicesCount);
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_LIST, m_ControlList);
|
||||
DDX_Control(pDX, IDC_STATIC_COUNT, m_ServicesCount);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CServicesDlg, CDialog)
|
||||
ON_WM_CLOSE()
|
||||
ON_WM_SIZE()
|
||||
ON_COMMAND(ID_SERVICES_AUTO, &CServicesDlg::OnServicesAuto)
|
||||
ON_COMMAND(ID_SERVICES_MANUAL, &CServicesDlg::OnServicesManual)
|
||||
ON_COMMAND(ID_SERVICES_STOP, &CServicesDlg::OnServicesStop)
|
||||
ON_COMMAND(ID_SERVICES_START, &CServicesDlg::OnServicesStart)
|
||||
ON_COMMAND(ID_SERVICES_REFLASH, &CServicesDlg::OnServicesReflash)
|
||||
ON_NOTIFY(NM_RCLICK, IDC_LIST, &CServicesDlg::OnNMRClickList)
|
||||
ON_NOTIFY(HDN_ITEMCLICK, 0, &CServicesDlg::OnHdnItemclickList)
|
||||
ON_WM_CLOSE()
|
||||
ON_WM_SIZE()
|
||||
ON_COMMAND(ID_SERVICES_AUTO, &CServicesDlg::OnServicesAuto)
|
||||
ON_COMMAND(ID_SERVICES_MANUAL, &CServicesDlg::OnServicesManual)
|
||||
ON_COMMAND(ID_SERVICES_STOP, &CServicesDlg::OnServicesStop)
|
||||
ON_COMMAND(ID_SERVICES_START, &CServicesDlg::OnServicesStart)
|
||||
ON_COMMAND(ID_SERVICES_REFLASH, &CServicesDlg::OnServicesReflash)
|
||||
ON_NOTIFY(NM_RCLICK, IDC_LIST, &CServicesDlg::OnNMRClickList)
|
||||
ON_NOTIFY(HDN_ITEMCLICK, 0, &CServicesDlg::OnHdnItemclickList)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
@@ -55,220 +55,220 @@ END_MESSAGE_MAP()
|
||||
|
||||
BOOL CServicesDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
SetIcon(m_hIcon, TRUE);
|
||||
SetIcon(m_hIcon, FALSE);
|
||||
CString strString;
|
||||
strString.Format("%s - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",m_IPAddress);
|
||||
SetWindowText(strString);
|
||||
SetIcon(m_hIcon, TRUE);
|
||||
SetIcon(m_hIcon, FALSE);
|
||||
CString strString;
|
||||
strString.Format("%s - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",m_IPAddress);
|
||||
SetWindowText(strString);
|
||||
|
||||
m_ControlList.SetExtendedStyle( LVS_EX_FULLROWSELECT);
|
||||
m_ControlList.InsertColumn(0, "<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 150);
|
||||
m_ControlList.InsertColumn(1, "<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 260);
|
||||
m_ControlList.InsertColumn(2, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 80);
|
||||
m_ControlList.InsertColumn(3, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬", LVCFMT_LEFT, 80);
|
||||
m_ControlList.InsertColumn(4, "<EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD>", LVCFMT_LEFT, 380);
|
||||
m_ControlList.SetExtendedStyle( LVS_EX_FULLROWSELECT);
|
||||
m_ControlList.InsertColumn(0, "<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 150);
|
||||
m_ControlList.InsertColumn(1, "<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 260);
|
||||
m_ControlList.InsertColumn(2, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 80);
|
||||
m_ControlList.InsertColumn(3, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬", LVCFMT_LEFT, 80);
|
||||
m_ControlList.InsertColumn(4, "<EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD>", LVCFMT_LEFT, 380);
|
||||
|
||||
ShowServicesList();
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// <20>쳣: OCX <20><><EFBFBD><EFBFBD>ҳӦ<D2B3><D3A6><EFBFBD><EFBFBD> FALSE
|
||||
ShowServicesList();
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// <20>쳣: OCX <20><><EFBFBD><EFBFBD>ҳӦ<D2B3><D3A6><EFBFBD><EFBFBD> FALSE
|
||||
}
|
||||
|
||||
int CServicesDlg::ShowServicesList(void)
|
||||
{
|
||||
Buffer tmp = m_ContextObject->InDeCompressedBuffer.GetMyBuffer(1);
|
||||
char *szBuffer = tmp.c_str();
|
||||
char *szDisplayName;
|
||||
char *szServiceName;
|
||||
char *szRunWay;
|
||||
char *szAutoRun;
|
||||
char *szFilePath;
|
||||
DWORD dwOffset = 0;
|
||||
DeleteAllItems();
|
||||
Buffer tmp = m_ContextObject->InDeCompressedBuffer.GetMyBuffer(1);
|
||||
char *szBuffer = tmp.c_str();
|
||||
char *szDisplayName;
|
||||
char *szServiceName;
|
||||
char *szRunWay;
|
||||
char *szAutoRun;
|
||||
char *szFilePath;
|
||||
DWORD dwOffset = 0;
|
||||
DeleteAllItems();
|
||||
|
||||
int i = 0;
|
||||
for (i = 0; dwOffset < m_ContextObject->InDeCompressedBuffer.GetBufferLength() - 1; ++i)
|
||||
{
|
||||
szDisplayName = szBuffer + dwOffset;
|
||||
szServiceName = szDisplayName + lstrlen(szDisplayName) +1;
|
||||
szFilePath= szServiceName + lstrlen(szServiceName) +1;
|
||||
szRunWay = szFilePath + lstrlen(szFilePath) + 1;
|
||||
szAutoRun = szRunWay + lstrlen(szRunWay) + 1;
|
||||
int i = 0;
|
||||
for (i = 0; dwOffset < m_ContextObject->InDeCompressedBuffer.GetBufferLength() - 1; ++i) {
|
||||
szDisplayName = szBuffer + dwOffset;
|
||||
szServiceName = szDisplayName + lstrlen(szDisplayName) +1;
|
||||
szFilePath= szServiceName + lstrlen(szServiceName) +1;
|
||||
szRunWay = szFilePath + lstrlen(szFilePath) + 1;
|
||||
szAutoRun = szRunWay + lstrlen(szRunWay) + 1;
|
||||
|
||||
m_ControlList.InsertItem(i, szServiceName);
|
||||
m_ControlList.SetItemText(i, 1, szDisplayName);
|
||||
m_ControlList.SetItemText(i, 2, szAutoRun);
|
||||
m_ControlList.SetItemText(i, 3, szRunWay);
|
||||
m_ControlList.SetItemText(i, 4, szFilePath );
|
||||
auto data = new ItemData1{ szServiceName, szDisplayName, szAutoRun, szRunWay, szFilePath };
|
||||
m_ControlList.SetItemData(i, (DWORD_PTR)data);
|
||||
dwOffset += lstrlen(szDisplayName) + lstrlen(szServiceName) + lstrlen(szFilePath) + lstrlen(szRunWay)
|
||||
+ lstrlen(szAutoRun) +5;
|
||||
}
|
||||
m_ControlList.InsertItem(i, szServiceName);
|
||||
m_ControlList.SetItemText(i, 1, szDisplayName);
|
||||
m_ControlList.SetItemText(i, 2, szAutoRun);
|
||||
m_ControlList.SetItemText(i, 3, szRunWay);
|
||||
m_ControlList.SetItemText(i, 4, szFilePath );
|
||||
auto data = new ItemData1{ szServiceName, szDisplayName, szAutoRun, szRunWay, szFilePath };
|
||||
m_ControlList.SetItemData(i, (DWORD_PTR)data);
|
||||
dwOffset += lstrlen(szDisplayName) + lstrlen(szServiceName) + lstrlen(szFilePath) + lstrlen(szRunWay)
|
||||
+ lstrlen(szAutoRun) +5;
|
||||
}
|
||||
|
||||
CString strTemp;
|
||||
strTemp.Format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d",i);
|
||||
CString strTemp;
|
||||
strTemp.Format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d",i);
|
||||
|
||||
m_ServicesCount.SetWindowText(strTemp);
|
||||
m_ServicesCount.SetWindowText(strTemp);
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CServicesDlg::OnClose()
|
||||
{
|
||||
CancelIO();
|
||||
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (IsProcessing()) {
|
||||
ShowWindow(SW_HIDE);
|
||||
return;
|
||||
}
|
||||
CancelIO();
|
||||
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (IsProcessing()) {
|
||||
ShowWindow(SW_HIDE);
|
||||
return;
|
||||
}
|
||||
|
||||
DeleteAllItems();
|
||||
DeleteAllItems();
|
||||
|
||||
DialogBase::OnClose();
|
||||
DialogBase::OnClose();
|
||||
}
|
||||
|
||||
|
||||
void CServicesDlg::OnServicesAuto()
|
||||
{
|
||||
ServicesConfig(3);
|
||||
ServicesConfig(3);
|
||||
}
|
||||
|
||||
|
||||
void CServicesDlg::OnServicesManual()
|
||||
{
|
||||
ServicesConfig(4);
|
||||
ServicesConfig(4);
|
||||
}
|
||||
|
||||
|
||||
void CServicesDlg::OnServicesStop()
|
||||
{
|
||||
ServicesConfig(2);
|
||||
ServicesConfig(2);
|
||||
}
|
||||
|
||||
|
||||
void CServicesDlg::OnServicesStart()
|
||||
{
|
||||
ServicesConfig(1);
|
||||
ServicesConfig(1);
|
||||
}
|
||||
|
||||
|
||||
void CServicesDlg::OnServicesReflash()
|
||||
{
|
||||
BYTE bToken = COMMAND_SERVICELIST; //ˢ<><CBA2>
|
||||
m_ContextObject->Send2Client(&bToken, 1);
|
||||
BYTE bToken = COMMAND_SERVICELIST; //ˢ<><CBA2>
|
||||
m_ContextObject->Send2Client(&bToken, 1);
|
||||
}
|
||||
|
||||
// <20>ͷ<EFBFBD><CDB7><EFBFBD>Դ<EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void CServicesDlg::DeleteAllItems() {
|
||||
for (int i = 0; i < m_ControlList.GetItemCount(); i++)
|
||||
{
|
||||
auto data = (ItemData1*)m_ControlList.GetItemData(i);
|
||||
if (NULL != data) {
|
||||
delete data;
|
||||
}
|
||||
}
|
||||
m_ControlList.DeleteAllItems();
|
||||
void CServicesDlg::DeleteAllItems()
|
||||
{
|
||||
for (int i = 0; i < m_ControlList.GetItemCount(); i++) {
|
||||
auto data = (ItemData1*)m_ControlList.GetItemData(i);
|
||||
if (NULL != data) {
|
||||
delete data;
|
||||
}
|
||||
}
|
||||
m_ControlList.DeleteAllItems();
|
||||
}
|
||||
|
||||
int CALLBACK CServicesDlg::CompareFunction(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) {
|
||||
auto* pSortInfo = reinterpret_cast<std::pair<int, bool>*>(lParamSort);
|
||||
int nColumn = pSortInfo->first;
|
||||
bool bAscending = pSortInfo->second;
|
||||
int CALLBACK CServicesDlg::CompareFunction(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
|
||||
{
|
||||
auto* pSortInfo = reinterpret_cast<std::pair<int, bool>*>(lParamSort);
|
||||
int nColumn = pSortInfo->first;
|
||||
bool bAscending = pSortInfo->second;
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1>ֵ
|
||||
ItemData1* context1 = (ItemData1*)lParam1;
|
||||
ItemData1* context2 = (ItemData1*)lParam2;
|
||||
CString s1 = context1->GetData(nColumn);
|
||||
CString s2 = context2->GetData(nColumn);
|
||||
// <20><>ȡ<EFBFBD><C8A1>ֵ
|
||||
ItemData1* context1 = (ItemData1*)lParam1;
|
||||
ItemData1* context2 = (ItemData1*)lParam2;
|
||||
CString s1 = context1->GetData(nColumn);
|
||||
CString s2 = context2->GetData(nColumn);
|
||||
|
||||
int result = s1 > s2 ? 1 : -1;
|
||||
return bAscending ? result : -result;
|
||||
int result = s1 > s2 ? 1 : -1;
|
||||
return bAscending ? result : -result;
|
||||
}
|
||||
|
||||
void CServicesDlg::SortByColumn(int nColumn) {
|
||||
static int m_nSortColumn = 0;
|
||||
static bool m_bSortAscending = false;
|
||||
if (nColumn == m_nSortColumn) {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬһ<CDAC>У<EFBFBD><D0A3>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
|
||||
m_bSortAscending = !m_bSortAscending;
|
||||
}
|
||||
else {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
||||
m_nSortColumn = nColumn;
|
||||
m_bSortAscending = true;
|
||||
}
|
||||
void CServicesDlg::SortByColumn(int nColumn)
|
||||
{
|
||||
static int m_nSortColumn = 0;
|
||||
static bool m_bSortAscending = false;
|
||||
if (nColumn == m_nSortColumn) {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬһ<CDAC>У<EFBFBD><D0A3>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
|
||||
m_bSortAscending = !m_bSortAscending;
|
||||
} else {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
||||
m_nSortColumn = nColumn;
|
||||
m_bSortAscending = true;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
std::pair<int, bool> sortInfo(m_nSortColumn, m_bSortAscending);
|
||||
m_ControlList.SortItems(CompareFunction, reinterpret_cast<LPARAM>(&sortInfo));
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
std::pair<int, bool> sortInfo(m_nSortColumn, m_bSortAscending);
|
||||
m_ControlList.SortItems(CompareFunction, reinterpret_cast<LPARAM>(&sortInfo));
|
||||
}
|
||||
|
||||
void CServicesDlg::OnHdnItemclickList(NMHDR* pNMHDR, LRESULT* pResult) {
|
||||
LPNMHEADER pNMHeader = reinterpret_cast<LPNMHEADER>(pNMHDR);
|
||||
int nColumn = pNMHeader->iItem; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SortByColumn(nColumn); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*pResult = 0;
|
||||
void CServicesDlg::OnHdnItemclickList(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
LPNMHEADER pNMHeader = reinterpret_cast<LPNMHEADER>(pNMHDR);
|
||||
int nColumn = pNMHeader->iItem; // <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SortByColumn(nColumn); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CServicesDlg::OnNMRClickList(NMHDR *pNMHDR, LRESULT *pResult)
|
||||
{
|
||||
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
|
||||
|
||||
CMenu Menu;
|
||||
Menu.LoadMenu(IDR_MENU_SERVICES);
|
||||
CMenu *SubMenu=Menu.GetSubMenu(0);
|
||||
CPoint Point;
|
||||
GetCursorPos(&Point);
|
||||
SubMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,Point.x,Point.y,this);
|
||||
*pResult = 0;
|
||||
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
|
||||
|
||||
CMenu Menu;
|
||||
Menu.LoadMenu(IDR_MENU_SERVICES);
|
||||
CMenu *SubMenu=Menu.GetSubMenu(0);
|
||||
CPoint Point;
|
||||
GetCursorPos(&Point);
|
||||
SubMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,Point.x,Point.y,this);
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
|
||||
void CServicesDlg::OnReceiveComplete(void)
|
||||
{
|
||||
switch (m_ContextObject->InDeCompressedBuffer.GetBYTE(0))
|
||||
{
|
||||
case TOKEN_SERVERLIST:
|
||||
ShowServicesList();
|
||||
break;
|
||||
default:
|
||||
// <20><><EFBFBD>䷢<EFBFBD><E4B7A2><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
||||
break;
|
||||
}
|
||||
switch (m_ContextObject->InDeCompressedBuffer.GetBYTE(0)) {
|
||||
case TOKEN_SERVERLIST:
|
||||
ShowServicesList();
|
||||
break;
|
||||
default:
|
||||
// <20><><EFBFBD>䷢<EFBFBD><E4B7A2><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CServicesDlg::ServicesConfig(BYTE bCmd)
|
||||
{
|
||||
DWORD dwOffset = 2;
|
||||
POSITION Pos = m_ControlList.GetFirstSelectedItemPosition();
|
||||
int iItem = m_ControlList.GetNextSelectedItem(Pos);
|
||||
DWORD dwOffset = 2;
|
||||
POSITION Pos = m_ControlList.GetFirstSelectedItemPosition();
|
||||
int iItem = m_ControlList.GetNextSelectedItem(Pos);
|
||||
|
||||
CString strServicesName = m_ControlList.GetItemText(iItem, 0 );
|
||||
char* szServiceName = strServicesName.GetBuffer(0);
|
||||
LPBYTE szBuffer = (LPBYTE)LocalAlloc(LPTR, 3 + lstrlen(szServiceName)); //[][][]\0
|
||||
szBuffer[0] = COMMAND_SERVICECONFIG;
|
||||
szBuffer[1] = bCmd;
|
||||
CString strServicesName = m_ControlList.GetItemText(iItem, 0 );
|
||||
char* szServiceName = strServicesName.GetBuffer(0);
|
||||
LPBYTE szBuffer = (LPBYTE)LocalAlloc(LPTR, 3 + lstrlen(szServiceName)); //[][][]\0
|
||||
szBuffer[0] = COMMAND_SERVICECONFIG;
|
||||
szBuffer[1] = bCmd;
|
||||
|
||||
|
||||
memcpy(szBuffer + dwOffset, szServiceName, lstrlen(szServiceName)+1);
|
||||
memcpy(szBuffer + dwOffset, szServiceName, lstrlen(szServiceName)+1);
|
||||
|
||||
m_ContextObject->Send2Client(szBuffer, LocalSize(szBuffer));
|
||||
LocalFree(szBuffer);
|
||||
m_ContextObject->Send2Client(szBuffer, LocalSize(szBuffer));
|
||||
LocalFree(szBuffer);
|
||||
}
|
||||
|
||||
void CServicesDlg::OnSize(UINT nType, int cx, int cy)
|
||||
{
|
||||
CDialog::OnSize(nType, cx, cy);
|
||||
CDialog::OnSize(nType, cx, cy);
|
||||
|
||||
if (!m_ControlList.GetSafeHwnd()) return; // ȷ<><C8B7><EFBFBD>ؼ<EFBFBD><D8BC>Ѵ<EFBFBD><D1B4><EFBFBD>
|
||||
if (!m_ControlList.GetSafeHwnd()) return; // ȷ<><C8B7><EFBFBD>ؼ<EFBFBD><D8BC>Ѵ<EFBFBD><D1B4><EFBFBD>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>úʹ<C3BA>С
|
||||
CRect rc;
|
||||
m_ControlList.GetWindowRect(&rc);
|
||||
ScreenToClient(&rc);
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>úʹ<C3BA>С
|
||||
CRect rc;
|
||||
m_ControlList.GetWindowRect(&rc);
|
||||
ScreenToClient(&rc);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿؼ<C3BF><D8BC><EFBFBD>С
|
||||
m_ControlList.MoveWindow(0, 0, cx, cy, TRUE);
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿؼ<C3BF><D8BC><EFBFBD>С
|
||||
m_ControlList.MoveWindow(0, 0, cx, cy, TRUE);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user