📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "rectvinfo.h"
#include "MainFrm.h"
#include "public.h"
#include "uploaddata.h"
#include "secretcomm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
CRectvinfoApp* theMfApp;
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_TIMER()
ON_WM_DESTROY()
ON_COMMAND(ID_APP_UPLOAD, OnAppUpload)
ON_UPDATE_COMMAND_UI(ID_INDICATOR_COUNT, OnUpdatePane )
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_PROMPT,
ID_INDICATOR_STATICTEXT,
ID_INDICATOR_COUNT,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
ListenSocket = NULL;
InstanceComm = NULL;
InstanceDb = NULL;
NormalTimerId = NULL;
StartTimerID = NULL;
mb = false;
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
m_wndStatusBar.SetPaneInfo(0,indicators[0],SBPS_NOBORDERS,150);
m_wndStatusBar.SetPaneInfo(1,indicators[1],SBPS_NOBORDERS,200);
m_wndStatusBar.SetPaneInfo(2,indicators[2],SBPS_NOBORDERS,40);
m_wndStatusBar.SetPaneInfo(3,indicators[3],SBPS_NOBORDERS,80);
StartTimerID = SetTimer(1,2000,NULL);
theMfApp = (CRectvinfoApp*)AfxGetApp();
theMfApp->frameWnd = m_hWnd;
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE
| WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX;
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::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(nIDEvent == StartTimerID)
{
KillTimer(StartTimerID);
StartTimerID = NULL;
ListenSocket = new mSocket;
InstanceDb = new myDb;
InstanceComm = new mComm;
if(!ListenSocket->CreateThread(CREATE_SUSPENDED)||
!InstanceDb->CreateThread(CREATE_SUSPENDED)||
!InstanceComm->CreateThread(CREATE_SUSPENDED))
{
if (ListenSocket)
{
delete ListenSocket;
ListenSocket = NULL;
}
if (InstanceDb)
{
delete InstanceDb;
InstanceDb = NULL;
}
if (InstanceComm)
{
delete InstanceComm;
InstanceComm = NULL;
}
return;
}
InstanceDb->ResumeThread();
ListenSocket->ResumeThread();
InstanceComm->ResumeThread();
theMfApp->DbPtr = InstanceDb;
theMfApp->CommPtr = InstanceComm;
NormalTimerId = SetTimer(2,4000,NULL);
}
if(nIDEvent == NormalTimerId)
{
InstanceDb->PostThreadMessage(TIMECONNECTDB, WPARAM(0), LPARAM(0));
}
CFrameWnd::OnTimer(nIDEvent);
}
//Sets and displays text for pane index 4 and id ID_PANE_FOUR
//SetPaneText (4, "My New Status Bar Text", TRUE)
void CMainFrame::OnUpdatePane (CCmdUI *pCmdUI)
{
pCmdUI->Enable ();
}
LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
switch(message)
{
case DSPLAYSTATUSBAR: //请求命令
char mstr[10];
switch(wParam)
{
case 1:
m_wndStatusBar.SetPaneText(wParam,(LPCTSTR) lParam,TRUE);
delete (UCHAR*) lParam;
break;
case 3:
m_wndStatusBar.SetPaneText(wParam,(LPCTSTR) _itoa(lParam,mstr,10),TRUE);
break;
default:
break;
}
break;
case CREATENEWSOCKSERVER:
ListenSocket = new mSocket;
if(!ListenSocket->CreateThread(CREATE_SUSPENDED))
{
delete ListenSocket;
ListenSocket = NULL;
m_wndStatusBar.SetPaneText(1,"创建新SOCKETSERVER失败!",TRUE);
}
else
{
m_wndStatusBar.SetPaneText(1,"创建新SOCKETSERVER成功!",TRUE);
ListenSocket->ResumeThread();
}
break;
default:
break;
}
if (mb)
{
mb = false;
CSecretComm mSecretDlg;
mSecretDlg.DoModal();
}
return CFrameWnd::WindowProc(message, wParam, lParam);
}
void CMainFrame::OnDestroy()
{
CFrameWnd::OnDestroy();
// TODO: Add your message handler code here
if(ListenSocket != NULL)
{
ListenSocket->CloseListenSocket();
TerminateThread(ListenSocket->m_hThread, (DWORD)-1);
delete ListenSocket;
ListenSocket = NULL;
}
if(InstanceComm != NULL)
{
InstanceComm->Loop = FALSE;
InstanceComm->CleanOfExit();
TerminateThread(InstanceComm->m_hThread, (DWORD)-1);
delete InstanceComm;
InstanceComm = NULL;
theMfApp->CommPtr = NULL;
}
if(InstanceDb != NULL)
{
InstanceDb->Loop = FALSE;
InstanceDb->Close_DB();
TerminateThread(InstanceDb->m_hThread, (DWORD)-1);
delete InstanceDb;
InstanceDb = NULL;
theMfApp->DbPtr = NULL;
}
}
myDb* CMainFrame::GetDb()
{
return InstanceDb;
}
void CMainFrame::OnAppUpload()
{
// TODO: Add your command handler code here
uploaddata mUpDlg;
mUpDlg.DoModal();
}
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
UINT message = pMsg->message;
if(message == WM_CHAR) //WM_KEYDOWN
{
int vKey=(int)pMsg->wParam; // 取得虚拟键值
if(vKey == 0x19) //VK_CONTROL+Y
{
mb = true;
}
}
return CFrameWnd::PreTranslateMessage(pMsg);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -