亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? appface.h

?? 局域網視頻聊天
?? H
字號:
/*
  File:	appface.h
  Description:	AppFace UI SDK export functions.
  Version  0.4
 
  Compatible with:
       Microsoft Windows 9x, NT, 2000, XP ,2003
       Microsoft Visual C++ 5-7
  uses no MFC
 
 *==========================================================
 * Cpyright MatinSoft Inc. 2004.11.22
 *
 * COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY
 * OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
 * THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE
 * OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED
 * CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT
 * THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
 * SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL
 * PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER
 * THIS DISCLAIMER.
 *
 * Use at your own risk!
 * ==========================================================
What is AppFace ?
   AppFace For VC is a windows library which is designed to develop software
User Interface easily and quickly, or you can name it as "Windows application skin tool".It
make you beautify your software easily with calling several functions . With AppFace you could
 save a mass of time and energy for the design of software UI , and you can create the 
 characterful and creative "application face" for your software quickly .
  
How to use it ?
   AppFace.dll is a standard windows dynamic library,you can load it staticly or dynmaicly.

  Call it staticly:
  1.Copy appface.h and appface.lib to your project folder,and add them to your project ; copy appface.dll
to your application export folder,remark "#define LOAD_APPFACE_DYNAMIC" statement in appface.h 
  2.Load appface before the first window created  by call :                 SkinStart(char* UiResourceFile,0,GTP_LOAD_FILE,0,0);
  3.Before exit the process to release resource call this :                 SkinRemove();

  Call it dynamicly:
  The class CAppFace help you to load appface.dll easily .
  1.Include this file in your project,and copy "AppFace.dll" to the project EXE file output folder.
  2.Declare a global variable in your project:                              CAppFace g_af ;
  3.Load appface before the first window created  by call :                 g_af.Start(char* UiResourceFile);
  4.Before exit the process to release resource call this :                 g_af.Remove();

Bugs reported:   
 
  appface@matinsoft.com

  http://www.matinsoft.com
  http://www.appface.com

------------------------------------------------------------
簡介:
    AppFace For VC 是一個Windows界面開發庫,它能夠使您更輕松,更快捷的開發
軟件界面。您也可以把它稱做"應用程序皮膚工具"。使用AppFace界面開發包,只需
調用幾個函數,添加幾行代碼就能使您的軟件擁有漂亮的外觀。它能最大限度的降低您
在軟件界面上所花費的時間和精力,使您能夠將工作重心完全放在軟件的核心價值的
開發上.

使用方法:
  AppFace.dll 是一個標準的Windows 動態鏈接庫,您可以靜態或動態的調用它的輸
出函數 。

  靜態調用:
  1.將 "appface.h" 已及 "appface.lib" 拷貝到您的工程目錄下,并將其添加到您的
工程中;將"AppFace.dll"拷貝到EXE文件的輸出目錄,去掉 "appface.h"中的如下語句: 
"#define LOAD_APPFACE_DYNAMIC"
  2. 在創建第一個窗口前調用  SkinStart (char * UiResourceFile,0,GTP_LOAD_FILE,0,0)    ;
  3. 在程序退出前調用                    SkinRemove()    ;

  動態調用:
  CAppFace這個類包裝了對AppFace.dll 中輸出函數的調用,幫助您更容易的
使用 AppFace 界面開發包. 
  1. 將這個文件添加進您的工程,將"AppFace.dll"拷貝到EXE文件的輸出目錄
  2. 在您的工程中聲明一個全局變量          CAppFace g_af ;
  3. 在創建第一個窗口前調用                g_af.Start(char * UiResourceFile)    ;
  4. 在程序退出前調用                      g_af.Remove()    ;
 
Bug reported:
  support_cn@matinsoft.com

  http://www.matinsoft.com
  http://www.appface.com

-------------------------------------------------------------
History:
AppFace.h 0.4    2004.12.20
   Added an  export function : SkinThread
   Supported loading appface.dll static linked .
   Modified the paramerers order  for CAppFace::Start  function
   Modified the description for this file .

AppFace.h 0.3    2004.12.08
   Modified "Release" member function to prevert from throwing an exception
for debug version under Win XP
   Modified the function prototype
   Added a member function : BOOL SkinWindow(HWND hWnd,BOOL bSkin) ; We can decide which Window we need skin or not skin
   Modified the description for class CAppFace .

AppFace.h 0.2    2004.11.25
   Modified "Start" member fucntion to load urf file from resource or memory.
   Modified the description for class CAppFace .
   Supported UNICODE
   Added a help function,  void T2C(IN LPCTSTR src,OUT char* dst,IN int dstlen) 
        which used to convert a TCHAR string to char string
  
AppFace.h 0.1    2004.09.25
   Can work. 
*/

#ifndef __APPFACE_H__
#define __APPFACE_H__


#define GTP_LOAD_FILE     1
#define GTP_LOAD_MEMORY   2
#define GTP_LOAD_RESOURCE 3


//////////////////////////////////////////////
/*Uncomments the below statement to load appface.dll dynamicly
*/
//#define LOAD_APPFACE_DYNAMIC 
//////////////////////////////////////////////

//#ifdef  LOAD_APPFACE_DYNAMIC   //Load appface dynamic from "appface.dll"

class CAppFace
{
public:

typedef BOOL  (__stdcall *APPFACE_START)(char*,char*,int,DWORD,char*) ;
typedef void  (__stdcall *APPFACE_REMOVE)();
typedef BOOL  (__stdcall *APPFACE_SKINWINDOW)(HWND,BOOL);
typedef void  (__stdcall *APPFACE_THREAD)();

	CAppFace(LPCTSTR DllPath = _T("AppFace.dll"))
	{
		pfnStart    = NULL ;
		pfnRemove   = NULL ;
		pfnThread     = NULL ;
		pfnSkinWindow = NULL ;
		m_bValid    = FALSE; 
		m_hDll      = NULL ;
		Init(DllPath) ;
	};
	~CAppFace(){Release(); };

	BOOL Init(LPCTSTR DllPath)
	{
		if(m_hDll && m_bValid)	
			return TRUE;
		m_hDll = ::LoadLibrary(DllPath);
		if(m_hDll == NULL)
			return FALSE ;
		
		pfnStart = (APPFACE_START) GetProcAddress(m_hDll, "SkinStart"); 
		if(!pfnStart)	    return FALSE; 
		pfnRemove= (APPFACE_REMOVE)GetProcAddress(m_hDll, "SkinRemove"); 
		if(!pfnRemove)	    return FALSE; 
		pfnSkinWindow= (APPFACE_SKINWINDOW)GetProcAddress(m_hDll, "SkinWindowSet"); 
		if(!pfnSkinWindow)	    return FALSE; 
		pfnThread= (APPFACE_THREAD)GetProcAddress(m_hDll, "SkinThread"); 
		if(!pfnThread)	    return FALSE; 

		m_bValid = TRUE ;
		return TRUE ;
	};

	BOOL IsValid(){return m_bValid;};

	//----------------------------
	//We'll call these functions.
	void SkinThread(){if(pfnThread) pfnThread() ;}; 

	BOOL Start(void* SkinFile=NULL,  //Source buffer
		       LPCTSTR szCheckSum= NULL , //Checksum string,not used for the free version
			   int Type = GTP_LOAD_FILE, //Loading type
			   DWORD hInst= NULL,   //The HINSTANCE for the loaded module or the size of the memory block
			   LPCTSTR szResType =NULL  //Resource type ,only used when Type is GTP_LOAD_RESOURCE
			)
	{
		if(pfnStart)
		{
			if(!SkinFile)
			{
				return pfnStart(NULL,NULL,NULL,NULL,NULL);
			}
			else
			{
				char  checksum[256] ;
				if(Type == GTP_LOAD_MEMORY)
				{
					T2C(szCheckSum,checksum,256) ;
					return pfnStart((char*)SkinFile,checksum,Type,hInst,NULL);
				}
				else
				{
					char  skinfile[256] ;
					char  type[256] ;
					T2C((LPCTSTR)SkinFile,skinfile,256) ;
					T2C(szResType,type,256) ;
					T2C(szCheckSum,checksum,256) ;
                    return pfnStart(skinfile,checksum,Type,hInst,type);
				}
			}
		}
		return FALSE;
	};
	void Remove() { if(pfnRemove) pfnRemove() ;};

	BOOL SkinWindow(HWND hWnd,BOOL bSkin){if(pfnSkinWindow) return pfnSkinWindow(hWnd,bSkin);return FALSE;} ;
	//----------------------------

private:
	BOOL m_bValid  ;  
	HMODULE m_hDll ;

