⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sample18_dll.c

📁 机械工业出版社 Lab Windows/CVI逐步深入与开发实例源代码
💻 C
字号:
#include <cvirte.h>   
#include <windows.h>    

int __stdcall DllMain (HINSTANCE hinstDLL, DWORD fdwReason, 
                LPVOID lpvReserved)
{
	switch (fdwReason)
		{
		//动态库联接
    case DLL_PROCESS_ATTACH:
			//初始化CVI驱动引擎
        if (InitCVIRTE (hinstDLL, 0, 0) == 0)    
				return 0;	  
			break;
		//断开动态库联接
		case DLL_PROCESS_DETACH:
			//关闭CVI驱动引擎
			//释放DLL占用的内存
			CloseCVIRTE ();    
			break;
		}
		return 1;
}

//动态库入口函数
int __stdcall DllEntryPoint (HINSTANCE hinstDLL, DWORD fdwReason, 
                  LPVOID lpvReserved)
{
		return DllMain (hinstDLL, fdwReason, lpvReserved);
}


//DrawTextInWindow函数用来实现特殊字效
void __stdcall __export DrawTextInWindow(HWND theWindow, short x, short y,
             char *text, char *fontName,short pointSize, short bold, 
             short italic, short shadow, long color)
{
    HDC theDC;
    HFONT hfont, hfontOld;

    theDC = GetDC (theWindow);
    
    if (theDC) {
    
        hfont = CreateFont((int)pointSize, 0, 0, 0, (bold ? FW_BOLD : FW_NORMAL),
            (BYTE)italic, 0, 0, 0, 0, 0, 0, 0, (LPCSTR)fontName);
            
        hfontOld = SelectObject(theDC, hfont);

        SetBkMode (theDC, TRANSPARENT);

        if (shadow != 0) {
            SetTextColor(theDC, RGB(20, 20, 20));
            TextOut (theDC, x+shadow, y+shadow, (LPCSTR)text, strlen(text));
        }
        
        SetTextColor(theDC, (COLORREF)color);
        
        TextOut (theDC, x, y, (LPCSTR)text, strlen(text));

        SelectObject(theDC, hfontOld);
        
        DeleteObject(hfont);

        ReleaseDC (theWindow, theDC);
    }
}

//GetVKLock用来获得键盘上的CapsLock、NumLock、ScrollLock的锁定状态
void __stdcall __export GetVKLock(short *capLock,short *numLock,
              short *scrollLock)
{
  *capLock=GetKeyState(VK_CAPITAL);
  
  *numLock=GetKeyState(VK_NUMLOCK);
  
  *scrollLock=GetKeyState(VK_SCROLL);
  return ;
}

//ReadRegString函数用来向注册表存储字符串型键值
void __stdcall __export ReadRegString (HKEY hRootKey,char* psubKey,
                       int index ,char* tagName,int *tagNameLen,
                       char* tagValue,int *tagValueLen)
{
    HKEY hkey;
    
    RegOpenKey(hRootKey,psubKey,&hkey);
    
	if(index==-1)
	  RegQueryValue(hkey,NULL,tagValue,tagValueLen);
    else
      RegEnumValue(hkey,index,tagName,tagNameLen,0,0,tagValue,tagValueLen);
	 return;
}

//WriteRegString函数用来从注册表中读取字符串型键值
void __stdcall __export WriteRegString (HKEY hRootKey,char* psubKey,
                       int index,char* tagName, char* tagValue)
{
    HKEY hkey;
    int status,length;
    
    status=RegOpenKey(hRootKey,psubKey,&hkey);
    
	if(status)
      RegCreateKey(hRootKey,psubKey,&hkey);
      
	if(index==-1)
	 RegSetValue(hkey,NULL,REG_SZ,tagValue,length);
	else
     RegSetValueEx (hkey, tagName, 0, REG_SZ,
       (CONST BYTE *)tagValue, strlen (tagValue)+1);
	 return;
}

	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -