基于VC6.0的MFC应用程序开发中的一…

---------------------------------------代码每天都要敲,总结每次都要写------------------------------------距离上一次奋力写代码已过了一星期,期间经过了二级考试,感觉并无收获。并且我认为C++跟C的关系不是太大,C++很好的人C不一定很好。上一次做了一个数据库测试的软件,因为知识的匮乏,过程中出现各种bug,好在一步一步解决了,还是挺有成就感的。今天就一个简单的数据库测试软件总结几个问题:

1 全局变量的定义和使用

2 跨类调用成员函数的方法

3 设置软件图标及名称

4 设置控件关联变量

5 让自己的写的软件能在另一台电脑上运行

 

程序主界面以及各功能界面

 

基于VC6.0的MFC应用程序开发中的一…_第1张图片

  基于VC6.0的MFC应用程序开发中的一…_第2张图片

基于VC6.0的MFC应用程序开发中的一…_第3张图片

基于VC6.0的MFC应用程序开发中的一些总结

(主界面下面被打上我们电工院的标志^^,HAHA)

功能:连接数据库,读取数据库数据,添加、修改、删除数据库数据。

-------------------------------------------------------准备工作----------------------------------------------首先要想能与数据库通信必须要在工程文件中包含三样东西:

在debug/release文件中包含libmysql.dll动态连接库文件,专门负责程序与数据库的连接

在工程文件下包含必须的库文件:

对应的几个类:

基于VC6.0的MFC应用程序开发中的一…_第4张图片
 

添加好文件后,还需要在代码中添加。 在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有自带的生成安装包的功能,但不知什么原因我没找到,解决好再更新吧!

 

 


 


 

你可能感兴趣的:(vc++/c++/mfc学习)