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

【原文地址】
VB和Dev-C++合作——手把手教你寫GUI程序 - 子清行 - 博客頻道 - CSDN.NET  http://blog.csdn.net/redraiment/article/details/4444278
 

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

標籤: vbdll語言commandswingmfc
 13758人閱讀 評論(5) 收藏 舉報
 分類:

目錄(?)[+]

聲明

此文的讀者定爲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. 將一下代碼複製到代碼窗口裏
    Private Declare Sub HelloWorld Lib "hello.dll" ()
    
    Private Sub Command1_Click()
    
        HelloWorld
    
    End Sub
    
  3. 點擊“文件”-“生成工程1.exe”,路徑選擇剛纔Dev-C++生成hello.dll所在的目錄。
  4. 確保“工程1.exe”和“hello.dll”兩個文件放在同一個目錄下,雙擊運行“工程1.exe”。
  5. 點擊按鈕“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”和主站點上的本文原始地址。

聯繫方式

我的郵箱,歡迎來信([email protected]
我的Blogger(子清行
我的Google Sites(子清行
我的CSDN博客(夢婷軒
我的百度空間(夢婷軒

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章