亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mainfrm.cpp

?? 仿QQ的聊天程序vc++/mfc來學(xué)習(xí)的簡易聊天室代碼功能較全
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "msg.h"
#include "Client.h"
#include "lookdlg.h"
#include "talkdlg.h"
#include "frienddetail.h"
#include "modifypidlg.h"
#include "searchdlg.h"
#include "SendToalldlg.h"
#include "multisenddlg.h"
#include "ShowOnlinedlg.h"
#include "SendBroadcastDlg.h"
#include "ShowAddMsgDlg.h"
#include "ShowBroadcastDlg.h"
#include "addfrienddlg.h"
#include "USkin.h"

#include "MainFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_WM_SETFOCUS()
	ON_WM_GETMINMAXINFO()
	ON_WM_CLOSE()
	ON_WM_TIMER()
	ON_COMMAND(ID_SEND_MESSAGE, OnSendMessage)
	ON_UPDATE_COMMAND_UI(ID_SEND_MESSAGE, OnUpdateSendMessage)
	ON_COMMAND(ID_FRIEND_DETAIL, OnFriendDetail)
	ON_COMMAND(ID_OFFLINE, OnOffline)
	ON_COMMAND(ID_ONHIDE, OnOnhide)
	ON_COMMAND(ID_ONLINE, OnOnline)
	ON_COMMAND(ID_SEARCH, OnSearch)
	ON_COMMAND(ID_PERSONINFO_SETUP, OnPersoninfoSetup)
	ON_COMMAND(ID_SENDTO_ALL, OnSendtoAll)
	ON_COMMAND(ID_SHOW_ONLINE, OnShowOnline)
	ON_COMMAND(ID_SEND_BROADCAST, OnSendBroadcast)
	ON_COMMAND(ID_ADD_FRIEND, OnAddFriend)
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_MY_TRAY_NOTIFICATION,OnTrayNotification)
	ON_MESSAGE(WM_HOTKEY,OnHotKey)
	ON_MESSAGE(WM_OUTBAR_NOTIFY, OnOutbarNotify)
	ON_MESSAGE(WM_RECIEVE_MSG,ProcRecv)
	ON_MESSAGE(WM_ADDFRIEND_REFRESH,OnAddFriendRefresh)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	m_pSearch=NULL;	
	m_pModifyPI=NULL;
	m_pMultiSend=NULL;
	m_pSendToAll=NULL;		
	m_pShowOnline=NULL;
	m_pSendBroad=NULL;	
	m_pShowNotice=NULL;
	m_pAddFriendDlg=NULL;
	m_bRecvTotal=FALSE;
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;	
		
	DWORD dwf = CGfxOutBarCtrl::fDragItems|CGfxOutBarCtrl::fEditGroups|CGfxOutBarCtrl::fEditItems|CGfxOutBarCtrl::fRemoveGroups|
		CGfxOutBarCtrl::fRemoveItems|CGfxOutBarCtrl::fAddGroups|CGfxOutBarCtrl::fAnimation;	
		
	m_wndBar.Create(WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this,AFX_IDW_PANE_FIRST, dwf);
	m_wndBar.SetOwner(this);	
	
	m_wndBar.SetImageList(&GetApp()->m_imaLarge, CGfxOutBarCtrl::fLargeIcon);
	m_wndBar.SetImageList(&GetApp()->m_imaSmall, CGfxOutBarCtrl::fSmallIcon);
	m_wndBar.AddFolder("我的好友", 0);	
	m_wndBar.AddFolder("陌生人", 1);
	m_wndBar.AddFolder("黑名單", 2);
	
	UserInfo* pInfo;
	CString str;
	for(int i=1;i<GetApp()->m_aUserInfo.GetSize();i++)
	{
		pInfo=GetApp()->m_aUserInfo.GetAt(i);
		if(pInfo->HaveDetail)
			m_wndBar.AddItem(0,pInfo->Name,pInfo->PhotoId,pInfo->Id);
		else
		{
			str.Format("%d",pInfo->Id);
			m_wndBar.AddItem(0,str,0,pInfo->Id);
		}
	}
	m_wndBar.SetSelFolder(0);

	BOOL result1=::RegisterHotKey(m_hWnd,1001,MOD_CONTROL|MOD_ALT,'X');
	BOOL result2=::RegisterHotKey(m_hWnd,1002,MOD_CONTROL|MOD_ALT,'x');
	BOOL result3=::RegisterHotKey(m_hWnd,1003,MOD_CONTROL|MOD_ALT,'m');
	BOOL result4=::RegisterHotKey(m_hWnd,1004,MOD_CONTROL|MOD_ALT,'M');
	if(!result1&&!result2&&!result3&&!result4)
	{
		//AfxMessageBox(IDS_HOTKEY_REG_FAIL);
	}	

	m_TrayIcon.SetNotificationWnd(this,WM_MY_TRAY_NOTIFICATION);
	str=GetApp()->m_strCurUserDir;
	str=str.Left(str.GetLength()-1);
	m_TrayIcon.SetIcon(IDR_OFFLINE,str);	

	str.Format("ID:%d",GetApp()->m_uCurrentUserID);
	SetWindowText(str);
	CMenu* pMenu=GetMenu();
	menu1.Attach(pMenu->GetSubMenu(0)->GetSafeHmenu());
	menu2.Attach(pMenu->GetSubMenu(1)->GetSafeHmenu());
	menu1.LoadToolBarResource(IDR_TOOLBAR1);
	menu2.LoadToolBarResource(IDR_TOOLBAR2);
	menu1.RemapMenu(&menu1);
	menu2.RemapMenu(&menu2);
	
	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	
	cs.dwExStyle|=WS_EX_TOOLWINDOW|WS_EX_TOPMOST;
	cs.lpszClass = AfxRegisterWndClass(0);
	cs.x=650;
	cs.y=50;
	cs.cx=150;
	cs.cy=500;
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnSetFocus(CWnd* pOldWnd)
{
	// forward focus to the view window
	m_wndBar.SetFocus();
}

BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
	// let the view have first crack at the command
	if (m_wndBar.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
		return TRUE;

	// otherwise, do default handling
	return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}


void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
{
	lpMMI->ptMinTrackSize.x = 90;
	lpMMI->ptMaxTrackSize.x=200;
	lpMMI->ptMinTrackSize.y=200;
	CFrameWnd::OnGetMinMaxInfo(lpMMI);
}

LRESULT CMainFrame::OnHotKey(WPARAM wParam,LPARAM lParam)
{
	if (wParam== 1001||wParam==1002)
	{
		ShowWindow(SW_NORMAL); 
		SetForegroundWindow();
		return 1;
	}
	else if(wParam== 1003||wParam==1004)
	{
		SendMessage(WM_SYSCOMMAND,SC_MINIMIZE,0);
		return 1;
	}
	return 0;
}

LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	if(message==WM_SYSCOMMAND)
	{
		if(wParam==SC_MINIMIZE)
		{
			ShowWindow(SW_HIDE);
			return 0;
		}
		else if(wParam==SC_CLOSE)
		{
			ShowWindow(SW_HIDE);
			return 0;
		}
	}
			
	return CFrameWnd::WindowProc(message, wParam, lParam);	
}

LRESULT CMainFrame::OnTrayNotification(WPARAM wp,LPARAM lp)
{
	return m_TrayIcon.OnTrayNotification(wp,lp);
}

void CMainFrame::OnClose() 
{
	::UnregisterHotKey(m_hWnd,1001); 
	::UnregisterHotKey(m_hWnd,1002); 
	::UnregisterHotKey(m_hWnd,1003); 
	::UnregisterHotKey(m_hWnd,1004); 
	CFrameWnd::OnClose();
}

LRESULT CMainFrame::OnOutbarNotify(WPARAM wParam, LPARAM lParam)
{
	switch (wParam)
	{
		case NM_OB_ITEMCLICK:
		// cast the lParam to an integer to get the clicked item
			{
				nGroupFlag=m_wndBar.iSelFolder;				
				nCurSelID = m_wndBar.GetItemData(lParam);
				nCurSelIndex=lParam;
				CMenu menu;
				CGfxPopupMenu cMenu;
				menu.LoadMenu(IDR_POPMENU);
				cMenu.Attach(menu.GetSubMenu(0)->GetSafeHmenu());
				if(nGroupFlag==1)
				{
					cMenu.AppendMenu(MF_STRING,ID_ADD_FRIEND,"加為好友");
				}				
				cMenu.LoadToolBarResource(IDR_TOOLBAR3);
				cMenu.RemapMenu(&cMenu);				
				CPoint mouse;
				GetCursorPos(&mouse);				
				cMenu.TrackPopupMenu(TPM_LEFTALIGN,mouse.x,mouse.y,this);						
			}		
			return 1;
		case NM_OB_ITEMDCLICK:
			{
				nGroupFlag=m_wndBar.iSelFolder;				
				nCurSelID = m_wndBar.GetItemData(lParam);
				nCurSelIndex=lParam;
				SendMessage(WM_COMMAND,ID_SEND_MESSAGE,0);				
			}
			return 1;
		case NM_OB_ONLABELENDEDIT:
		// cast the lParam to an OUTBAR_INFO * struct; it will contain info about the edited item
		// return 1 to do the change and 0 to cancel it
			{
				OUTBAR_INFO * pOI = (OUTBAR_INFO *) lParam;
				//TRACE2("Editing item %d, new text:%s\n", pOI->index, pOI->cText);
			}
		return 1;

		case NM_OB_ONGROUPENDEDIT:
		// cast the lParam to an OUTBAR_INFO * struct; it will contain info about the edited folder
		// return 1 to do the change and 0 to cancel it
			{
				OUTBAR_INFO * pOI = (OUTBAR_INFO *) lParam;
				TRACE2("Editing folder %d, new text:%s\n", pOI->index, pOI->cText);
			}
		return 1;

		case NM_OB_DRAGITEM:
		// cast the lParam to an OUTBAR_INFO * struct; it will contain info about the dragged items
		// return 1 to do the change and 0 to cancel it
			{
				OUTBAR_INFO * pOI = (OUTBAR_INFO *) lParam;
				TRACE2("Drag item %d at position %d\n", pOI->iDragFrom, pOI->iDragTo);
			}
		return 1;
	}
	return 0;
}

