資源簡介
本例程是在CVI自帶的simple添加調用mydll.dll的函數MyDLLCdeclFunction() 網上和CVI的例程很少,一般為調用LIB實例,但很多dll都是以*.dll提供的,故本例程很實用。
本例程主要是調用了三個Windows API函數LoadLibrary(),GetProcAddress(),FreeLibrary()

代碼片段和文件信息
/*?A?simple?example?of?using?a?uir?in?a?dll?created?both?in?cvi?or?an
?*?external?compiler.
?*/
/*?Include?files?needed?to?compile?DLL?*/
#include?
#include??????/*?needed?if?linking?DLL?in?external?compiler;?harmless?otherwise?*/
#include?
#include?“dlluir.h“
static?long?int?status?=?0;
static?int?lightVal?=?0?panelHandle;
BOOL?__stdcall?DllMain?(HINSTANCE?hinstDLL?DWORD?fdwReason?LPVOID?lpvReserved)
{
?????/*?The?DllMain?function?is?called?when?ever?the?DLL?is?loaded?and????*/
?????/*?unloaded.?Place?Initialization?code?for?the?DLL?in?this?function.?*/
????if?(fdwReason?==?DLL_PROCESS_ATTACH)?{
????????/*?Place?any?initialization?which?needs?to?be?done?when?the?DLL?*/
????????/*?is?loaded?here.?*/
????????if?(InitCVIRTE?(hinstDLL?0?0)?==?0)???????/*?needed?if?linking?DLL?in?external?compiler;?harmless?otherwise?*/
????????????return?0;???/*?out?of?memory?*/
????????status?=?100;
????}?else?if?(fdwReason?==?DLL_PROCESS_DETACH)?{
????????/*?Place?any?clean-up?which?needs?to?be?done?when?the?DLL?*/
????????/*?is?unloaded?here.?*/
????????CloseCVIRTE?();?????/*?needed?if?linking?DLL?in?external?compiler;?harmless?otherwise?*/
????}
????/*?return?FALSE?to?abort?if?initialization?fails?*/
????return?TRUE;
}
BOOL?__stdcall?DllEntryPoint?(HINSTANCE?hinstDLL?DWORD?fdwReason?LPVOID?lpvReserved)
{
????return?DllMain(hinstDLL?fdwReason?lpvReserved);
}
void?DLLEXPORT?RunDllUI?(void)
{
????/*?Call?this?function?from?the?appropriate?place?in?your?code?*/
????/*?to?load?and?display?startup?panels.????????????????????????*/
????panelHandle?=?LoadPanelEx?(0?“dlluir.uir“?PANEL?__CVIUserHInst);
????DisplayPanel?(panelHandle);
????RunUserInterface?();
}
int?CVICALLBACK?CloseUICallback?(int?panel?int?control?int?event
????????void?*callbackData?int?eventData1?int?eventData2)
{
????switch?(event)?{
????????case?EVENT_COMMIT:
????????????HidePanel(panelHandle);
????????????DiscardPanel(panelHandle);
????????????QuitUserInterface(0);
????????????break;
????}
????return?0;
}
int?CVICALLBACK?LightSwitchCallback?(int?panel?int?control?int?event
????????void?*callbackData?int?eventData1?int?eventData2)
{
????switch?(event)?{
????????case?EVENT_COMMIT:
????????????GetCtrlVal?(panelHandle?PANEL_BINARYSWITCH?&lightVal);
????????????SetCtrlVal?(panelHandle?PANEL_LED?lightVal);
????????????break;
????}
????return?0;
}
long?int?DLLEXPORT?__stdcall?MyDLLStdcallFunction(LPSTR?buffer)
{
?????MessageBox(NULL?buffer?“DLL?MessageBox?called?from?MyDLLStdcallFunction“?MB_OK);
?????status?=?200;
?????return??(status);
}
long?int?DLLEXPORT?MyDLLCdeclFunction(LPSTR?buffer)
{
?????MessageBox(NULL?buffer?“DLL?MessageBox?called?from?MyDLLCdeclFunction“?MB_OK);
?????status?=?300;
?????return??(status);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????.......????????57??2008-05-27?19:53??cvidlldemo\cvibuild.mydll\dependencies.bri
????.......???????928??2008-05-27?19:53??cvidlldemo\cvibuild.mydll\resources.res
????.......??????1127??2011-08-28?22:07??cvidlldemo\cvibuild.mydll\build.ini
????.......???????204??2011-08-28?22:08??cvidlldemo\cvibuild.simple\dependencies.bri
????.......????298036??2011-08-28?22:08??cvidlldemo\cvibuild.simple\resources.res
????.......???2868586??2011-08-28?22:08??cvidlldemo\cvibuild.simple\simple.nidobj
????.......??????7637??2011-08-28?22:09??cvidlldemo\cvibuild.simple\build.ini
????.......??????1361??2006-11-06?10:00??cvidlldemo\dlluir.h
????.......??????2216??2006-11-06?10:00??cvidlldemo\dlluir.uir
????.......??????2869??2006-11-06?10:00??cvidlldemo\mydll.c
????.......???1213417??2008-05-27?19:53??cvidlldemo\mydll.cdb
????.......??????2684??2008-05-27?19:16??cvidlldemo\mydll.cws
????.......????221184??2008-05-27?19:53??cvidlldemo\mydll.dll
????.......???????339??2006-11-06?10:00??cvidlldemo\mydll.h
????.......??????3368??2008-05-27?19:53??cvidlldemo\mydll.lib
????.......??????3724??2006-11-06?10:00??cvidlldemo\mydll.prj
????.......????????76??2006-11-06?10:00??cvidlldemo\readme.txt
????.......??????3890??2008-05-27?19:39??cvidlldemo\simple.c
????.......??????4773??2008-05-27?23:25??cvidlldemo\simple.cws
????.......??????3899??2008-05-27?19:32??cvidlldemo\simple.prj
????.......????557056??2011-08-28?22:08??cvidlldemo\SIMPLE.exe
????.......???3633568??2011-08-28?22:08??cvidlldemo\SIMPLE.cdb
????.......??????3207??2011-08-28?21:12??LabWindowsCVI調用DLL實用例程?.txt
?????目錄??????????0??2008-05-27?23:20??cvidlldemo\cvibuild.mydll
?????目錄??????????0??2008-05-27?23:25??cvidlldemo\cvibuild.simple
?????目錄??????????0??2008-05-27?23:26??cvidlldemo
-----------?---------??----------?-----??----
??????????????8834206????????????????????26
- 上一篇:完整美團餓了么外賣紅包源碼
- 下一篇:MediaInfo_GUI 圖形化的界面
評論
共有 條評論