📄 appface.h
字号:
/*
File: appface.h
Purpose: Use this class to load AppFace API easyly.
Version 0.2
Compatible with:
Microsoft Windows 9x, NT, 2000, XP
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!
* ==========================================================
How to use it ?
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 in the process by call: g_af.Start(char* UiResourceFile);
4.Before exit the process to release resource call this : g_af.Remove();
Others:
1.Load URF(UI Resource File) from disk file: g_af.Start(_T("c:\\Yourpath\\yoururf.urf")) ;
2.Load URF(UI Resource File) from Resource : g_af.Start(_T("IDR_URFNAME_YOURDEFINED"),GTP_LOAD_RESOURCE,(DWORD)::GetModuleHandle(NULL),_T("RESOURCETYPE")) ;
3.Load URF(UI Resource File) from Memory : g_af.Start((char*)pBuf,GTP_LOAD_MEMORY,nBufLen)
4.Change the application UI : g_af.Start(_T("c:\\Yourpath\\yourotherurf.urf")) ;
5.Return to windows default UI : g_af.Start() ;
Bug reported:
appface@matinsoft.com
http://www.matinsoft.com
http://www.appface.com
------------------------------------------------------------
这个类帮助您更容易的使用 AppFace 界面开发包
使用方法:
1. 将这个文件添加进您的工程,将"AppFace.dll"拷贝到EXE文件的输出目录
2. 在您的工程中声明一个全局变量 CAppFace g_af ;
3. 在创建第一个窗口前调用 g_af.Start(char * UiResourceFile) ;
4. 在程序退出前调用 g_af.Remove() ;
其它:
1.从磁盘文件加载 URF(UI Resource File) : g_af.Start(_T("c:\\Yourpath\\yoururf.urf")) ;
2.从资源加载 URF(UI Resource File) : g_af.Start(_T("IDR_URFNAME_YOURDEFINED"),GTP_LOAD_RESOURCE,(DWORD)::GetModuleHandle(NULL),_T("RESOURCETYPE")) ;
3.从内存加载 URF(UI Resource File) : g_af.Start((char*)pBuf,GTP_LOAD_MEMORY,nBufLen)
4.更换UI : g_af.Start(_T("c:\\Yourpath\\yourotherurf.urf")) ;
5.恢复Windows 默认界面 : g_af.Start() ;
Bug reported:
support_cn@matinsoft.com
http://www.matinsoft.com
http://www.appface.com
-------------------------------------------------------------
History:
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 UNICDOE
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
class CAppFace
{
public:
typedef bool (*APPFACE_START)(char*,char*,int,DWORD,char*);
typedef void (*APPFACE_REMOVE)();
CAppFace(LPCTSTR DllPath = _T("AppFace.dll"))
{
pfnStart = NULL ;
pfnRemove = 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;
m_bValid = true ;
return true ;
};
bool IsValid(){return m_bValid;};
//----------------------------
//We'll call these functions.
bool Start(void* SkinFile=NULL, //Source buffer
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
LPCTSTR szCheckSum= NULL //Checksum string,not used for the free version
)
{
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) ;
return pfnStart(skinfile,checksum,Type,hInst,type);
}
}
}
return false;
};
void Remove() { if(pfnRemove) pfnRemove() ;};
//----------------------------
private:
bool m_bValid ;
HMODULE m_hDll ;
APPFACE_START pfnStart ;
APPFACE_REMOVE pfnRemove ;
//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(m_hDll)
{
FreeLibrary(m_hDll);
m_hDll = NULL ;
m_bValid = false ;
pfnStart = NULL ;
pfnRemove= NULL ;
}
};
};
#endif //__APPFACE_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -