---------------------------------------代码每天都要敲,总结每次都要写------------------------------------距离上一次奋力写代码已过了一星期,期间经过了二级考试,感觉并无收获。并且我认为C++跟C的关系不是太大,C++很好的人C不一定很好。上一次做了一个数据库测试的软件,因为知识的匮乏,过程中出现各种bug,好在一步一步解决了,还是挺有成就感的。今天就一个简单的数据库测试软件总结几个问题:
1 全局变量的定义和使用
2 跨类调用成员函数的方法
3 设置软件图标及名称
4 设置控件关联变量
5 让自己的写的软件能在另一台电脑上运行
程序主界面以及各功能界面
(主界面下面被打上我们电工院的标志^^,HAHA)
功能:连接数据库,读取数据库数据,添加、修改、删除数据库数据。
-------------------------------------------------------准备工作----------------------------------------------首先要想能与数据库通信必须要在工程文件中包含三样东西:
在debug/release文件中包含libmysql.dll动态连接库文件,专门负责程序与数据库的连接
在工程文件下包含必须的库文件:
对应的几个类:
添加好文件后,还需要在代码中添加。 在stdafx.h文件中添加下列代码:
// mysql 连接库文件
#include
#pragma comment(lib,"ws2_32.lib")//这句关键;
#include "mysqlinclude\\mysql.h"
#pragma comment(lib, "mysqllib\\libmySQL.lib")
//#include
接下来在CTest2Dlg.h文件中添加数据库句柄,功能函数。。。
--------------------------------------------------------正题--------------------------------------------------
这些都是准备工作,下面进入整题:
//////////////////
1 全局变量的定义。
对于整个工程来言,我需要一个存放光标选取的行数的变量nSel。于是我在CTest2Dlg.cpp(主对话框)中定义 intnSel,在CTest2Dlg.h中声明,即extern intnSel。据接下来如果你需要调用该全局变量的时候,就可以包含主对话框头文件即
CTest2Dlg.h。但一般来说大家都会包含这个头文件。
//////////////////
2 跨类调用成员函数的方法
对与我的这个程序,当我在插入、更新的自窗口中点击确定按钮的时候就需要调用主窗口的成员函数,这就涉及到了子窗口调用父窗口的成员函数,成员变量的问题。这问题抱我折磨的不轻,其实也很简单。首先在
CTest2Dlg.cpp中定义一个指向父窗口的指针CTest2Dlg*g_test2dlg;定义变量也可以,只不过我后面需要用到指针。因为几乎每一个子窗口都需要用到父窗口的成员函数/变量,因此还需要在CTest2Dlg.h中声明他为全局变量extern CTest2Dlg *g_test2dlg;注意:此时的g_test2dlg只是一个空指针,还需要g_test2dlg= this;然后在子窗口的类中都包含主窗口类的头文件,因此就可以方便调用了。
接下父窗口又要用到子窗口中的变量了,因为我的功能函数即更新函数在主窗口类中定义,我需要获取子窗口两个编辑框中的数据并把它显示在列表中。即在CTest2Dlg中调用CUpdateDlg中的变量。此时需要在CTestDlg2.h中定一个类对象CUpdatadalgupdatadlg,并包含Updatadalg.h,在Updatadalg.cpp中包含CTest2Dlg.h,其实定义的位置不一定,关键是要包含到,也不能重复。
//////////////////
设置软件图标及名称:
主要说一下设置最后生成的程序图标的改动。
默认图标是这样的:
改动后是这样的:
两方面,在资源管理中,标号最小的图标就是最后显示在桌面上的图标。当然首先要导入需要的图标了。然后再CTestDlg的构造函数中这一句m_hIcon= AfxGetApp()->LoadIcon(IDI_ICON2);中改一下标号即IDI_ICON2,这样主对话框和桌面的图标就一直了,如果你只改了第二步的话,就只能改变主对话框的图标。其他子对话框的话,只需要在初始化函数中加入一下代码
HICON icon;
//加载图标
icon = AfxGetApp()->LoadIcon(IDI_ICON2);
//设置图标
SetIcon(icon,false);//大图标则用TRUE
/////////////////////
4 设置关联变量
关于这一点我想说的是设置好关联变量后,别忘了在使用后刷新一下控件,让控件与变量的值交换。
要将变量的值显示在控件上就用UpdateData(FALSE);
反之要将输入在控件的值刷入变量则用UpdateData(TRUE);
这个虽然简单但是很容易忘,忘了就得到处找bug。
/////////////////////
5让自己的写的软件能在另一台电脑上运行
自己开发了一个小软件,想测试一下。于是就打算发到另外一台电脑上运行一下。第一次我直接把exe文件发了过去,结果提示缺少“libmysql.dll文件,无法运行!”。于是我就把整个Debug文件发了过去,可行。但是这个要是对于一个正式发布的软件的话,每次都得让用户下载整个文件夹?当然不是,我百度了一下,vc6.0有自带的生成安装包的功能,但不知什么原因我没找到,解决好再更新吧!