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

📄 bankclientdlg.cpp

📁 一个与金融方面有关的问题
💻 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 + -