📄 mywnd.cpp
字号:
// MyWnd.cpp: implementation of the CMyWnd class.
//
//////////////////////////////////////////////////////////////////////
#include "StdAfx.h"
#include "front.h"
#include "MyWnd.h"
#include "InputBox.h"
#include "MySheetpage.h"
#include "QQFace.h"
#include "fstream.h"
#define backport 5100
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
extern CFrontApp theApp;
UINT UdpReceiveMessage(LPVOID pParam);
UINT TcpReceiveMessage(LPVOID pParam);
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_DYNCREATE(CMyWnd, CWnd)
BEGIN_MESSAGE_MAP(CMyWnd, CWnd)
//{{AFX_MSG_MAP(CGfxOutBarCtrl)
ON_WM_CREATE()
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_WM_RBUTTONDOWN()
ON_WM_TIMER()
ON_WM_LBUTTONDBLCLK()
//}}AFX_MSG_MAP
ON_MESSAGE(WM_ACCEPT, OnAcceptMessage)
END_MESSAGE_MAP()
CMyWnd::CMyWnd()
{
crBackground=RGB(108,149,239);
iRountAngle=17;
bAutoClose=false;
sSeverAddress="";
bIsOnline=false;
bFlush=false; //当登陆上时能够刷一次
ShortMsgIndex=0; //短消息的当前指针,由上一步,下一步控制
iCurrentLabel=0; //用于TAB控制焦点走向
bZixun=true;
bChengnuo=true;
bChengnuoQ=true;
}
CMyWnd::~CMyWnd()
{
delete SelectBox;
delete font;
delete font2;
if(iFlag==14)
{
delete SelectBox1;
delete SelectBox2;
}
if(iFlag!=1)
delete Wizardcontrol;
if(iFlag==1) //QQ界面
{
//下线
theApp.Login(0);
//删除短信息保存指针
shortmsgitem *temp1;
for(int i=0;i<MAX_PERSON;i++)
{
for(int j=shortmsg[i].msg.GetSize()-1;j>=0;j--)
{
temp1=(shortmsgitem *)shortmsg[i].msg.GetAt(j);
delete temp1;
shortmsg[i].msg.RemoveAt(j);
}
}
delete onlinelist;
closesocket(MyUdpSocket);
delete PageControl;
i=0;
int AllCount=arDialogs.GetSize();
CInputBox *temp;
for(i=0;i<AllCount;i++)
{
temp=(CInputBox *)arDialogs.GetAt(i);
if(temp->bClose)
delete temp;
}
if(AllCount>0)arDialogs.RemoveAll();
}
}
int CMyWnd::Create(DWORD dwStyle, const RECT &rect, CWnd *pParentWnd, UINT nID,int flag)
{
iFlag=flag;
WndRect=rect;
bIsDBClick=false;
font=new CFont;
font2=new CFont;
return CWnd::CreateEx(NULL, NULL, NULL, dwStyle|WS_CHILD, rect, pParentWnd, nID);
}
int CMyWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) == -1)
return -1;
SetFocus();
SetTimer(1,300,NULL);//鼠标移出程序框
if(iFlag==1)
{
SetTimer(2,200,NULL); //关闭弹出窗口,刷新QQ窗体
SetTimer(3,2000,NULL);//发送在线试探信息
SetTimer(4,1000,NULL); //判断一个窗口是否在线,发送到接收是双程
}
// TODO: Add your specialized creation code here
SelectBox=new CMySelectBox(this,IDC_SELECTBOX);
SelectBox->list->bordercol=RGB(0,0,0); //边框颜色
if(iFlag==0) //登陆框
{
CRect clientRc;
GetClientRect(&clientRc);
Wizardcontrol=new CMyWizardcontrol(this);
Wizardcontrol->setPos(clientRc);
CMySheetpage *page1;
page1=new CMySheetpage;
page1->Init(NULL,1,this,false,NULL);
page1->setPos(clientRc);
CMyLabel *label1,*label2,*label3,*label4;
label1=new CMyLabel("窗口号:",4,2,false,false,NULL,NULL,this);
label1->setPos(page1->PageRect.left+10,page1->PageRect.top+10,page1->PageRect.left+100,page1->PageRect.top+30);
label1->SetTextCol(RGB(243,243,243));
label2=new CMyLabel("密 码:",4,2,false,false,NULL,NULL,this);
label2->setPos(page1->PageRect.left+10,page1->PageRect.top+30,page1->PageRect.left+100,page1->PageRect.top+65);
label2->SetTextCol(RGB(243,243,243));
label3=new CMyLabel("0",5,2,false,false,1,NULL,this);
label3->setPos(page1->PageRect.left+70,page1->PageRect.top+12,page1->PageRect.left+200,page1->PageRect.top+28);
label3->pEdit->setEnable(false);
label4=new CMyLabel("",5,2,false,false,2,NULL,this);
label4->setPos(page1->PageRect.left+70,page1->PageRect.top+39,page1->PageRect.left+200,page1->PageRect.top+55);
page1->AddItem(label1);
page1->AddItem(label2);
page1->AddItem(label3);
page1->AddItem(label4);
Wizardcontrol->AddPage(page1);
}
if(iFlag==1) //QQ窗口
{
//在线列表
onlinelist=new OnlineList;
PageControl=new CMySheetcontrol(IDC_PAGECONTROL,this);
PageControl->setPos(40,2,183,494);
PageControl->bodorcol=crBackground;
CMySheetpage *page1;
page1=new CMySheetpage;
page1->Init(NULL,1,this,true,"res/mail.bmp");
page1->setPos(PageControl->ControlRect);
CQQFace *QFace;
QFace=new CQQFace(this,IDC_QQFACE);
QFace->AddFolder("信息",2);
QFace->AddFolder("咨询件",1);
QFace->AddFolder("确认承诺件入库",0);
QFace->AddFolder("确认承诺件完成",1);
QFace->setPos(CRect(page1->PageRect.left+3,page1->PageRect.top+2,page1->PageRect.right-3,page1->PageRect.bottom-2));
page1->AddItem(QFace);
PageControl->Addpage((void *)page1);
CMySheetpage *page2;
page2=new CMySheetpage;
page2->Init(NULL,1,this,true,"res/search1.bmp");
page2->setPos(PageControl->ControlRect);
CMyList *list;
list=new CMyList(this,IDC_SEARCH,true);
list->setPos(CRect(PageControl->ControlRect.left+7,PageControl->ControlRect.top+10,PageControl->ControlRect.right-6,PageControl->ControlRect.bottom-10));
list->AddItem("查询",2,true,1,"res/Ssearch.bmp");
list->AddItem("修改及删除用户",2,true,2,"res/AddDel.bmp");
list->AddItem("初始化数据库",2,true,3,"res/InitKu.bmp");
list->AddItem("窗口文件修改",2,true,4,"res/fileKu.bmp");
page2->AddItem(list);
PageControl->Addpage((void *)page2);
//初始化UDP接收
int Ret;
WSADATA wsaData;
if ((Ret = WSAStartup(0x0202,&wsaData)) != 0)
{
AfxMessageBox("WSAStartup failed with error");
WSACleanup();
return 0;
}
MyUdpSocket = socket(AF_INET, SOCK_DGRAM, 0);
if (MyUdpSocket == INVALID_SOCKET)
{
AfxMessageBox("socket() failed");
return 0;
}
SOCKADDR_IN LocalUDP;
LocalUDP.sin_family = AF_INET;
LocalUDP.sin_addr.s_addr = htonl(INADDR_ANY);
LocalUDP.sin_port = htons(5000);
if(bind(MyUdpSocket,(SOCKADDR *)&LocalUDP,sizeof(LocalUDP))==SOCKET_ERROR)
{
AfxMessageBox("bind() failed");
return 0;
}
AfxBeginThread(UdpReceiveMessage,this,THREAD_PRIORITY_NORMAL);
//初始化TCP
MyTCPSocket=socket(AF_INET, SOCK_STREAM, 0);
if(MyTCPSocket== INVALID_SOCKET)
{
AfxMessageBox("Failed to get a socket");
return 0;
}
SOCKADDR_IN LocalTCP;
LocalTCP.sin_family = AF_INET;
LocalTCP.sin_addr.s_addr = htonl(INADDR_ANY);
LocalTCP.sin_port = htons(5001);
if (bind(MyTCPSocket, (PSOCKADDR) &LocalTCP, sizeof(LocalTCP)) == SOCKET_ERROR)
{
AfxMessageBox(" tcp bind() failed");
return 0;
}
if (listen(MyTCPSocket, 5))
{
AfxMessageBox("tcp listen() failed");
return 0;
}
AfxBeginThread(TcpReceiveMessage,this,THREAD_PRIORITY_NORMAL);
//初始化在线列表
for(int i=0;i<MAX_PERSON;i++)
{
onlinelist->wInfo[i].isExit=false;
onlinelist->wInfo[i].timer=50;
}
}
if(iFlag==2) //设置窗口
{
CRect clientRc;
GetClientRect(&clientRc);
Wizardcontrol=new CMyWizardcontrol(this);
Wizardcontrol->setPos(clientRc);
CMySheetpage *page1;
page1=new CMySheetpage;
page1->Init(NULL,1,this,false,NULL);
page1->setPos(clientRc);
CMyLabel *label1;
label1=new CMyLabel("后台程序地址:",4,2,false,false,NULL,NULL,this);
label1->setPos(page1->PageRect.left+10,page1->PageRect.top+10,page1->PageRect.left+100,page1->PageRect.top+30);
label1->SetTextCol(RGB(243,243,243));
CMyLabel *label2;
label2=new CMyLabel("",5,2,false,false,NULL,NULL,this);
label2->setPos(label1->LabelRect.left+40,label1->LabelRect.bottom+10,label1->LabelRect.left+200,label1->LabelRect.bottom+28);
page1->AddItem(label1);
page1->AddItem(label2);
Wizardcontrol->AddPage(page1);
}
if(iFlag==3) //用户概要窗口
{
CRect clientRc;
GetClientRect(&clientRc);
Wizardcontrol=new CMyWizardcontrol(this);
Wizardcontrol->setPos(clientRc);
CMySheetpage *page1;
page1=new CMySheetpage;
page1->Init(NULL,1,this,false,NULL);
page1->setPos(clientRc);
CMyLabel *label1,*label2,*label3,*label4,*label5,*label51;
label1=new CMyLabel("窗口号:",4,2,false,false,NULL,NULL,this);
label1->setPos(page1->PageRect.left+20,page1->PageRect.top+6,page1->PageRect.left+70,page1->PageRect.top+20);
label1->SetTextCol(RGB(243,243,243));
label2=new CMyLabel("窗口名:",4,2,false,false,NULL,NULL,this);
label2->setPos(page1->PageRect.left+20,page1->PageRect.top+20,page1->PageRect.left+70,page1->PageRect.top+50);
label2->SetTextCol(RGB(243,243,243));
label3=new CMyLabel("用户名:",4,2,false,false,NULL,NULL,this);
label3->setPos(page1->PageRect.left+20,page1->PageRect.top+50,page1->PageRect.left+70,page1->PageRect.top+70);
label3->SetTextCol(RGB(243,243,243));
label4=new CMyLabel("性 别:",4,2,false,false,NULL,NULL,this);
label4->setPos(page1->PageRect.left+20,page1->PageRect.top+70,page1->PageRect.left+70,page1->PageRect.top+90);
label4->SetTextCol(RGB(243,243,243));
label5=new CMyLabel("IP地址:",4,2,false,false,NULL,NULL,this);
label5->setPos(page1->PageRect.left+20,page1->PageRect.top+90,page1->PageRect.left+70,page1->PageRect.top+110);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -