⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrm.cpp

📁 大家共同进步! 大家共同进步! 大家共同进步!
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        talkFrame->LoadFrame (IDR_MAINFRAME);
        talkFrame->ShowWindow (SW_SHOW);
        talkFrame->UpdateWindow ();
}

BOOL CMainFrame::OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult)
{
        TOOLTIPTEXT *pTTT=(TOOLTIPTEXT *)pNMHDR;
        UINT nID = pNMHDR->idFrom;
        if(pTTT->uFlags&TTF_IDISHWND)
        {
            nID=::GetDlgCtrlID ((HWND)nID);
            if(nID==0)
                return FALSE;
        }

        switch(nID)
        {
        case ID_TALKROOM:
            pTTT->lpszText="QICQ聊天室";
            break;
        case ID_FIND:
            pTTT->lpszText="查找用户";
            break;
        case ID_CALL:
            pTTT->lpszText="即时寻呼";
            break;
        case ID_SET:
            pTTT->lpszText="个人设定";
            break;
        case ID_QICQ:
            pTTT->lpszText="上线下线离开";
            break;
        case ID_SHOWTOOL:
            pTTT->lpszText="显示聊天室入口";//此处,请用一串活动的文本
            break;

        }
        return true;
}

void CMainFrame::OnInitMenu(CMenu* pMenu) 
{
	CFrameWnd::OnInitMenu(pMenu);
	
	// TODO: Add your message handler code here
}

void CMainFrame::OnShowtool() 
{
	// TODO: Add your command handler code here
	BOOL bVisible = ((m_wndToolBar.GetStyle() & WS_VISIBLE) != 0);
	ShowControlBar(&m_wndToolBar, !bVisible, FALSE);
	RecalcLayout();
}


int ReadUserMessage(CGfxOutBarCtrl *StatuswndBar,WORD Y_UserQicqNo)//以一个全局变量为基础开始读
{
//第一项:属于哪个目录
//第二项:QICQ编号
//第三项:用户名称
//第四项:图像索引号
//第五项:是否上线
int tempIndex1,tempIndex2,tempIndex3=0;
char tempstring[100];
FILE *Read_fp;

    struct USERMESSAGE
    {
        DWORD UserID;
        WORD HowOld;
        BOOL IsMaleOrFemale;
        WORD ImageIndex;
        char UserName[20];
        char UserName1[20];
        char EMail[100];
        char HomePage[100];
        char DText[200];
        char MobileTel[16];
        char Tel[16];
        char OicqNo[10];
        char Country[20];
        char State[20];
        char Address[100];
        char Job[100];
        char YouBian[10];
    };


BYTE BkColor[3];
WORD FoderSize;

struct FODER
{
    char name[100];
    WORD UserCount;
};
struct FODER Foder;

struct USERMESSAGE UserMessage;

struct USERFRIENDMESSAGE
{
    struct USERMESSAGE UserMessage;
    WORD Foder;
    int IsOnLine;
}UserFriendMessage;


//以块形式读出所有用户,并添加为未上线形式
sprintf(tempstring,"%d.dat",CurrentUserID);
    WriteAFileForTest(tempstring);
Read_fp=fopen(tempstring,"rb");//此文件,在用户申请成功时生成。
if(Read_fp==NULL)
{
    Read_fp=fopen(tempstring,"rb");//此文件,在用户申请成功时生成。
}
//开始读入文件

    fread(BkColor,3,1,Read_fp);
    fread(&FoderSize,sizeof(WORD),1,Read_fp);
    fread(&UserMessage,sizeof(struct USERMESSAGE),1,Read_fp);

for(tempIndex1=0;tempIndex1<FoderSize;tempIndex1++)
{
    fread(&Foder,sizeof(struct FODER),1,Read_fp);
	StatuswndBar->AddFolder(Foder.name, 0);
    for(tempIndex2=0;tempIndex2<Foder.UserCount;tempIndex2++)
    {
        fread(&UserFriendMessage,sizeof(struct USERFRIENDMESSAGE),1,Read_fp);
        int tempData =UserFriendMessage.UserMessage.ImageIndex;

//在物理端,并没有将用户分组。所有用户都将在一个组中,接收到网络事项后,
//由定时器将消息发出,这时,将根据用户编号检测到,然后送给显示模块。
        if(CurrentUserID==UserFriendMessage.UserMessage.UserID)
        {
        }
        else
        {
	        SockUserDef.Friend[tempIndex3].Friend =
                UserFriendMessage.UserMessage.UserID;

	        SockUserDef.Friend[tempIndex3].OnOrDown =0;

	        strcpy(SockUserDef.Friend[tempIndex3].Name ,
                UserFriendMessage.UserMessage.UserName);

	        SockUserDef.Friend[tempIndex3].ImgIndex =
                UserFriendMessage.UserMessage.ImageIndex;//在图象列表中图标的序号

	        SockUserDef.Friend[tempIndex3].Index =0;//已被废除
	        SockUserDef.Friend[tempIndex3].Status =0;//上线下线切换标志
            SockUserDef.Friend[tempIndex3].Foder =tempIndex1;//将用户组标志也存在与套接字
            //有关的地方,做为一个副本
	        StatuswndBar->InsertItem(tempIndex1,UserFriendMessage.UserMessage.UserID,
                UserFriendMessage.UserMessage.UserName,
    //            1,0);
                UserFriendMessage.UserMessage.ImageIndex*3,0,0);
            tempIndex3++;
        }
    }
}
    fclose(Read_fp);
//结束读入文件
	StatuswndBar->SetSelFolder(0);
    return 0;
}

int WriteAFileForTest(char *FileName)
{
    int tempIndex1,tempIndex2;
    FILE *Write_fp;

    struct USERMESSAGE
    {
        DWORD UserID;
        WORD HowOld;
        BOOL IsMaleOrFemale;
        WORD ImageIndex;
        char UserName[20];
        char UserName1[20];
        char EMail[100];
        char HomePage[100];
        char DText[200];
        char MobileTel[16];
        char Tel[16];
        char OicqNo[10];
        char Country[20];
        char State[20];
        char Address[100];
        char Job[100];
        char YouBian[10];
    };

BYTE BkColor[3]={128,128,128};
WORD FoderSize=4;
struct FODER
{
    char name[100];
    WORD UserCount;
};
struct FODER Foder;

struct USERMESSAGE UserMessage;

struct USERFRIENDMESSAGE
{
    struct USERMESSAGE UserMessage;
    WORD Foder;
    int IsOnLine;
}UserFriendMessage;
//此处,从一个初始文件中读出相应信息
//BYTE[3]//窗口底色
//WORD 组数
//第一组:(结构)
//组名
//组中用户好友个数
//用户本身信息

//用户好友信息:(结构)
//用户好友所属组
//用户好友编号
//用户好友名称
//用户好友详细信息(结构还未定义)
//用户好友图标索引号
//用户好友是否上线

//用户详细信息结构的定义:

//以块形式读出所有用户,并添加为未上线形式

    Write_fp=fopen(FileName,"wb");
    fwrite(BkColor,3,1,Write_fp);
    fwrite(&FoderSize,sizeof(WORD),1,Write_fp);

    UserMessage.UserID=CurrentUserID;
    UserMessage.HowOld=26;
    UserMessage.IsMaleOrFemale=1;
    UserMessage.ImageIndex =0;
    sprintf(UserMessage.UserName,"%d",10001);
    sprintf(UserMessage.UserName1,"%d",10001);
    sprintf(UserMessage.EMail,"%d",10001);
    sprintf(UserMessage.HomePage,"%d",10001);
    sprintf(UserMessage.DText,"%d",10001);
    sprintf(UserMessage.MobileTel,"%d",10001);
    sprintf(UserMessage.Tel,"%d",10001);
    sprintf(UserMessage.OicqNo,"%d",10001);
    sprintf(UserMessage.Country,"%d",10001);
    sprintf(UserMessage.State,"%d",10001);
    sprintf(UserMessage.Address,"%d",10001);
    sprintf(UserMessage.Job,"%d",10001);
    sprintf(UserMessage.YouBian,"%d",10001);
    fwrite(&UserMessage,sizeof(struct USERMESSAGE),1,Write_fp);

for(tempIndex1=0;tempIndex1<FoderSize;tempIndex1++)
{//每组的用户,读时用同样的格式
    sprintf(Foder.name,"%d",tempIndex1);
    Foder.UserCount=8;
    fwrite(&Foder,sizeof(struct FODER),1,Write_fp);
    for(tempIndex2=0;tempIndex2<Foder.UserCount;tempIndex2++)
    {
        UserFriendMessage.Foder=tempIndex1;
        UserFriendMessage.IsOnLine=0;
        UserFriendMessage.UserMessage.UserID=10000+tempIndex2;
        UserFriendMessage.UserMessage.HowOld=26;
        UserFriendMessage.UserMessage.IsMaleOrFemale=1;
        UserFriendMessage.UserMessage.ImageIndex =tempIndex2;
        sprintf(UserFriendMessage.UserMessage.UserName,"%d",10000+tempIndex2);
        sprintf(UserFriendMessage.UserMessage.UserName1,"%d",10000+tempIndex2);
        sprintf(UserFriendMessage.UserMessage.EMail,"%d",tempIndex2);
        sprintf(UserFriendMessage.UserMessage.HomePage,"%d",tempIndex2);
        sprintf(UserFriendMessage.UserMessage.DText,"%d",tempIndex2);
        sprintf(UserFriendMessage.UserMessage.MobileTel,"%d",tempIndex2);
        sprintf(UserFriendMessage.UserMessage.Tel,"%d",tempIndex2);
        sprintf(UserFriendMessage.UserMessage.OicqNo,"%d",tempIndex2);
        sprintf(UserFriendMessage.UserMessage.Country,"%d",tempIndex2);
        sprintf(UserFriendMessage.UserMessage.State,"%d",tempIndex2);
        sprintf(UserFriendMessage.UserMessage.Address,"%d",tempIndex2);
        sprintf(UserFriendMessage.UserMessage.Job,"%d",tempIndex2);
        sprintf(UserFriendMessage.UserMessage.YouBian,"%d",tempIndex2);
        fwrite(&UserFriendMessage,sizeof(struct USERFRIENDMESSAGE),1,Write_fp);

    }
}
    fclose(Write_fp);
    return 0;
}

void CMainFrame::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
//这里,还要检查数据准备好的标志,如果数据准备好,则跳动
//应该多做几个数据接收缓存区,要不干脆做个数据队列
/*
	    wndBar.InsertItem(0,10004,
            "10004",
            4*3+1,1);
	    wndBar.RedrawWindow ();
        KillTimer(4);
*/
int tempData;
int tempIndex;

    for(tempIndex=0;tempIndex<MAXFRIENDSIZE;tempIndex++)
    {
//        if(	SockUserDef.Friend[tempIndex].OnOrDown ==1)
        if(	SockUserDef.Friend[tempIndex].OnOrDown !=1)
        {
            if(	SockUserDef.Friend[tempIndex].Status ==0)
            {
                	SockUserDef.Friend[tempIndex].Status =1;//切换好友在线的标志
                    //要两个,STATUS和ONORDOWN不相等时,才重新排序
                    //最后一个参数,用来指示是否要动画
	                wndBar.InsertItem(SockUserDef.Friend[tempIndex].Foder,
                        SockUserDef.Friend[tempIndex].Friend ,
                        SockUserDef.Friend[tempIndex].Name ,
                        SockUserDef.Friend[tempIndex].ImgIndex*3+1,1,0);
                    wndBar.RedrawWindow ();
            }
        }
        else
        {
            if(	SockUserDef.Friend[tempIndex].Status ==1)
            {
                	SockUserDef.Friend[tempIndex].Status =0;//切换好友在线的标志
                    //要两个,STATUS和ONORDOWN不相等时,才重新排序
	                wndBar.InsertItem(SockUserDef.Friend[tempIndex].Foder,
                        SockUserDef.Friend[tempIndex].Friend ,
                        SockUserDef.Friend[tempIndex].Name ,
                        SockUserDef.Friend[tempIndex].ImgIndex*3,0,0);
                    wndBar.RedrawWindow ();
            }
        }
        if(SockUserDef.Friend[tempIndex].RcvBuffer.GetSize())
        {
            if(SockUserDef.Friend[tempIndex].OnOrDown==1)
            {
                tempData=1;
            }
            else
            {
                tempData=0;
            }
	        wndBar.InsertItem(SockUserDef.Friend[tempIndex].Foder,
                    SockUserDef.Friend[tempIndex].Friend ,
                    SockUserDef.Friend[tempIndex].Name ,
                    SockUserDef.Friend[tempIndex].ImgIndex*3+tempData,
                    SockUserDef.Friend[tempIndex].OnOrDown,
                    1);
                    wndBar.RedrawWindow ();
        }

    }
    //	m_List.RedrawWindow ();
    
	CFrameWnd::OnTimer(nIDEvent);
}

void CMainFrame::OnAnimTrim(WPARAM wParam, LPARAM lParam)
{
    DWORD tempIndex = lParam;
    int tempData;
            if(SockUserDef.Friend[tempIndex].OnOrDown==1)
            {
                tempData=1;
            }
            else
            {
                tempData=0;
            }
	        wndBar.InsertItem(SockUserDef.Friend[tempIndex].Foder,
                    SockUserDef.Friend[tempIndex].Friend ,
                    SockUserDef.Friend[tempIndex].Name ,
                    SockUserDef.Friend[tempIndex].ImgIndex*3+tempData,
                    SockUserDef.Friend[tempIndex].OnOrDown,
                    0);
                    wndBar.RedrawWindow ();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -