📄 mfcdlg.cpp
字号:
void CMFCDlg::OnActiveFuc()
{
// TODO: Add your command handler code here
CString TIP;
SOCKET sock = FindSocket(&TIP);
if ( sock == INVALID_SOCKET )
{
int index = m_List.GetNextItem(-1,LVNI_SELECTED);
// index = index - 1;
m_List.DeleteItem(index);
AfxMessageBox("本服务端可能已经下线");
return;
}
if ( FindActiveWindow(CurID) )
return;
if ( /*TestSocket (sock) &&*/StartService(sock) )
{
CControlDlg *dlgAbout = new CControlDlg;
dlgAbout->sock = sock;
dlgAbout->strCKIP = TIP;
dlgAbout->sid = CurID;
dlgAbout ->Create(IDD_DIALOG_ACT,this);
dlgAbout->ShowWindow(SW_SHOW);
AddToActiveList(CurID,dlgAbout);
}
else
{
int index = m_List.GetNextItem(-1,LVNI_SELECTED);
m_List.DeleteItem(index);
AfxMessageBox("本服务端可能已经下线");
}
/*
GLOBALHANDLE h = GlobalAlloc (GMEM_MOVEABLE | GMEM_ZEROINIT | GMEM_SHARE, 10);
char* p =(char*) GlobalLock ( h );
memcpy(p,"111111",6);
dlgAbout->m_Output.SetHandle(h);
memcpy(p,"\r\rkkkkkkk",6);
p[0] = 0x0D;
p[1] = 0x00;
dlgAbout->m_Output.SetHandle(h);
GlobalUnlock(h); */
/*
dlgAbout->m_Output.Paste();
GLOBALHANDLE h = dlgAbout->m_Output.GetHandle();
char* p =(char*) GlobalLock ( h );
AfxMessageBox(p);
*/
// Sleep(5000);
// dlgAbout->m_Output.Paste();
// dlgAbout->m_Output.SetReadOnly();
}
SOCKET CMFCDlg::FindSocket(CString *str)
{
int curNum = atoi(CurID);
TRACE("\ncurNum = %d",curNum);
if ( ListHead == NULL )
return INVALID_SOCKET;
ListCK* Th = ListHead;
while ( Th )
{
//TRACE("\nListHead -> uID = %d",ListHead -> uID);
if ( Th -> uID == curNum )
{
DWORD dwIP = Th->dwIP;
char* p = inet_ntoa(*(struct in_addr*)&dwIP);
*str = p;
return Th->sock;
}
else Th = Th->Next;
}
return INVALID_SOCKET;
}
BOOL CMFCDlg::StartService(SOCKET sock)
{
int oldopt = 0;
int len = sizeof(int);
int ret = getsockopt (sock,SOL_SOCKET, SO_RCVTIMEO,(char*)&oldopt,&len);
if ( ret == -1 )
return FALSE;
int newopt = 3000;
ret = setsockopt (sock,SOL_SOCKET, SO_RCVTIMEO,(char*)&newopt,len);
if ( ret == -1 )
return FALSE;
ret = send(sock,"Start",5,0);
if ( ret != 5 )
return FALSE;
char buf[64]={0};
ret = recv(sock,buf,64,0);
TRACE("\nRECV = %s",buf);
if ( ret != 6 )
return FALSE;
ret = strcmp(buf,"Master");
if ( ret != 0 )
return FALSE;
ret = setsockopt (sock,SOL_SOCKET, SO_RCVTIMEO,(char*)&oldopt,len);
if ( ret == -1 )
return FALSE;
return TRUE;
}
//在托盘中显示
void CMFCDlg::AddTray()
{
NOTIFYICONDATA nid = {0};
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = GetSafeHwnd();
nid.uID = 1;
nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
nid.uCallbackMessage = WM_ICONNOTIFY;
nid.hIcon =AfxGetApp()->LoadIcon( IDR_MAINFRAME );
strcpy(nid.szTip, "远程控制软件");
Shell_NotifyIcon(NIM_ADD, &nid);
}
//托盘控制的消息--这个消息是自己定义的-----
void CMFCDlg::OnTrayPro(WPARAM uID, LPARAM lEvent)
{
if ( lEvent == WM_LBUTTONDBLCLK )
ShowWindow(SW_SHOWNORMAL);
else if ( lEvent == WM_RBUTTONDOWN )
{
CMenu menu;
menu.LoadMenu ( IDR_MENU );
CMenu* pMenu=menu.GetSubMenu(0);
CPoint pos;
GetCursorPos(&pos);
pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,pos.x,pos.y,AfxGetMainWnd());
}
}
void CMFCDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
if ( bQuit == TRUE )
{
PostQuitMessage(0);
}
else
AnimateWindow(GetSafeHwnd(),1000,AW_HIDE|AW_CENTER);
ShowWindow(SW_HIDE);
}
/*
void CMFCDlg::OnDisplayFunc()
{
// TODO: Add your command handler code here
ShowWindow(SW_SHOWNORMAL);
}
void CMFCDlg::OnNDisplayFunc()
{
// TODO: Add your command handler code here
ShowWindow(SW_HIDE);
}
*/
void CMFCDlg::OnQuitFunc()
{
// TODO: Add your command handler code here
bQuit = TRUE;
AnimateWindow(GetSafeHwnd(),1000,AW_HIDE|AW_CENTER);
OnClose();
}
void CMFCDlg::OnRclickList(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int curnum = m_List.GetNextItem(-1,LVNI_SELECTED);
// TRACE("=======%d\n",curnum);
CString Tid = m_List.GetItemText(curnum,0);
if ( Tid != "" )
{
CurID = Tid;
CMenu menu;
menu.LoadMenu ( IDR_MENU );
CMenu* pMenu=menu.GetSubMenu(1);
CPoint pos;
GetCursorPos(&pos);
pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,pos.x,pos.y,AfxGetMainWnd());
*pResult = 0;
}
}
void CMFCDlg::OnCreate()
{
// TODO: Add your command handler code here
server.DoModal();
}
CAboutDlg about;
void CMFCDlg::OnAboutbox()
{
// TODO: Add your command handler code here
about.DoModal ();
}
/*
void CMFCDlg::DrawTitleBar(CDC *pDC)
{
if (m_hWnd)
{
CBrush Brush(RGB(143,215,108));
CBrush* pOldBrush = pDC->SelectObject(&Brush);
CRect rtWnd, rtTitle, rtButtons;
GetWindowRect(&rtWnd);
//取得标题栏的位置
rtTitle.left = GetSystemMetrics(SM_CXFRAME);
rtTitle.top = GetSystemMetrics(SM_CYFRAME);
rtTitle.right = rtWnd.right - rtWnd.left - GetSystemMetrics(SM_CXFRAME);
rtTitle.bottom = rtTitle.top + GetSystemMetrics(SM_CYSIZE);
CPoint point;
//填充顶部框架
point.x = rtWnd.Width();
point.y = GetSystemMetrics(SM_CYSIZE) + GetSystemMetrics(SM_CYFRAME);
pDC->PatBlt(0, 0, point.x, point.y, PATCOPY);
//填充左侧框架
point.x = GetSystemMetrics(SM_CXFRAME) + 1;
point.y = rtWnd.Height();
pDC->PatBlt(0, 0, point.x, point.y, PATCOPY);
//填充底部框架
point.x = rtWnd.Width();
point.y = GetSystemMetrics(SM_CYFRAME) + 2;
pDC->PatBlt(0, rtWnd.Height()-point.y, point.x, point.y, PATCOPY);
//填充右侧框架
point.x = GetSystemMetrics(SM_CXFRAME) + 1;
point.y = rtWnd.Height();
pDC->PatBlt(rtWnd.Width()-point.x, 0, point.x, point.y, PATCOPY);
//绘制美化线条
//重画图标
m_rtIcon.left = rtWnd.Width() - 135;
m_rtIcon.top = GetSystemMetrics(SM_CYFRAME);
m_rtIcon.right = m_rtIcon.left + 20;
m_rtIcon.bottom = m_rtIcon.top + 19;
::DrawIconEx(pDC->m_hDC, m_rtIcon.left, m_rtIcon.top, m_hIcon,
m_rtIcon.Width(), m_rtIcon.Height(), 0, NULL, DI_NORMAL);
m_rtIcon.OffsetRect(rtWnd.TopLeft());
//准备画XP风格按钮
CBitmap* pBitmap = new CBitmap;
CBitmap* pOldBitmap;
CDC* pDisplayMemDC=new CDC;
pDisplayMemDC->CreateCompatibleDC(pDC);
//重画关闭button
rtButtons.left = rtTitle.right - 19;
rtButtons.top = rtTitle.top;
rtButtons.right = rtButtons.left + 19;
rtButtons.bottom = rtButtons.top + 19;
pBitmap->LoadBitmap(IDB_EXIT_NORMAL);
pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
pDC->BitBlt(rtButtons.left, rtButtons.top, rtButtons.Width(), rtButtons.Height(), pDisplayMemDC, 0, 0, SRCCOPY);
pDisplayMemDC->SelectObject(pOldBitmap);
m_rtButtExit = rtButtons;
m_rtButtExit.OffsetRect(rtWnd.TopLeft());
pBitmap->DeleteObject();
//重画caption
int nOldMode = pDC->SetBkMode(TRANSPARENT);
COLORREF clOldText=pDC->SetTextColor(RGB(208, 155, 47));
pDC->SelectStockObject(SYSTEM_FIXED_FONT);
rtTitle.left += 2;
rtTitle.top += GetSystemMetrics(SM_CYSIZE);
rtTitle.bottom = rtTitle.top+1;
CString m_strTitle;
GetWindowText(m_strTitle);
pDC->DrawText(m_strTitle, &rtTitle, DT_LEFT);
pDC->SetBkMode(nOldMode);
pDC->SetTextColor(clOldText);
ReleaseDC(pDisplayMemDC);
delete pDisplayMemDC;
delete pBitmap;
}
}
*/
/*
LRESULT CMFCDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
LRESULT lrst=CDialog::DefWindowProc(message, wParam, lParam);
if (!::IsWindow(m_hWnd))
return lrst;
if (message==WM_MOVE||message==WM_PAINT||message==WM_NCPAINT||message==WM_NCACTIVATE ||message == WM_NOTIFY)
{
CDC* pWinDC = GetWindowDC();
if (pWinDC)
DrawTitleBar(pWinDC);
ReleaseDC(pWinDC);
}
return lrst;
//return CDialog::DefWindowProc(message, wParam, lParam);
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -