C++Builder的幾則小應用 (轉)

worldblog發表於2008-01-28
C++Builder的幾則小應用 (轉)[@more@]

這是第一篇帖文,從網上找的。以下是原文。

C++Builder的幾則小應用
(望月 2001年09月19日 19:00)

Borland C++BUILDER(BCB)是一種面向的、視覺化的應用開發環境。該工具在建立入介面時,不必編寫程式來描述輸入或輸出介面的外觀和,只要使用工具箱的工具,在階段便可實現,是屬於一種“What you see is what you get”直觀式的設計概念。使用該工具,可以用最少的手工編寫程式碼,建立出高效的32位視窗應用程式,它提供了所有的程式開發時需要的測試,和應用配置工具,包括大規模應用程式庫,設計工具,應用程式和窗體模板以及程式設計嚮導。為了能說明C++Builder強大的開發功能,筆者下面就列舉幾則有關C++Builder在開發程式方面的小應用。

1、在程式中圖象
假設我們需要在程式中呼叫一幅事先準備好的圖象,它的名字叫tx.bmp,我們可以按照如下方法來進行呼叫:首先開啟Borland C++ Builder程式,在窗體上放置一個ImageImage1,其Picture暫為空;然後在窗體上放置一個Popup選單,編輯選單項增加“Close”項(新增程式程式碼使得啟用彈出選單時即可關閉應用程式),程式中的原始碼為:

void __fastcall TForm1::FormCreate(T *Sender)
{
Image1->Picture->LoadFromFile(".tx.bmp");//使用LoadFromFile來呼叫圖象
Width=Image1->Width;
Height=Image1->Height;
Repaint();
}

2、啟動屏保程式
如果我們給的螢幕設定了螢幕保護程式,那麼計算機在我們指定的時間內將自動螢幕保護程式,您知道這個呼叫過程是如何實現的嗎?在這裡,我們可以使用C++ Builder程式來實現這樣的功能。我們只要在C++ Builder程式中,使用SendMessage函式向傳送一個廣播訊息就可以了,具體原始碼為:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
SendMessage(HWND_BROADCAST,WM_SYMMAND,SC_SCREENSAVE,0);
}

3、動態呼叫程式
如果我們需要實現動態呼叫程式功能,就必須要藉助 函式中的LoadLibrary()和GetProcAddress()方法來調入DLL庫,並指出庫中函式位置,例如下面就是呼叫程式的一般程式碼:

HINSTANCE dd;
int _stdcall (*ddd)(void);
dd=LoadLibrary(“xxx.dll”);
ddd=GetProcAddress(dd,“test”);
Caption=IntToStr(ddd());
FreeLibrary(dd);

4、查詢本機資訊
大家知道,合理地分配使用記憶體,可以使計算機達到一個很高的執行;如何才能合理地使用分配記憶體呢?只要做到隨時瞭解當前記憶體的容量,才能為準確合理分配記憶體提供可能。為此,筆者就在這裡使用C++ Builder來幫助大家,準確獲取計算機中的記憶體資訊,下面是程式的部分原始碼:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
MEMORYSTATUS MemInfo;
MemInfo.dwLength =sizeof(MEMORYSTATUS);
GlobalMemoryStatus(&MemInfo); //GlobalMemoryStatus是獲取記憶體的主要函式
IntToStr(MemInfo.dwMemoryLoad); //顯示當前使用的記憶體
IntToStr(MemInfo.dwTotalPhys); //顯示所有的實體記憶體
IntToStr(MemInfo.dwAvailPhys); //顯示未使用的實體記憶體
IntToStr(MemInfo.dwTotalVirtual); //顯示虛擬記憶體空間大小
IntToStr(MemInfo.dwAvailVirtual); //顯示未使用的虛擬記憶體空間大小
}

5、獲取計算機中的
如果您是一位員的話,可能要經常檢視各個計算機的IP地址資訊,按照一般的方法來檢視比較繁瑣,於是我們可以使用下面的程式碼來實現自動獲取IP地址的功能:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
hostent *p;
char s[128];
char *p2;
gethostname(s, 128);//獲取指定計算機的名字
p = gethostbyname(s);
Memo1->Lines->Add(p->h_name);
p2 =_ntoa(*((in_addr *)p->h_addr)); //獲取指定計算機的IP地址
Memo1->Lines->Add(p2);
}

6、取得Memo的行和列
如果我們要使用C++ Builder來獲取Memo的行和列資訊,可以按照如下步驟來進行:首先在C++ Builder中重新建立一個應用,並在窗體Form1上新增兩個Tlabel元件名為Label1,Label2;然後再新增兩個Tbutton元件名為Button1,Button2,並新增一個Tmemo元件名為Memo1,最後在程式碼編輯器中輸入下面的原始碼:

void __fastcall TForm1::Button1Click(Tobject *Sender)
{
Label1→Caption=SendMessage(Memo1→Handle,EM_LINEFROMCHAR,-1,0)+1;
}
void __fastcall TForm1::Button2Click(Tobject *Sender)
{
Label2→Caption=Memo1→SelStart-SendMessage(Memo1→Handle,EM_LINEINDEX,-1,0)+1;

(責任編輯 勝喜 to:chensx@staff.ccidnet.com">chensx@staff.ccidnet.com)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998639/,如需轉載,請註明出處,否則將追究法律責任。

相關文章