📄 bankclientdlg.cpp
字号:
/************************************************
本模块为银行客户端,主界面
主要包含了各种业务相关操作
作者:颜永华
*************************************************/
// BankClientDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "BankClient.h"
#include "BankClientDlg.h"
#include ".\bankclientdlg.h"
#include "InMoneyDlg.h"
#include "OutMoneyDlg.h"
#include "TransferDlg.h"
#include "RegNewAccountDlg.h"
#include "FindDlg.h"
#include "NotifyPwdDlg.h"
#include "sock.h"
extern CSock sock;
extern CLIENT_STATUS clientStatus;
#define WM_SHOWTASK WM_USER+0X100
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CBankClientDlg 对话框
extern CLIENT_STATUS clientStatus;
CBankClientDlg::CBankClientDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBankClientDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CBankClientDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CBankClientDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDOK, OnBnClickedOk)
ON_WM_SYSCOMMAND()
ON_MESSAGE(WM_SHOWTASK,OnShowTask)
ON_BN_CLICKED(IDC_INMONEY, OnBnClickedInmoney)
ON_BN_CLICKED(IDC_OUTMONEY, OnBnClickedOutmoney)
ON_BN_CLICKED(IDC_TRANSFER, OnBnClickedTransfer)
ON_BN_CLICKED(IDC_REGNEWACCOUNT, OnBnClickedRegnewaccount)
ON_WM_DESTROY()
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
ON_COMMAND(ID_32772, OnMenuExit)
ON_COMMAND(ID_32771, OnMenuOpenMainWin)
ON_COMMAND(ID_32773, OnMenuInMoney)
ON_COMMAND(ID_32774, OnMenuOutMoney)
ON_COMMAND(ID_32775, OnMenuTransfer)
ON_COMMAND(ID_32777, OnMenuRegNewAcc)
ON_COMMAND(ID_32776, OnMenuFindBalance)
ON_BN_CLICKED(IDC_BTNFIND, OnBnClickedBtnfind)
ON_BN_CLICKED(IDC_BTNNOTIFYPWD, OnBnClickedBtnnotifypwd)
ON_COMMAND(ID_Menu, OnMenuNotifyPwd)
END_MESSAGE_MAP()
// CBankClientDlg 消息处理程序
BOOL CBankClientDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
///状态栏设置
m_bar.Create(WS_CHILD|WS_VISIBLE|SBS_SIZEGRIP, CRect(0, 0, 0, 0), this, 101);
m_bar.SetBkColor(RGB(0xa6, 0xca, 0xf0)); // 背景色
int arWidth[] = { 200, -1 };
m_bar.SetParts(2, arWidth); // 分栏
m_bar.SetText(" 银行模拟系统!", 1, 0); // 第一个栏的文本
CString str;
str.Format(" %s 正在使用中..",clientStatus.cUserName);
m_bar.SetText(str, 0, 0);
//托盘初始化
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage=WM_SHOWTASK;//自定义的消息名称
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(nid.szTip,str);//信息提示条为“计划任务提醒”
// TODO: 在此添加额外的初始化代码
TaskIconClick=FALSE;//托盘
//现实用户登陆状态
str.Format("姓名 : %s",clientStatus.RealName);
GetDlgItem(IDC_REALNAME)->SetWindowText(str);
str.Format("电话 : %s",clientStatus.Phone);
GetDlgItem(IDC_PHONE)->SetWindowText(str);
str.Format("地址 : %s",clientStatus.Addr);
GetDlgItem(IDC_ADDR)->SetWindowText(str);
str.Format("EMAIL: %s",clientStatus.Email);
GetDlgItem(IDC_EMAIL)->SetWindowText(str);
str.Format("积分 : %d",clientStatus.nScore);
GetDlgItem(IDC_SCORE)->SetWindowText(str);
str.Format("等级 : %d",clientStatus.nGrade);
GetDlgItem(IDC_GRADE)->SetWindowText(str);
str.Format("银行IP:%s",clientStatus.RegBankIP);
GetDlgItem(IDC_BANK)->SetWindowText(str);
return TRUE;
// 除非设置了控件的焦点,否则返回 TRUE
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void CBankClientDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标显示。
HCURSOR CBankClientDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CBankClientDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
OnOK();
}
static BOOL iconFlag=FALSE;
void CBankClientDlg::OnSysCommand(UINT nID, LPARAM lParam)
{//捕获系统消息
if(nID==SC_MINIMIZE)
{//最小化
iconFlag=TRUE;
Shell_NotifyIcon(NIM_ADD,&nid);
ShowWindow(SW_HIDE);//隐藏主窗口
}else if(nID==SC_CLOSE)
{//关闭
if(iconFlag==TRUE)
Shell_NotifyIcon(NIM_DELETE,&nid);
CDialog::OnSysCommand(nID, lParam);
}else
CDialog::OnSysCommand(nID, lParam);
}
long CBankClientDlg::OnShowTask(WPARAM wParam,LPARAM lParam)
{//接收托盘消息函数
if(wParam!=IDR_MAINFRAME)
return 1;
switch(lParam)
{
case WM_RBUTTONUP://右键起来时弹出快捷菜单
{
LPPOINT lpoint=new tagPOINT;
::GetCursorPos(lpoint);//得到鼠标位置
CMenu menu; //弹出菜单
menu.LoadMenu(IDR_MENU1);
ASSERT(menu);
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
pPopup->TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this);
menu.Detach();
menu.DestroyMenu();
delete lpoint;
}
return 0;
case WM_LBUTTONDBLCLK://单击左键的处理
{
if(TaskIconClick==FALSE)
{ShowWindow(SW_SHOW);//显示主窗口
TaskIconClick=TRUE;
}else
{ ShowWindow(SW_HIDE);
TaskIconClick=FALSE;
}
}
return 0;
default :
return 0;
}
return 0;
}
void CBankClientDlg::OnBnClickedInmoney()
{//存款
CInMoneyDlg inMoneyDlg;
if(IDOK==inMoneyDlg.DoModal())
{
}
}
void CBankClientDlg::OnBnClickedOutmoney()
{//取款
COutMoneyDlg outMoneyDlg;
outMoneyDlg.DoModal();
}
void CBankClientDlg::OnBnClickedTransfer()
{//转帐
CTransferDlg transferDlg;
transferDlg.DoModal();
}
void CBankClientDlg::OnBnClickedRegnewaccount()
{//注册新帐号
CRegNewAccountDlg regNewAccDlg;
regNewAccDlg.DoModal();
}
void CBankClientDlg::OnDestroy()
{//清除托盘图标
CDialog::OnDestroy();
if(iconFlag==TRUE)
Shell_NotifyIcon(NIM_DELETE,&nid);
}
void CBankClientDlg::OnBnClickedCancel()
{//退出系统
EXIT_PACKET exitpacket;
memset(&exitpacket,0,sizeof(EXIT_PACKET));
exitpacket.wCode=CLIENT_EXIT;
exitpacket.wLen=sizeof(EXIT_PACKET);
strcpy(exitpacket.customerName,clientStatus.cUserName);
sock.sendPacket((BYTE*)&exitpacket,sizeof(EXIT_PACKET));
OnCancel();
}
void CBankClientDlg::OnBnClickedBtnfind()
{
//查询余额
CFindDlg findDlg;
findDlg.DoModal();
}
void CBankClientDlg::OnMenuExit()
{//退出系统
OnBnClickedCancel();
OnCancel();
// TODO: 在此添加命令处理程序代码
}
void CBankClientDlg::OnMenuOpenMainWin()
{//显示主窗口
ShowWindow(SW_SHOW);
TaskIconClick=TRUE;
}
void CBankClientDlg::OnMenuInMoney()
{//存款
CInMoneyDlg inMoneyDlg;
inMoneyDlg.DoModal();
}
void CBankClientDlg::OnMenuOutMoney()
{//取款
COutMoneyDlg outMoneyDlg;
outMoneyDlg.DoModal();
}
void CBankClientDlg::OnMenuTransfer()
{//转帐
CTransferDlg transferDlg;
transferDlg.DoModal();
}
void CBankClientDlg::OnMenuRegNewAcc()
{//注册新帐号
CRegNewAccountDlg regNewAccDlg;
regNewAccDlg.DoModal();
}
void CBankClientDlg::OnMenuFindBalance()
{//查询余额
CFindDlg findDlg;
findDlg.DoModal();
}
void CBankClientDlg::OnBnClickedBtnnotifypwd()
{//修改密码
CNotifyPwdDlg notifyPwdDlg;
notifyPwdDlg.DoModal();
}
void CBankClientDlg::OnMenuNotifyPwd()
{
CNotifyPwdDlg notifyPwdDlg;
notifyPwdDlg.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -