📄 robotdlg.cpp
字号:
// RobotDlg.cpp : implementation file
//
#include "stdafx.h"
#include "GobangRobot.h"
#include "RobotDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CShareMemory<NODE_STRUCT> *svr_send_queue; //发送队列
/////////////////////////////////////////////////////////////////////////////
// RobotDlg dialog
RobotDlg::RobotDlg(CWnd* pParent /*=NULL*/)
: CDialog(RobotDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(RobotDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void RobotDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(RobotDlg)
DDX_Control(pDX, IDC_LIST_ROBOTINFO, list_robotinfo);
DDX_Control(pDX, IDC_COMBO_ROOMID, combo_roomid);
DDX_Text(pDX, IDC_EDIT_ID, userid);
DDX_Text(pDX, IDC_EDIT_NICKENAME, nicknmae);
DDX_Text(pDX, IDC_EDIT_AGE, age);
DDX_Control(pDX, IDC_COMBO_SEX, combo_sex);
DDX_Control(pDX, IDC_COMBO_LEVEL, combo_level);
DDX_Control(pDX, IDC_COMBO_ROOMNUM, combo_roomnum);
DDX_Text(pDX, IDC_EDIT_TABLE, tableid);
DDX_Control(pDX, IDC_COMBO_ORIENT, combo_orient);
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(RobotDlg, CDialog)
//{{AFX_MSG_MAP(RobotDlg)
ON_WM_SHOWWINDOW()
ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
ON_BN_CLICKED(IDC_BUTTON_MODIFY, OnButtonModify)
ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)
ON_NOTIFY(NM_CLICK, IDC_LIST_ROBOTINFO, OnClickListRobotinfo)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// RobotDlg message handlers
BOOL RobotDlg::OnInitDialog() {
CDialog::OnInitDialog();
list_robotinfo.InsertColumn(0,"ID");
list_robotinfo.InsertColumn(1,"用户名");
list_robotinfo.InsertColumn(2,"级别");
list_robotinfo.InsertColumn(3,"年龄");
list_robotinfo.InsertColumn(4,"性别");
list_robotinfo.InsertColumn(5,"房间号");
list_robotinfo.InsertColumn(6,"桌号");
list_robotinfo.InsertColumn(7,"方位");
list_robotinfo.InsertColumn(8,"状态");
list_robotinfo.SetColumnWidth(0,60);
list_robotinfo.SetColumnWidth(1,120);
list_robotinfo.SetColumnWidth(2,60);
list_robotinfo.SetColumnWidth(3,60);
list_robotinfo.SetColumnWidth(4,60);
list_robotinfo.SetColumnWidth(5,60);
list_robotinfo.SetColumnWidth(6,60);
list_robotinfo.SetColumnWidth(7,60);
list_robotinfo.SetColumnWidth(8,60);
list_robotinfo.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
return true;
}
void RobotDlg::OnShowWindow( BOOL bShow, UINT nStatus ){
combo_sex.ResetContent();
combo_level.ResetContent();
combo_orient.ResetContent();
combo_roomid.ResetContent();
combo_roomnum.ResetContent();
userid="";
nicknmae="";
tableid = "";
age= "";
UpdateData(FALSE);
char sqlbuf[1024]={0};
CString database,dbusername,dbpassword,logdir;
CString userid,grade,roomid,tableid,tableseq,status,oppuserid,oppstatus,nickename;
CString userage,usersex;
combo_sex.ResetContent();
combo_level.ResetContent();
combo_orient.ResetContent();
combo_roomid.ResetContent();
combo_roomnum.ResetContent();
userid="";
nicknmae="";
tableid = "";
age= "";
UpdateData(FALSE);
//创建数据库连接对象
dbp = new TDBPEx("RobotDealThread177","xzy","xzy","xzy","../../log/");
if (dbp && dbp->IsReady())
{
// robotdeal->AddMsg("线程%d 创建dbp对象成功!",threadno);
}
else
{
// robotdeal->AddMsg("线程%d 创建dbp对象失败!",threadno);
}
dbp->Run();
if (dbp)
{
if (!dbp->IsConnect())
{
if (dbp->Connect() == PBL_Error_FAIL)
{
//robotdeal->AddMsg("[RecvThreadFunc]:线程%d dbp连接数据库失败!",threadno);
}
else
{
// robotdeal->AddMsg("[RecvThreadFunc]:线程%d dbp连接数据库成功!",threadno);
}
}
}
strcpy(sqlbuf,"select DISTINCT roomid from gobang_roominfo");
dbp->SQLExecDirect(sqlbuf,false);
while(dbp->SQLFetch() == PBL_Error_OK){
dbp->SQLGetDataStr(1,roomid);
combo_roomid.AddString(roomid);
combo_roomnum.AddString(roomid);
}
dbp->SQLFreeStmt();
strcpy(sqlbuf,"select DISTINCT userid,nickname,grade,age,sex,roomid,tableid,tableseq,status \
from gobang_robotinfo");
dbp->SQLExecDirect(sqlbuf,false);
int i= 0;
while(dbp->SQLFetch() == PBL_Error_OK){
dbp->SQLGetDataStr(1,userid);
dbp->SQLGetDataStr(2,nickename);
dbp->SQLGetDataStr(3,grade);
dbp->SQLGetDataStr(4,userage);
dbp->SQLGetDataStr(5,usersex);
dbp->SQLGetDataStr(6,roomid);
dbp->SQLGetDataStr(7,tableid);
dbp->SQLGetDataStr(8,tableseq);
dbp->SQLGetDataStr(9,status);
list_robotinfo.InsertItem(i,NULL);
list_robotinfo.SetItemText(i,0,userid);
list_robotinfo.SetItemText(i,1,nickename);
list_robotinfo.SetItemText(i,2,grade);
list_robotinfo.SetItemText(i,3,userage);
list_robotinfo.SetItemText(i,4,usersex);
list_robotinfo.SetItemText(i,5,roomid);
list_robotinfo.SetItemText(i,6,tableid);
list_robotinfo.SetItemText(i,7,tableseq);
list_robotinfo.SetItemText(i,8,status);
}
dbp->SQLFreeStmt();
combo_sex.InsertString(0,"男");
combo_sex.InsertString(1,"女");
combo_level.InsertString(0,"1");
combo_level.InsertString(1,"2");
combo_level.InsertString(2,"3");
combo_level.InsertString(3,"4");
combo_level.InsertString(4,"5");
combo_orient.InsertString(0,"左侧");
combo_orient.InsertString(1,"右侧");
}
void RobotDlg::OnButtonAdd()
{
char sqlbuf[1024]={0};
int gradei;
int usersexi;
int roomidi;
int orienti;
CString picturestr;
CString bodytemp;
int colorflagstr;
NODE_STRUCT recvNode;
memset(&recvNode,0,sizeof recvNode);
strcpy(recvNode.err_code,"000");
strcpy(recvNode.service_id,"001");
strcpy(recvNode.ctrlmsg,"0");
UpdateData(TRUE);
gradei = combo_level.GetCurSel()+1;
usersexi = combo_sex.GetCurSel()+1;
roomidi = combo_roomnum.GetCurSel()+1;
orienti = combo_orient.GetCurSel();
if(usersexi==1){
picturestr = "00";
}else{
picturestr = "01";
}
if(orienti==0){
colorflagstr = 1;
}else{
colorflagstr = 2;
}
sprintf(sqlbuf,"select userid from user_info where userid = '%s'",userid);
dbp->SQLExecDirect(sqlbuf,false);
while(dbp->SQLFetch() == PBL_Error_OK){
MessageBox("该用户已存在");
dbp->SQLFreeStmt();
return;
}
dbp->SQLFreeStmt();
sprintf(sqlbuf,"insert into user_info(userid,nickname,picture,sex,age) \
values('%s','%s','%s',%d,%s)",userid,nicknmae,picturestr,usersexi,age);
dbp->SQLExecDirect(sqlbuf,true,true);
sprintf(sqlbuf,"insert into gobang_robotinfo(userid,nickname,grade,roomid,tableid,\
tableseq,colorflag,sex,age) values('%s','%s',%d,%d,%s,%d,%d,%d,%s)"
,userid,nicknmae,gradei,roomidi,tableid,orienti,colorflagstr,usersexi,age);
dbp->SQLExecDirect(sqlbuf,true,true);
recvNode.queuenum = 0 - atoi(userid);
strcpy(recvNode.operate_id,"000"); //获取房间列表
strcpy(recvNode.body,userid);
if(svr_send_queue->Insert(&recvNode) == FALSE){
}
strcpy(recvNode.operate_id,"002"); //获取大厅信息
bodytemp.Format("%s;%d",userid,roomidi);
// bodytemp = userid + ";" + CString(roomidi);
strcpy(recvNode.body,bodytemp);
if(svr_send_queue->Insert(&recvNode) == FALSE){
}
strcpy(recvNode.operate_id,"004"); //用户坐下
bodytemp.Format("%s;%d;%s;%d",userid,roomidi,tableid,orienti);
// bodytemp = userid + ";" + CString(roomidi)+ ";" + tableid+ ";" + CString(orienti);
strcpy(recvNode.body,bodytemp);
if(svr_send_queue->Insert(&recvNode) == FALSE){
}
strcpy(recvNode.operate_id,"007"); //用户准备好
if(svr_send_queue->Insert(&recvNode) == FALSE){
}
MessageBox("添加成功");
}
void RobotDlg::OnButtonModify(){
char sqlbuf[1024]={0};
int gradei;
int usersexi;
int roomidi;
int orienti;
CString picturestr;
CString bodytemp;
int colorflagstr;
NODE_STRUCT recvNode;
memset(&recvNode,0,sizeof recvNode);
strcpy(recvNode.err_code,"000");
strcpy(recvNode.service_id,"001");
strcpy(recvNode.ctrlmsg,"0");
UpdateData(TRUE);
gradei = combo_level.GetCurSel()+1;
usersexi = combo_sex.GetCurSel();
roomidi = combo_roomnum.GetCurSel()+1;
orienti = combo_orient.GetCurSel();
if(usersexi==0){
picturestr = "00";
}else{
picturestr = "01";
}
if(orienti==0){
colorflagstr = 1;
}else{
colorflagstr = 2;
}
sprintf(sqlbuf,"select userid from user_info where userid = '%s'",userid);
dbp->SQLExecDirect(sqlbuf,false);
while(dbp->SQLFetch() != PBL_Error_OK){
MessageBox("该用户不存在");
dbp->SQLFreeStmt();
return;
}
dbp->SQLFreeStmt();
sprintf(sqlbuf,"update user_info set nickname='%s',picture='%s',sex='%d',age=%s \
where userid = '%s'",nicknmae,picturestr,usersexi,age,userid);
dbp->SQLExecDirect(sqlbuf,true,true);
sprintf(sqlbuf,"update gobang_robotinfo set nickname='%s',grade=%d,roomid=%d,tableid=%s,\
tableseq=%d,colorflag=%d,sex=%d,age=%s where userid = %s"
,nicknmae,gradei,roomidi,tableid,orienti,colorflagstr,usersexi,age,userid);
dbp->SQLExecDirect(sqlbuf,true,true);
recvNode.queuenum = 0 - atoi(userid);
strcpy(recvNode.operate_id,"012"); //用户退出游戏
strcpy(recvNode.body,userid);
if(svr_send_queue->Insert(&recvNode) == FALSE){
}
strcpy(recvNode.operate_id,"000"); //获取房间列表
strcpy(recvNode.body,userid);
if(svr_send_queue->Insert(&recvNode) == FALSE){
}
strcpy(recvNode.operate_id,"002"); //获取大厅信息
bodytemp.Format("%s;%d",userid,roomidi);
// bodytemp = userid + ";" + roomidstr;
strcpy(recvNode.body,bodytemp);
if(svr_send_queue->Insert(&recvNode) == FALSE){
}
strcpy(recvNode.operate_id,"004"); //用户坐下
bodytemp.Format("%s;%d;%s;%d",userid,roomidi,tableid,orienti);
// bodytemp = userid + ";" + roomidstr+ ";" + tableid+ ";" + orientstr;
strcpy(recvNode.body,bodytemp);
if(svr_send_queue->Insert(&recvNode) == FALSE){
}
strcpy(recvNode.operate_id,"007"); //用户准备好
if(svr_send_queue->Insert(&recvNode) == FALSE){
}
MessageBox("修改成功");
}
void RobotDlg::OnButtonDelete(){
char sqlbuf[1024]={0};
CString gradestr;
CString usersexstr;
CString roomidstr;
CString orientstr;
CString picturestr;
CString bodytemp;
NODE_STRUCT recvNode;
memset(&recvNode,0,sizeof recvNode);
strcpy(recvNode.err_code,"000");
strcpy(recvNode.service_id,"001");
strcpy(recvNode.ctrlmsg,"0");
UpdateData(TRUE);
gradestr = CString(combo_level.GetCurSel()+1);
usersexstr = combo_sex.GetCurSel();
roomidstr = CString(combo_roomnum.GetCurSel()+1);
orientstr = CString(combo_orient.GetCurSel());
if(strcmp(usersexstr,"0")==0){
picturestr = "00";
}else{
picturestr = "01";
}
sprintf(sqlbuf,"select userid from user_info where userid = '%s'",userid);
dbp->SQLExecDirect(sqlbuf,false);
while(dbp->SQLFetch() != PBL_Error_OK){
MessageBox("该用户不存在");
dbp->SQLFreeStmt();
return;
}
dbp->SQLFreeStmt();
recvNode.queuenum = 0 - atoi(userid);
strcpy(recvNode.operate_id,"012"); //用户退出游戏
strcpy(recvNode.body,userid);
if(svr_send_queue->Insert(&recvNode) == FALSE){
}
sprintf(sqlbuf,"delete from gobang_robotinfo where userid = '%s'",userid);
dbp->SQLExecDirect(sqlbuf,true,true);
sprintf(sqlbuf,"delete from user_info where userid = '%s'",userid);
dbp->SQLExecDirect(sqlbuf,true,true);
sprintf(sqlbuf,"delete from gobang_hallinfo where userid = '%s'",userid);
dbp->SQLExecDirect(sqlbuf,true,true);
sprintf(sqlbuf,"delete from gobang_userinfo where userid = '%s'",userid);
dbp->SQLExecDirect(sqlbuf,true,true);
MessageBox("删除成功");
}
void RobotDlg::OnClickListRobotinfo(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
NMLISTVIEW* plv = (NMLISTVIEW*)pNMHDR;
CString str;
int nItem = plv->iItem;
str = list_robotinfo.GetItemText(nItem,0);
userid = str;
str = list_robotinfo.GetItemText(nItem,1);
nicknmae = str;
str = list_robotinfo.GetItemText(nItem,2);
combo_level.SetCurSel(atoi(str)-1);
str = list_robotinfo.GetItemText(nItem,3);
age = str;
str = list_robotinfo.GetItemText(nItem,4);
combo_sex.SetCurSel(atoi(str));
str = list_robotinfo.GetItemText(nItem,5);
combo_roomnum.SetCurSel(atoi(str)-1);
str = list_robotinfo.GetItemText(nItem,6);
tableid=str;
str = list_robotinfo.GetItemText(nItem,7);
combo_orient.SetCurSel(atoi(str));
UpdateData(FALSE);
*pResult = 0;
}
void RobotDlg::OnCancel(){
CDialog::OnCancel();
dbp->DisConnect();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -