前不久,Inprise公司(原Borland公司)正式公布了Delphi 5.0版,其開發向導中支持了“控制面板程序(CPL)”框架的生成,利用它可以快速、方便地開發CPL程序。那麼是否能在現有的Borland C++ Builder 中開發CPL程序呢?
CPL程序是動態鏈接庫(DLL)的一種變形,只不過擴展名為.cpl、入口函數為CPlApplet()而不是DllEntryPoint()罷了(並不是不要DllEntryPoint(),不然不能編譯)。我們只需在BCB4.0中選擇“File|New...”打開開發向導,選擇“DLL”生成一個DLL框架,並在其中加入一個函數CPlApplet()就可以了。為了快速地說明問題,筆者先給出一個最簡單的例子程序,然後再來解說。
#include <vcl.h>
#include <cpl.h>
#include <cplext.h>
#pragma hdrstop
USERES("my.res");//這是我加入的資源文件,其中有一個圖標
extern"C" __declspec(dllexport) long CALLBACK __stdcall CPlApplet(HWND hwndCPL,UINT uMsg,LPARAM lParam1,LPARAM lParam2);
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
return 1;
}
long CALLBACK __declspec(dllexport) __stdcall CPlApplet(HWND hwndCPL,UINT uMsg,LPARAM lParam1,LPARAM lParam2)
{
LPNEWCPLINFO mycpl;//LPNEWCPLINFO結構可在CPL.H頭文件中查看
long result=0;
switch (uMsg)//判斷傳來的信息
{
case CPL_INIT:// 第一個信息,在控制面板調入時產生
result=1;
break;
case CPL_GETCOUNT://第二個信息,在控制面板調入時產生
result=1;
break;
case CPL_INQUIRE://第三個信息,當控制面板查詢時產生
result=0;
break;
case CPL_NEWINQUIRE://第三個信息,當控制面板查詢時產生
mycpl=LPNEWCPLINFO (lParam2);// 將lParam2中的指針傳給mycpl
mycpl->dwSize=sizeof(NEWCPLINFO);
mycpl->dwFlags=0;//標志變量 一般設為0
mycpl->dwHelpContext=0;//幫助句柄一般設為0
mycpl->lData=0;
mycpl->hIcon=(HICON)LoadIcon(HInstance,"MyIcon");
mycpl->szHelpFile[0]='\0';//幫助文件
StrCopy(mycpl->szName,"BCB控制面板演示程序");//在圖標下顯示的說明文字
StrCopy(mycpl->szInfo,"用BCB開發自己的控制面板程序");// 在控制面板狀態欄中顯示的說明信息
result=0;
break;
case CPL_DBLCLK://當圖標被雙擊時
ShowMessage("這是一個CPL試驗程序");
result=0;
break;
case CPL_STOP://當用戶關閉自已的程序時產生
result=1;
break;
case CPL_EXIT:// 當控制面板關閉時產生,系統使用FreeLibrary()釋放
result=0;
break;
default:
break;
}
return result;
}