LRESULT CMainFrame::ProcRecv(WPARAM wParam,LPARAM lParam)
{
	CData* pData=(CData*)wParam;
	UINT index=pData->index;
	int & iOnlineState=GetApp()->m_bOnlineState;

	switch(index)
	{
	case SEND_MSG_TO_FRIEND:
		{
			//recv from friend or server
			if(iOnlineState==0)break;
			CMsg1 msg;
			CopyDataBuf(&msg,pData);
			if(!msg.LoadFromBuf())
			{
				TRACE0("msg.LoadFromBuf error!\n");
				break;
			}

			int mindex=0;
			SaveMsg* pMsg=new SaveMsg;
			pMsg->type=NORMAL_MSG;
			pMsg->ID=msg.MyId;
			pMsg->Time=msg.Time;
			pMsg->Msg=msg.Msg;

			UserInfo *pInfo=NULL;
			FriendState *pState=NULL;
			if(FindInArray(GetApp()->m_aUserInfo,GetApp()->m_aUserState,msg.MyId,pInfo,pState))
			{
				pState->aMsg.Add(pMsg);			
			}			
			else
			{
				// 陌生人			
				if(FindInArray(GetApp()->m_aStranger,GetApp()->m_aStrangerState,msg.MyId,pInfo,pState))
				{
					pState->aMsg.Add(pMsg);
				}
				else
				{
					pInfo=new UserInfo;					
					pInfo->Id=msg.MyId;
					pInfo->HaveDetail=0;
					pState=new FriendState;					
					pState->IP=msg.tarIP;
					pState->Port=msg.nPort;
					pState->OnlineState=1;
					pState->aMsg.Add(pMsg);
					GetApp()->m_aStranger.Add(pInfo);					
					GetApp()->m_aStrangerState.Add(pState);
					GetApp()->m_aStranger.GetSize();
					CString str;
					str.Format("%d",pInfo->Id);
					m_wndBar.AddItem(1,str,0,pInfo->Id);					
					m_wndBar.Invalidate();
				}
			}
			if(pState->pRecv==NULL)
			{
				pState->pRecv=new CLookDlg;
				pState->pRecv->Create(CLookDlg::IDD,GetDesktopWindow());
			}
			pState->pRecv->PostMessage(WM_RECVMSG,(WPARAM)pInfo,(LPARAM)pState);			
			
			break;
		}
	case SOMEONE_ONHIDE:
		{				
			if(iOnlineState==0)break;

			CNoticeMsg msg;
			CopyDataBuf(&msg,pData);

			if(!msg.LoadFromBuf())break;

			UserInfo *pInfo=NULL;
			FriendState *pState=NULL;
			if(FindInArray(GetApp()->m_aUserInfo,GetApp()->m_aUserState,msg.MyId,pInfo,pState))
			{
				pState->OnlineState=2;
				m_wndBar.SetOnlineImage(msg.MyId,FALSE);
				m_wndBar.Invalidate();
			}			
			break;
		}
	case SOMEONE_ONLINE:
		{
			if(iOnlineState==0)break;

			CNoticeMsg msg;
			CopyDataBuf(&msg,pData);

			if(!msg.LoadFromBuf())break;

			UserInfo *pInfo=NULL;
			FriendState *pState=NULL;
			if(FindInArray(GetApp()->m_aUserInfo,GetApp()->m_aUserState,msg.MyId,pInfo,pState))
			{
				pState->OnlineState=1;
				m_wndBar.SetOnlineImage(msg.MyId);
				m_wndBar.Invalidate();
			}						
			break;
		}
	case SOMEONE_OFFLINE:
		{
			if(iOnlineState==0)break;
			UserInfo *pInfo=NULL;
			FriendState *pState=NULL;
			if(FindInArray(GetApp()->m_aUserInfo,GetApp()->m_aUserState,pData->MyId,pInfo,pState))
			{
				pState->OnlineState=0;				
				m_wndBar.SetOnlineImage(pData->MyId,FALSE);	
				m_wndBar.Invalidate();
			}			
			break;
		}
	case ONLINE_OK:
		{
			if(!GetApp()->m_bOnlineState)
				SetTimer(1,TimerSpanClient,NULL);
			GetApp()->m_bOnlineState=1;
			CString str=GetApp()->m_strCurUserDir;			
			str=str.Left(str.GetLength()-1);
			m_TrayIcon.SetIcon(IDR_ONLINE,str);			
			AfxBeginThread(RequestFriendDetail,0,THREAD_PRIORITY_BELOW_NORMAL);			
			break;
		}
	case ONHIDE_OK:
		{
			if(!GetApp()->m_bOnlineState)
				SetTimer(1,TimerSpanClient,NULL);
			GetApp()->m_bOnlineState=2;
			CString str=GetApp()->m_strCurUserDir;				
			str=str.Left(str.GetLength()-1);
			m_TrayIcon.SetIcon(IDR_ONHIDE,str);
			AfxBeginThread(RequestFriendDetail,0,THREAD_PRIORITY_BELOW_NORMAL);			
			break;
		}
	case ALL_FRIEND_ID:
		{
			if(iOnlineState==0)break;
			CMsg2 msg;
			CopyDataBuf(&msg,pData);
			if(!msg.LoadFromBuf())
				break;			
			
			CString str1;
			for(int i=0;i<msg.aFriendId.GetSize();i++)
			{
				if(FindInArray(GetApp()->m_aUserInfo,msg.aFriendId.GetAt(i))!=-1)
					continue;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精工是国产品牌吗| 欧美成人猛片aaaaaaa| 中文字幕一区在线| thepron国产精品| 亚洲欧美另类小说视频| 欧日韩精品视频| 视频在线观看一区| 亚洲精品一区二区三区影院| 国产精品亚洲а∨天堂免在线| 国产丝袜美腿一区二区三区| 91免费观看在线| 日韩电影一区二区三区四区| 精品国产三级a在线观看| 国产成人日日夜夜| 一区二区三区精密机械公司| 欧美电影在哪看比较好| 久久爱另类一区二区小说| 国产精品伦理一区二区| 欧美午夜精品一区二区三区| 日本不卡视频在线观看| 久久久久久麻豆| 日本丶国产丶欧美色综合| 蜜臀久久久久久久| 国产精品网站导航| 欧美日韩大陆一区二区| 国产精品中文字幕一区二区三区| 亚洲视频中文字幕| 欧美一二三在线| 99在线精品免费| 久久精品国产久精国产爱| 国产精品久久久久久亚洲伦| 欧美日韩卡一卡二| 成人综合婷婷国产精品久久蜜臀| 亚洲电影你懂得| 国产精品久久久久毛片软件| 91精品一区二区三区久久久久久| 丰满少妇在线播放bd日韩电影| 五月天一区二区| 中文字幕在线一区免费| 精品剧情在线观看| 欧美日韩一区二区三区四区五区| 国产中文字幕一区| 肉色丝袜一区二区| 亚洲伦在线观看| 久久久久久免费| 国产精品福利影院| 8v天堂国产在线一区二区| 99精品热视频| 国产高清精品网站| 蜜桃视频第一区免费观看| 亚洲美女免费在线| 国产精品亲子伦对白| 欧美r级在线观看| 欧美精品777| 91国模大尺度私拍在线视频| 成人黄色大片在线观看| 激情都市一区二区| 久久国产精品无码网站| 午夜不卡av免费| 精品日韩一区二区| 在线不卡一区二区| 欧美性一级生活| 日本黄色一区二区| 91香蕉视频mp4| aaa国产一区| www.亚洲激情.com| 不卡区在线中文字幕| 成人性生交大片| 国产精品77777| 国产高清成人在线| 国产99久久久国产精品潘金网站| 国产一区999| 国产精品1024久久| 丰满亚洲少妇av| 不卡区在线中文字幕| 97久久精品人人做人人爽 | 国产午夜一区二区三区| 日韩精品一区二区三区中文不卡| 91精品国产综合久久久久久漫画| 欧美欧美欧美欧美首页| 91精品欧美综合在线观看最新| 欧美日韩一区久久| 日韩一区国产二区欧美三区| 日韩欧美精品在线视频| 欧美不卡视频一区| 久久久精品一品道一区| 国产三区在线成人av| 中文字幕亚洲一区二区va在线| 综合电影一区二区三区| 亚洲乱码日产精品bd| 性做久久久久久久久| 日韩国产欧美在线播放| 久色婷婷小香蕉久久| 国产伦精品一区二区三区免费迷 | 极品少妇xxxx精品少妇偷拍| 国产在线播精品第三| 成人黄色在线看| 在线免费观看不卡av| 91精品国模一区二区三区| www国产成人| 中文字幕中文字幕在线一区| 亚洲在线中文字幕| 美女www一区二区| 成人禁用看黄a在线| 在线国产亚洲欧美| 日韩一级黄色大片| 中文字幕精品一区二区精品绿巨人| 亚洲欧美另类小说| 蜜桃精品在线观看| eeuss鲁一区二区三区| 欧美三级在线播放| 久久免费看少妇高潮| 亚洲精品视频在线观看网站| 美女一区二区久久| 99久久精品国产导航| 91精品国产综合久久精品性色| 欧美精品一区二区三区蜜臀 | 久久这里只有精品6| 亚洲欧美日韩中文播放 | 亚洲最大色网站| 久久精品国产77777蜜臀| av电影一区二区| 欧美一区二区三区四区久久| 国产天堂亚洲国产碰碰| 亚洲国产精品麻豆| 国产91对白在线观看九色| 欧美日韩www| 亚洲欧洲一区二区三区| 精品中文字幕一区二区小辣椒| 91偷拍与自偷拍精品| 久久综合一区二区| 亚洲五码中文字幕| heyzo一本久久综合| 精品久久久久久久久久久久包黑料| 亚洲激情在线播放| 粉嫩蜜臀av国产精品网站| 欧美sm美女调教| 亚洲成人精品影院| av欧美精品.com| 久久久亚洲精品石原莉奈| 五月天国产精品| 91亚洲精品乱码久久久久久蜜桃 | 欧美久久久久免费| 亚洲嫩草精品久久| 成人免费黄色在线| 久久亚洲一区二区三区明星换脸 | 亚洲九九爱视频| 国产成人精品免费一区二区| 日韩一区二区三区电影| 亚洲成人av一区二区| 色88888久久久久久影院野外| 欧美国产乱子伦| 国产精品1024久久| 久久精品亚洲精品国产欧美| 男人的j进女人的j一区| 5566中文字幕一区二区电影 | 国产精品第一页第二页第三页| 国内精品久久久久影院色| 日韩亚洲国产中文字幕欧美| 亚洲福利电影网| 欧美三级资源在线| 亚洲福利视频三区| 欧美男男青年gay1069videost| 一区二区欧美国产| 在线看一区二区| 亚洲二区在线观看| 欧美情侣在线播放| 日韩国产一二三区| 日韩欧美国产一区二区在线播放 | 国产一区免费电影| 精品日韩一区二区三区免费视频| 蜜臀av一区二区在线观看| 日韩一区二区三区三四区视频在线观看| 亚洲成人av中文| 欧美一区二区三区在线视频 | 亚洲综合色噜噜狠狠| 在线观看亚洲精品| 午夜精品一区在线观看| 欧美日韩1区2区| 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产三级久久久| a美女胸又www黄视频久久| 亚洲精品视频在线观看免费| 欧美性感一区二区三区| 青青草97国产精品免费观看| 欧美tickle裸体挠脚心vk| 国产风韵犹存在线视精品| 亚洲日本青草视频在线怡红院 | 国产精品伦理在线| 91精品办公室少妇高潮对白| 天天影视色香欲综合网老头| 日韩欧美电影一二三| 成人高清av在线| 亚洲愉拍自拍另类高清精品| 91.com在线观看| 国产乱国产乱300精品| 亚洲四区在线观看| 欧美高清精品3d| 国产成人在线视频免费播放| 亚洲激情在线激情|