VC课程问题解答

VC课程问题解答
发布时间: 2005-4-5 10:11:55 被阅览数: 2864 次
Q:我刚开始学VC++,请问学VC++需要记忆哪些方面的内容?MFC的内容很多,这些都必须要记下来吗?
A:学VC++首先要记忆的是C的基本语法,这之后要熟练了解和掌握C++的语法,关键是类。这是很关键的,而且很枯燥。掌握以上内容之后,就可以按照VC++课本来写一些例子了。时间一长,一些MFC类库就会记住了。我个人认为不必死记MFC的类库,要是那样,很难掌握VC++。
学习VC++首先得搞清楚VC++向导生成的标准EXE文件中用到的CmainFrame,CwinApp,Cdocument,CView类的基本内容及它们的关系,其次就是搞清CDC,Cview,Cobject,,CWnd这几类,建议你多看一下VC++的课本。

Q:请问现在编程功能最强大的语言是什么语言?,听说“C语言”无所不能!是这样的吗?
A:说它无所不能,可能有些夸张,因为许多语言和开发工具都有其擅长的领域。例如做个网站,C就不如ASP简单。但是C语言的适用性比较广,特别是像驱动程序这样的系统领域,C语言也可以应用。

Q:C语言与C++是什么关系,它们有什么特点,两者哪一个更好?
A:C语言可以被看作C++的一个子集,也就是说可以使用C++编译器来编译C语言程序。

Q: C语言编辑系统必须运行在DOS平台上吗,有没有运行在Windows平台上的,如果有,功能相同吗?
A:DOS下经常使用Turbo C,而Windows下通常使用Visual C++和Borland C++ Builder,这些系统的价格从千元到万元,这要看你购买的版本。在网上也可以找到许多免费的C/C++编译器,只是不如商业的好用。

Q:如何看VC源程序,VC的源程序打开后往往有好几个文件,如何进行观看?
A:VC++的程序打开后,一般先看最左边的Class列表,看看其中哪个类是从CWinApp继承来的,哪个类就是启动的类,可以看看InitInstance是如何建立主窗体的,再顺着主窗体类一层层看下去。
有时也可以运行一下程序,看看对哪个窗体感兴趣,然后在资源列表中找到该窗体,点击ClassWizard,看它对应的类是哪个,然后再看那个类的有关成员。
MFC的基类就那么几个,看的程序多了,你就会发现很容易找到头绪。

Q: 请问VC中的Debug版和Release版本的程序有什么区别?用一个Debug版的OCX控件注册时,是不是还需要VC中的某些文件?如果是,这些文件包括些什么?
A:Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M)。至于是否需要DLL支持,主要看你采用的编译选项。如果是基于ATL的,则Debug和Release版本对DLL的要求差不多。如果采用的编译选项为使用MFC动态库,则需要MFC42D.DLL等库支持,而Release版本需要MFC42.DLL支持。

Q:使用MFC"WinMain()"的主函数是否可以修改,因为我要创建一个图片界面。VC++6.0是否可以把“H文件”中的代码加入“CPP文件”中,从而可以删除“H文件”。
A:一般不修改WinMain函数,而修改CWinApp的InitInstance函数,这个函数负责建立窗口和初始化,作用和WinMain类似。理论上可以删除.h,而把所有定义写如.cpp文件,不过通常这样做没有任何好处,反有好多麻烦。MFC程序不能把AppWizard建立的.h的内容写入.cpp,因为这样可能会导致ClassWizard出错。

Q:请问在SQL Server中是否可以通过存储过程操作Oracle数据库?
A:在SQL里操作Oracle:
a建一个ODBC指向Oracle;
b在SQL Server里建一个链接服务器指定上面的ODBC,填上[安全性]里的远程帐号;打开[表]看是否正确;
c在SQL语句里的用法,例:select * from 链接服务器名.Oracle用户名.表名,就可以访问和操作了。

Q:在ASP中,使用DBF库在更新时,程序出错说无法更新库,库为只读,不知道是什么原因,可是我的库文件不是只读啊。请指教。
A:如果用的是数据环境,你有可能将Connection 的 Access项设成了Read-only。 如果是通过Recordset来更改数据的,则问题可能是出在 Recordset 的打开方式上。因为默认的打开方式为 Forward-only, 需将打开方式设为 Keyset 或 Dynamic。

Q:我在Windows 2000 Server系统下安装了SQL Server 7,装完后与书上的界面有些不同,所以我想删除后重新安装,可卸载程序时显示:/C:Program file/common file/system/mssearch/bin/mssearch.exe'is in use 可是我没有运行任何程序。请问是什么原因。
A:SQL Server可能已经开始运行了,因此你不能正确卸载,你需要:
1、在SQL Server的服务管理器中停掉SQL Server的所有服务。
2、在Windows 2000的任务管理器中停掉sqlmangr.exe进程。
这样你就可以卸载了!

Q:在VB中如何实现把当前库或表转换为另外一种数据库文件。例如把MY.MDB中的表MYTABLE1转换为EXCEL中的表或DBF文件。
A:VB支持SQL语言的SELECT ... INTO语句,这使得你可以将一种数据库轻松地转换为另一种格式,也可以在同一种格式的数据库中进行转换。下面我们以将.MDB格式转换为Excel形式为例来说明一下。
首先,打开.MDB文件。如
Dim dbSource As Database
Set dbSource = OpenDatabase("MY.MDB")
然后使用SELECT ... INTO语句转换文件。
dbSource.Execute("SELECT * INTO my IN 'c:/documents/xldata.xls' 'EXCEL 5.0;' FROM table1")
这里,IN子句后面是转换后的数据库文件名,EXCEL 5.0;'表示Excel 5.0/95格式,也可以是其他VB支持的格式
SELECT ... INTO建立新的表或数据库,而如果要将数据追加到已经存在的数据库中,可以使用INSERT ... INTO语句。

Q:我是一个VB初级学员,我正在编一个简单的学生信息管理程序,我现在只会用以*.mdb结尾的数据库软件。所有的数据我都放在*.mdb数据库里面,我现在想在软件上添加一个数据备份和一个数据恢复功能,但我不知怎么去做,也不知道用什么命令来实现,请简单讲一下吗?
A:一个简单的方法:
数据备份就是把当前mdb文件复制到另一个目录;
数据恢复就是把备份的mdb文件覆盖到当前目录。
VB指令:FileCopy 源文件路径, 目的文件路径

Q: 在SQL Server数据库中, 如何修改表的结构(SQL Server好像禁止修改 )?
A:在SQL Server数据库中, 不能通过VB程序函数调用修改表的结构,你只能在SQL Server的工具中进行修改。

Q:如果一个桌面数据库文件(如FoxPro、Access等文件)没有后缀名,怎样通过编程方式判别这个数据库文件的数据库类型?
A:你可以试着按普通二进制文件的方式打开文件,看看有没有可以供识别的字符。如Access数据库从第5个字节开始为“Standard Jet DB”。而DBF文件就比较麻烦了,因为只有第一个字节可以用来识别,不太可靠。

Q:我在VC中利用ADO控件访问多台远程服务器SQL Server数据库,发现从其中个别服务器取来的数据中汉字信息全部是乱码,不知原因何在?是VB的问题还是SQL Server的问题?
A:应该是SQL Server的版本不兼容引起的,我曾经试过,服务器用6.5,后来装了Office 2000后,读出数据全乱了,我的解决方法是将SQL Server 6.5的客户端在客户机上Setup一下或将6.5版本的sqlsvr32.dll 拷到客户机的windos/system目录下覆盖原有的文件即可。

Q:在VB中是否有 RegExp 这个函数或命令,若有怎么用?
A:VB中没有RegExp函数。RegExp实际上是VB 6/VB Scipt提供的一个对象,它可以帮助进行通配符操作。

Q:怎样用VB编写一个倒计时程序?
A:设定一个长型变量,在窗体的载入事件中为它赋初值。创建一个timer控件,设定Interval属性为响应周期,在timer1_timer中让该变量自减。然后用一个分支,若等于0则作出某种动作。例子:
Dim lTime As Long
Sub Form_ Load()
lTime = 100 ’ 100秒倒计时
Timer1.Interval=1000 ' 每秒发生一次Timer事件
End Sub
Sub Timer1_Timer()
lTime = lTime - 1
Me.Caption = "还有" + Str(lTime) + "秒"!
If lTime = 0 Then
MsgBox "时间已到!"
End If
End Sub

Q:请问在VB中如何写命令行程序,就是能在DOS窗口下显示文本的,就像QBasic写的Print语句,VB好像只能在Windows的窗口下写文本。
A:VB本身不支持控制台程序(Console application),一个简单的方法使用API函数AllocConsole。

Q:我在用VB编程时,用到符号“&",编译无法通过,提示句子没有结束。请问是什么原因,并请解释一下符号“&”的意思。
A:符号“&”在VB中是一种特殊的字符串连接操作符,同“+”类似。不同的是“+”前后的变量必须类型相同,而“&”前后的类型可以不同。我想你的情况可能是这样的:
s = "Result = " & _
nResult
不要忘了续行符“_”。

Q: VB是不是面向对象的?如果是,如何继承一个类?
A:许多人认为VB是面向对象的,因为它支持类、对象、属性、方法这些基本概念。但同C++相比,VB不支持操作符重载、友元等。
VB 5.0以后提供了一个Implements语句,它使一个类能够使用其它类的定义的过程和数据,这有些接近C++中的继承。 不过,如果你只是想在标准控件基础上加一些事件,可以使用WithEvent、Event等语句,虽然这同继承有很大不同,但已经可以实现个别在C++中通常使用类继承来完成的工作。

Q:在VB中如何对BMP文件按一定比例进行缩小与放大显示与输出?
A: 在VB中Form、PictureBox和Printer都有PaintPicture方法,它就可以满足你的要求。这个方法功能是复制图像,其基本语法如下:
object.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode
这里的Picture来自Form等的Picture属性,而x1、y1是目标区域的左上角坐标,而x2、y2是源区域的左上角坐标,width1和height1是目标区域的宽度和高度,而width2和height2是源区域的宽度和高度,如果width1=width2且height1=height2,那么就是等比例复制,你只需要选择适当的参数就可以实现缩小与放大。参数opcode是操作码,其含义可以参考Windows API中关于BitBlt和StretchBlt函数的介绍。下面是一个简单的例子:
Private Sub Form_Click()
Me.PaintPicture Picture1.Picture, 0, 0, 3500, 2000
End Sub
这个方法有一个非常好的特性:作为源对象的PictureBox可以是不可见的(Visible属性为False),这在实际中非常方便。

Q: 我在VB的主窗体要装入一幅事先选好的图片,程序运行后我可以在图片上进行修改并可以保存它,以备以后调用。请问我怎样办?
A: 你可以把Form或PictureBox的AutoDraw设为True,修改后使用VB的SavePicture语句进行存盘。这种存盘的文件为.bmp文件,颜色数与当前屏幕的色彩数相同。如果想转换为其他格式,可以参考下面的意见。
如果你的存盘要求很高,例如希望控制存盘文件的色彩、格式,只能借助于其他控件,比如ImageMan、ImagN、Lead Tools等等。

Q:在JAVA 程序里,==运算符和equals()方法有什么不同。
A:下面这道题就是对这个知识点最好的考查:
  String s1=”abc”;
  String s2=”abc”;
  If (s1==s2)
  System.out.println(“双等”);
  If (s1.equals(s2))
  System.out.println(“  equals”);
  System.out.println(“--------------------------------------------------”);
  String s1=new String(“abc”);
  String s2=new String(“abc”);
  If (s1==s2)
  System.out.println(“双等”);
  If (s1.equals(s2))
  System.out.println(“equals”);
  要求写出该程序段的输出结果。
  这道题的前半段,s1和s2引用的是同一个对象,后半段s1和s2引用的是不同的对象。
记住:new 关键字是分配新的内存空间给对象。
  此题中
  ==判断的是前后两个字符串对象的内存地址是否相同,equals()方法判断的是两个字符串对象的内容是否相同。所以程序的输出是双等
  equals
  -----------------
  equals

Q:Java中如何调用C++的类?在JDK,标准C++,Windows 2000环境下。
A:关于使用,你自己可以看看JNI的文档。

Q:构造函数是怎么回事啊?
A:函数是对象创建和初始化的一个函数,这个函数没有返回类型,但是可以有修饰符,例如String对象的构造函数public String()。

Q:JAVA现在支持哪些图象格式、媒体格式?
A:支持GIF、JPG 和PNG。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值