	APPFACE_START       pfnStart       ;
	APPFACE_REMOVE      pfnRemove      ;
	APPFACE_SKINWINDOW  pfnSkinWindow  ;
	APPFACE_THREAD      pfnThread      ;

	//Convert a TCHAR string to char string
	void T2C(IN LPCTSTR src,OUT char* dst,IN int dstlen)
	{
		memset(dst,0,dstlen);
		if(!src || !dst) return ;		
	//----------------------------
#ifdef UNICODE
		BOOL bRes= FALSE ;
		WideCharToMultiByte(CP_ACP,
			0,
			src,
			wcslen(src),
			dst,
			dstlen,
			NULL,
			&bRes);
#else
		strncpy(dst,src,dstlen-1)   ;
#endif
	} ;

protected:
	void Release()
	{
		/*
		If the m_hDll is not available,it will throw an exception for debug version,
		so we need "try{...} catch(...)"
		*/
		try{  
			if(m_hDll)
			{
				FreeLibrary(m_hDll) ;
				m_hDll = NULL       ;
				m_bValid = false    ;
				pfnStart = NULL     ;
				pfnRemove= NULL     ;
				pfnSkinWindow = NULL;
			}
		}catch(...)
		{
		}
	};
};

#else  //LOAD_APPFACE_DYNAMIC

#ifdef __cplusplus  
extern "C"
{
#endif

/*
Function: BOOL SkinStart(char* SkinFile,
			   char* CheckSum          ,
			   int   Type              ,
			   DWORD hInstance         ,
			   char* szResType )
Description  : The SkinStart function  perform the most work for appface UI library
Parameters   :   
      SkinFile 
        [ IN ]  Depands on the value of parameter Type
		        If the value of Type equal to GTP_LOAD_FILE , SkinFile means the string which 
			contained the disk file path .
				If the value of Type equal to GTP_LOAD_MEMORY , SkinFile means the address of the
			memory block.
				If the value of Type equal to GTP_LOAD_RESOURCE , SkinFile means the string 
			which contained the resource name .
			      
				If this value is NULL ,it will restore to the Windows default UI .
	  
	  CheckSum
	    [ IN ]  Only use for our regitered users.Input the valid checksum value(License Code),users can open the extra
	    	    characterful and creative URF which Matinsoft afforded .Otherwise leave this param NULL ,
				and you can only use the public URF .
	  
	  Type
	    [ IN ]  This value indicate where the URF we will load .It can be one of the bellow:
		        
				GTP_LOAD_FILE     : Means the URF we will load is a disk file
				GTP_LOAD_MEMORY   : Means the URF we will load is a memory block
				GTP_LOAD_RESOURCE : Means the URF we will load is from resource
	  hInstance
	    [ IN ]  Depands on the value of parameter Type
		        for GTP_LOAD_FILE     , hInstance can be any value .
				for GTP_LOAD_MEMORY   , hInstance means the memory block size .
				for GTP_LOAD_RESOURCE , hInstance means the HINSTANCE which the resource is from .
	  szResType
	    [ IN ]  Only used when Type equal to GTP_LOAD_RESOURCE ,means the resource type

Return Values: Return nor-zero if do this operation successfully
Remarks:
         For multithreaded applications ,you should call SkinStart at the main UI thread ,and call
	   SkinThread() in the other UI threads .
         
Example:
1.Load URF(UI Resource File) from disk file:   SkinStart(_T("c:\\Yourpath\\yoururf.urf"),"Your License Code",GTP_LOAD_FILE,NULL,NULL) ;
2.Load URF(UI Resource File) from Resource :   SkinStart(_T("IDR_URFNAME_YOURDEFINED"),"Your License Code",GTP_LOAD_RESOURCE,(DWORD)::GetModuleHandle(NULL),_T("RESOURCETYPE")) ;
3.Load URF(UI Resource File) from Memory   :   SkinStart((char*)pBuf,"Your License Code",GTP_LOAD_MEMORY,nBufLen,NULL)
4.Change the application UI                :   SkinStart(_T("c:\\Yourpath\\yourotherurf.urf"),"Your License Code",GTP_LOAD_FILE,NULL,NULL) ;
5.Return to windows default UI             :   SkinStart(0,0,0,0,0) ;
*/
BOOL __stdcall SkinStart(char* SkinFile  ,
			   char* CheckSum          ,
			   int   Type              ,
			   DWORD hInstance         ,
			   char* szResType ) ;


/*
Function: void SkinThread()

Description  : Init AppFace in another UI thread.
Parameters   :   
Return Values:
Remarks:
		  For multithreaded applications ,you should call SkinStart at the main UI thread ,and call
	   SkinThread in the other UI threads .
*/
void __stdcall SkinThread() ;



/*
Function: BOOL SkinWindowSet(HWND hWnd,BOOL bSkin)

Description  : The SkinWindowSet function skin or unskin the special window
Parameters   :   
      hWnd 
        [ IN ]  Handle to the window which will be skinned or unskinned. 
	  bSkin
	    [ IN ]  Specifies whether a window is skinned

Return Values: Return nor-zero if do this operation successfully
Remarks:
         Call SkinWindowSet function should be after call SkinStart function,otherwise it will 
	 return FALSE immediately .
		 This function afford an ability for users to draw the window by themself after loaded 
	 appface library.
*/
BOOL __stdcall SkinWindowSet(HWND hWnd,BOOL bSkin) ;


											
/*
Function: void SkinRemove()

Description  : The SkinRemove function removes AppFace skin from the process,and releases all
     the allocated resource .
Parameters   :   
Return Values:
Remarks:
        Once call SkinStart in a process ,you must call SkinRemove before terminating this
	 process ,otherwise it may be cause memory leaking .
	    You need do this function only once ,even you had call SkinStart or SkinThread times without number
	 for multithreaded applications .
*/
void __stdcall SkinRemove() ;         

#ifdef __cplusplus
}
#endif  //__cplusplus

