微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VB和Dev-C++合作——手把手教你写GUI程序

声明

此文的读者定为C语言初学者。此文介绍的技巧适用于开发迷你型项目或自娱自乐的玩具程序,正规的项目中可能不会采用。读者可以抱着茶余饭后休闲娱乐的心态来围观,至于CLI、GUI等名词解释请参看百度百科。转载请保留此声明和原作者redraiment,谢谢!

正文

诱人的GUI程序

程序的作用就是化繁为简,让计算机高效地帮我们完成枯燥的工作。写程序最大的动力就是你精心设计的程序能获得大家的认可、大众的好评,这其中伴随着发布程序给大家使用。

在C语言编写的操作系统(比如UNIX、Windows等)上,C语言可以说是“无所不能”。但很多初学者发现,即便自己把C语言教材从头啃到尾,依然只能写出命令行下的程序。程序是CLI还是GUI本无可厚非,对我们程序员来说更重要的是程序本身提供的功能嘛,而且CLI相对于GUI还更灵活一些。也许你可以尝试一下把程序发送给一个非计算机科班出身的朋友,估计得大费唇舌来解释程序如何运行,可能最后还落得一个“不方便”的抱怨。撇开这些不说,至少一个活泼的桌面图标也比死气沉沉的终端图标更吸引人。

但编写GUI程序从来不是一件容易的事情,MFC也好、Swing也罢,都是一堆烦人的接口。用VB可以屏蔽这些细节,界面设计是所见即所得的,拖拖拽拽就能堆出一个像样的界面。本文的原理就是用VB来设计前台界面,C做后台逻辑处理。实现方法就是将C程序打包成DLL文件,由VB程序来调用

所需软件

Dev-C++ 4.9.9.2或以上版本,VB 6.0精简版。这两款软件在华军软件园都能下载到,合起来大小也就15MB左右。如果你有完整版的VB当然更好,不过有精简版的也够用了。

Dev-C++生成DLL的方法

  1. 打开Dev-C++;
  2. 点击“文件”-“新建”-“工程”,工程类型选择“DLL”;
  3. 语言必须选择“C”,不能选择“C++”;
  4. 为工程取一个名字,比如“hello”。确定后会自动生成“dllmain.c”和“dll.h”两个文件
  5. “dllmain.c”里自带一个函数“DLLIMPORT void HelloWord ()”,但为了能在VB里调用,需要在DLLIMPORT后面添加一个__stdcall”,即“DLLIMPORT __stdcall void HelloWord ()”,“dll.h”文件中也做同样的修改。没有写“__stdcall”的话会弹出“DLL调用约定错误错误号:49”,所以请务必小心。
  6. 保存文件后,按Ctrl+F9编译。就会在工程的目录下生成一个hello.dll。

用VB设计程序界面

  1. 打开VB;
  2. 新建一个“标准EXE”工程;
  3. 一个按钮控件(工具箱的第三行第二列)到界面上,如下图。

在VB中调用DLL里的函数

在VB中调用DLL里的函数,首先要声明才可调用。声明的格式是

[Public|Private] Declare [Sub|Function] 函数名 Lib "DLL路径,可以是相对路径,也可以是绝对路径" (ByVal或ByRef等参数列表) [as 返回值类型]
  1. 双击VB的窗口界面,打开代码窗口;
  2. 将一下代码复制到代码窗口里
  3. Private Declare Sub HelloWorld Lib "hello.dll" ()
    
    Private Sub Command1_Click()
    
        HelloWorld
    
    End Sub
    
  4. 点击“文件”-“生成工程1.exe”,路径选择刚才Dev-C++生成hello.dll所在的目录。
  5. 确保“工程1.exe”和“hello.dll”两个文件放在同一个目录下,双击运行“工程1.exe”。
  6. 点击按钮“Command1”,就会弹出一个窗口,显示“Hello World from DLL!”则表示调用DLL成功!如下图

现在,你可以自由发挥来编写丰富多彩的GUI程序了!

附录A:C参数在VB中的声明

C语言的字符串要特殊处理

char *: ByVal args As String
C参数在VB中的声明对照表
C类型 VB类型
short Integer
int Long
long Long
UINT Long
ULONG Long
WORD,DWORD Long
WParaM,LParaM Long
WMSG,UMSG Long
HRESULT Long
BOOL Boolean
COLORREF Long
HWND,HDC,HBrush,HKEY,等等. Long
LPSTR,LPCSTR String
LPWSTR,OLECHAR,BSTR String
LPTSTR String
VARIANT_BOOL Boolean
unsignedchar Byte
BYTE Byte
VARIANT Variant

版权声明

本人的所有原创文章皆保留版权,请尊重原创作品。
转载必须包含本声明,保持本文完整,并以超链接形式注明原始作者“redraiment”和主站点上的本文原始地址。

联系方式

我的邮箱,欢迎来信(redraiment@gmail.com
我的Blogger(子清行
我的Google Sites(子清行
我的CSDN博客梦婷轩
我的百度空间(梦婷轩

原文地址:https://www.jb51.cc/vb/262767.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