一般,windows程序員在編寫(xiě)windows程序時(shí),為了降低編程的難度和縮短編程的時(shí)間,經(jīng)常會(huì )調用各種windows資源,如畫(huà)筆,寫(xiě)字板等資源。對于其他的程序設計語(yǔ)言,我們一般使用 api函數來(lái)實(shí)現著(zhù)一功能,那么在borland c++ builder 上我們又如何實(shí)現呢?最近筆者在編寫(xiě)電子屏顯示軟件時(shí),用api函數實(shí)現了該功能。
現以使用api函數調用windows畫(huà)筆為列,把該方法介紹如下:
1、啟動(dòng) c++ builder 進(jìn)入菜單file|new application創(chuàng )建一個(gè)新項目,將該項目存盤(pán),得到含有一個(gè)主窗口的項目。在主窗口上添加一個(gè)打開(kāi)圖片對話(huà)框控件OpenPictureDialog1和按扭控件Button1。
2、在主文件的文件頭添加#include
3、在頭文件的private 處添加 char BmpExec[100];
4、在Button1的OndbClick事件處添加如下代碼:
| void __fastcall TMainForm1::Button1Click(TObject *Sender)
{ AnsiString TempName; FileClose(FileCreate("testest.bmp")); FindExecutable("testest.bmp",NULL,BmpExec);//返回可執行文件名的句柄// DeleteFile("testest.bmp");//刪除文件// OpenPictureDialog1->DefaultExt = String("BMP"); OpenPictureDialog1->Filter ="圖片文件(*.bmp)|*.bmp"; OpenPictureDialog1->FileName="*.bmp"; if (OpenPictureDialog1->Execute()) { if (OpenPictureDialog1->FileName.AnsiPos(".") openpicturedialog1-> //給沒(méi)有擴展名的文件加上擴展名,此時(shí)FileName為文名的全名// CloseHandle(CreateFile(OpenPictureDialog1->FileName.c_str(),//參數1 為文件名// GENERIC_WRITE, //參數2 文件的訪(fǎng)問(wèn)模式:設置為文件可寫(xiě)并且文件指針// FILE_SHARE_WRITE, //參數3 文件的共享模式:如果寫(xiě)訪(fǎng)問(wèn)允許文件可被修改// NULL, //參數4 安全屬性: 用缺省的操作符// OPEN_ALWAYS, //參數5 如果文件不存在,如何創(chuàng )造文件:設置為存在則打開(kāi),如不存在則新建// FILE_ATTRIBUTE_NORMAL, //參數6,文件的屬性和標志,文件沒(méi)有其他的屬性// ));//關(guān)閉打開(kāi)的事物句柄// //以上的代碼使文件設置為共享,從而使下面的代碼順利執行// TempName=AnsiString(BmpExec); //把char 轉換成AnsiString// TempName=TempName+" "+OpenPictureDialog1->FileName;//應用程序名+相應的被處理文件// WinExec(TempName.c_str(),SW_SHOWNORMAL);//執行應用程序// } } |
5、編譯執行。當雙激按扭Button1時(shí),程序出現打開(kāi)圖片文件的對話(huà)框,選則要打開(kāi)的bmp文件,便可以調用windows的畫(huà)筆打開(kāi)自己選定的bmp文件了。
聯(lián)系客服