//#endif  //LOAD_APPFACE_DYNAMIC
#endif  //__APPFACE_H__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜精品一区二区三区他趣| 精品在线一区二区| 轻轻草成人在线| 国产aⅴ综合色| 91蝌蚪国产九色| 精品国产露脸精彩对白 | 亚洲免费观看视频| 麻豆国产精品视频| 91啪在线观看| 精品sm捆绑视频| 午夜a成v人精品| 豆国产96在线|亚洲| 欧美不卡一区二区三区四区| 一区二区三区日韩| 成人综合激情网| 久久蜜桃一区二区| 卡一卡二国产精品| 欧美精品久久一区二区三区| 亚洲视频免费在线观看| 国产成人av电影在线观看| 3d动漫精品啪啪| 亚洲超碰精品一区二区| 一本久道中文字幕精品亚洲嫩| 国产亚洲va综合人人澡精品| 欧美aa在线视频| 欧美日韩中文国产| 亚洲精品国产成人久久av盗摄| 丁香六月综合激情| 国产日产欧美精品一区二区三区| 国内精品久久久久影院一蜜桃| 欧美一区二区三区四区在线观看| 亚洲电影激情视频网站| 91黄色小视频| 成人免费一区二区三区在线观看| 成人永久免费视频| 国产日韩av一区| 国产毛片精品视频| 久久久精品国产99久久精品芒果| 激情综合色综合久久综合| 欧美顶级少妇做爰| 免费观看在线色综合| 日韩片之四级片| 秋霞午夜av一区二区三区| 欧美日韩三级一区二区| 亚洲福利一区二区| 91麻豆精品国产91久久久资源速度 | 国产三区在线成人av| 国产精品12区| 国产精品色噜噜| 色综合天天综合网天天狠天天| 一区二区视频免费在线观看| 日本韩国欧美在线| 亚洲午夜av在线| 欧美电影免费观看高清完整版在线观看 | 91一区一区三区| 亚洲精品伦理在线| 欧美理论在线播放| 久久精品99国产精品日本| 国产亚洲欧洲997久久综合 | 日本一区免费视频| 色婷婷亚洲综合| 亚洲.国产.中文慕字在线| 欧美一区二区免费视频| 国产一区亚洲一区| 亚洲人成影院在线观看| 欧美日韩成人高清| 国产伦精品一区二区三区视频青涩| 国产精品私人自拍| 欧美日韩成人一区二区| 国产福利91精品| 亚洲自拍欧美精品| 亚洲精品一区二区在线观看| 99这里只有精品| 午夜欧美大尺度福利影院在线看| 精品第一国产综合精品aⅴ| 9色porny自拍视频一区二区| 日本在线观看不卡视频| 中文字幕一区三区| 欧美mv和日韩mv的网站| 久久综合网色—综合色88| 成人久久久精品乱码一区二区三区| 亚洲一区二区三区四区在线观看 | 午夜精品在线视频一区| 久久久精品免费网站| 欧美日韩一区二区三区高清| 国产成人丝袜美腿| 亚洲国产另类av| 国产三级精品视频| 日韩一级片在线观看| 99国产精品久久久久| 国内久久精品视频| 全国精品久久少妇| 亚洲国产乱码最新视频 | 一区二区三区小说| 国产欧美日韩亚州综合| 日韩欧美区一区二| 欧美私人免费视频| jiyouzz国产精品久久| 国产一区二区中文字幕| 日本中文字幕不卡| 亚洲国产日韩a在线播放| 亚洲欧美一区二区三区极速播放| 久久久美女毛片| 日韩欧美一区中文| 91精品国产欧美一区二区成人| 99re在线精品| 国产91精品免费| 国产精品一卡二卡| 国产麻豆91精品| 精品亚洲免费视频| 看国产成人h片视频| 日本精品一级二级| 成人国产在线观看| 懂色av噜噜一区二区三区av| 久久精品国产精品亚洲红杏| 偷拍一区二区三区四区| 亚洲电影一级黄| 亚洲一二三区不卡| 午夜精品久久久久影视| 亚洲一区二区三区四区的| 亚洲乱码国产乱码精品精可以看 | 亚洲精品久久7777| 亚洲欧洲日韩一区二区三区| 中文字幕一区二区视频| 日韩毛片高清在线播放| 亚洲免费在线播放| 亚洲图片自拍偷拍| 午夜精品久久久久久久久久| 日韩成人一区二区三区在线观看| 亚洲18女电影在线观看| 美美哒免费高清在线观看视频一区二区 | 亚洲精品中文字幕在线观看| 亚洲欧洲精品一区二区精品久久久| 欧美激情一区不卡| 亚洲特级片在线| 一区二区日韩电影| 三级一区在线视频先锋| 麻豆精品在线视频| 懂色中文一区二区在线播放| 99久久婷婷国产综合精品| 欧美亚洲愉拍一区二区| 日韩欧美自拍偷拍| 国产欧美精品国产国产专区| 亚洲欧洲性图库| 天堂蜜桃91精品| 国产一区二区精品在线观看| av在线不卡观看免费观看| 在线一区二区三区四区五区| 91精品国产综合久久精品| 久久夜色精品国产欧美乱极品| 亚洲国产成人午夜在线一区| 一区二区日韩电影| 韩国三级中文字幕hd久久精品| www.欧美日韩| 欧美另类videos死尸| 国产欧美日韩久久| 天堂成人免费av电影一区| 国产一区不卡视频| 欧美亚日韩国产aⅴ精品中极品| 欧美一级理论片| 国产精品全国免费观看高清 | 欧美日韩专区在线| 久久久国产综合精品女国产盗摄| 又紧又大又爽精品一区二区| 久久不见久久见免费视频1| 97久久超碰国产精品| 日韩视频免费直播| 一区二区三区日韩欧美| 国产福利一区二区三区| 欧美日韩一卡二卡三卡| 日本一区二区三区高清不卡| 免费精品99久久国产综合精品| 色综合咪咪久久| 日韩电影在线看| 色噜噜狠狠成人中文综合| 欧美精品一区二区久久久| 亚洲制服丝袜在线| 国产成人精品网址| 91精品国产色综合久久久蜜香臀| 中文字幕欧美一区| 国产suv精品一区二区6| 日韩精品中文字幕一区| 亚洲国产日韩精品| 91香蕉视频mp4| 亚洲国产成人在线| 国产剧情一区在线| 欧美成人a视频| 日韩中文欧美在线| 欧美日韩国产高清一区| 亚洲欧美成aⅴ人在线观看| 国产裸体歌舞团一区二区| 日韩欧美一级精品久久| 亚洲一卡二卡三卡四卡五卡| 一区二区久久久久| 久久综合九色综合欧美98| 日韩av电影免费观看高清完整版在线观看 | 久久精品国产99| 欧美日韩黄视频| 亚洲一区在线观看免费| 在线欧美日韩国产|