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

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

?? appface.h

?? 上傳個小程序:小QQ聊天程序
?? 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一区二区三区免费野_久草精品视频
亚洲永久免费视频| 麻豆视频观看网址久久| 奇米亚洲午夜久久精品| 欧美亚洲动漫精品| 97精品电影院| eeuss鲁片一区二区三区 | 欧美自拍偷拍一区| 91福利小视频| 欧美色图12p| 在线不卡免费欧美| 日韩一级完整毛片| 欧美成人三级在线| 久久久精品影视| 国产女同性恋一区二区| 国产+成+人+亚洲欧洲自线| 91精品国产福利| 日韩av电影免费观看高清完整版 | 亚洲国产日韩在线一区模特| 亚洲精品视频自拍| 亚洲宅男天堂在线观看无病毒| 亚洲最大的成人av| 日韩成人一级大片| 九九精品视频在线看| 国精产品一区一区三区mba视频| 国产精品一区二区在线观看网站 | 欧美亚洲国产一区二区三区va| 欧美性大战久久| 337p亚洲精品色噜噜| 欧美精品一区二区三区久久久| 久久先锋影音av| 中文字幕一区av| 亚洲国产成人91porn| 玖玖九九国产精品| 成人少妇影院yyyy| 欧美色综合久久| 欧美成va人片在线观看| 国产日产欧美一区| 一区二区三区欧美亚洲| 日韩精品电影在线| 风间由美性色一区二区三区| 在线看不卡av| 日韩欧美中文字幕公布| 中文字幕第一区二区| 亚洲国产中文字幕在线视频综合| 强制捆绑调教一区二区| 成人精品在线视频观看| 欧美高清视频在线高清观看mv色露露十八 | 色婷婷亚洲综合| 日韩欧美123| 亚洲欧美日韩久久精品| 日本午夜精品一区二区三区电影| 久久精品国产亚洲a| 色综合激情久久| 精品国产乱码久久久久久蜜臀| 亚洲三级免费电影| 美女视频黄免费的久久| 色综合天天综合在线视频| 日韩欧美亚洲国产精品字幕久久久 | 26uuu国产日韩综合| 亚洲女子a中天字幕| 黄一区二区三区| 欧美性猛片aaaaaaa做受| 久久精品一区二区三区四区| 亚洲国产精品久久不卡毛片| 亚洲国产精品v| 日本午夜精品视频在线观看| a亚洲天堂av| 欧美tickling挠脚心丨vk| 亚洲欧美一区二区三区极速播放| 精品亚洲国内自在自线福利| 欧美视频在线一区二区三区| 欧美经典一区二区三区| 日本91福利区| 在线观看免费视频综合| 日本一区二区三区电影| 久久99精品久久久久久动态图 | 一区二区成人在线视频| 国产精品亚洲一区二区三区妖精| 欧美剧情电影在线观看完整版免费励志电影 | 国产一区二区日韩精品| 欧美日本韩国一区二区三区视频 | 粉嫩嫩av羞羞动漫久久久| 欧美一级高清大全免费观看| 亚洲激情五月婷婷| 成人黄色电影在线| 久久综合中文字幕| 裸体健美xxxx欧美裸体表演| 欧美性视频一区二区三区| 自拍偷拍亚洲综合| 国产成人亚洲精品狼色在线| 欧美一级黄色片| 亚洲bt欧美bt精品| 在线亚洲人成电影网站色www| 久久久久久久久久看片| 经典三级在线一区| 日韩精品一区二| 秋霞成人午夜伦在线观看| 欧美日韩你懂的| 一区二区三区欧美激情| 91麻豆高清视频| 亚洲另类春色国产| 91性感美女视频| 一本到不卡免费一区二区| 久久久蜜桃精品| 欧美人与性动xxxx| 欧美色爱综合网| 亚洲综合激情网| 在线观看一区二区视频| 亚洲综合成人在线视频| 欧美性感一类影片在线播放| 亚洲一区二三区| 欧美日韩一区二区三区免费看| 亚洲国产日韩一级| 91麻豆精品国产91久久久资源速度 | 男人的天堂久久精品| 56国语精品自产拍在线观看| 日韩 欧美一区二区三区| 欧美一级免费大片| 国产一区视频网站| 国产精品免费视频网站| 91女人视频在线观看| 一区二区三区在线高清| 欧美日韩电影在线播放| 麻豆国产一区二区| 久久精品视频在线免费观看 | 国产精品卡一卡二| 国产女主播一区| 成人高清在线视频| 亚洲综合视频在线观看| 7777精品伊人久久久大香线蕉的| 蜜臀av国产精品久久久久| 久久影院电视剧免费观看| 本田岬高潮一区二区三区| 亚洲狠狠丁香婷婷综合久久久| 欧美美女直播网站| 国产麻豆精品在线观看| 亚洲少妇30p| 欧美男男青年gay1069videost| 久久99精品国产.久久久久| 国产精品日产欧美久久久久| 在线精品视频一区二区三四| 久久国产视频网| 亚洲欧洲成人精品av97| 欧美裸体bbwbbwbbw| 国产精品一区二区在线观看不卡 | 全国精品久久少妇| 国产色91在线| 欧美日韩欧美一区二区| 国产999精品久久久久久绿帽| 亚洲一区二区高清| 久久久久99精品一区| 在线观看国产精品网站| 麻豆久久一区二区| 亚洲精品视频免费看| 日韩精品资源二区在线| 91免费版在线看| 激情六月婷婷久久| 一区二区三区 在线观看视频 | 午夜精品一区在线观看| 国产午夜精品一区二区三区四区| 色久综合一二码| 精品一区二区三区日韩| 亚洲精品日韩专区silk| 精品国产区一区| 色视频欧美一区二区三区| 精品一区二区免费看| 夜夜嗨av一区二区三区四季av| 欧美精品一区二区三区久久久| 欧美揉bbbbb揉bbbbb| 国产麻豆欧美日韩一区| 视频一区欧美精品| 国产精品传媒入口麻豆| 欧美大片免费久久精品三p| 一本色道亚洲精品aⅴ| 国内精品国产三级国产a久久| 午夜av区久久| 久久av资源网| 久久精品亚洲一区二区三区浴池| 欧美日韩在线不卡| 色婷婷综合久久久| 成人黄页在线观看| 国产麻豆视频一区二区| 青椒成人免费视频| 午夜精品成人在线视频| 亚洲精品一二三四区| 国产性做久久久久久| 日韩欧美中文字幕一区| 欧美日韩国产精品自在自线| 成人爽a毛片一区二区免费| 国产在线精品一区二区夜色| 性做久久久久久久久| 最新日韩在线视频| 国产视频一区二区在线| 欧美成人福利视频| 91精品国产高清一区二区三区蜜臀| 91国在线观看| 久久精品亚洲国产奇米99| 日本aⅴ亚洲精品中文乱码| 亚洲成国产人片在线观看| 一区二区国产视频|