1. CEdit
1). INIT
CEditBox m_EbSiteUrl;
m_EbSiteUrl.SubclassWindow(GetDlgItem(IDC_ASW_EDIT_SITEURL));
2). GET TEXT
TCHAR m_szSiteURL[STR_SIZE_512];
m_EbSiteUrl.GetWindowText(m_szSiteURL, sizeof(m_szSiteURL)/sizeof(TCHAR)); //GET
TrimString(m_szSiteURL);
CString szLowCase(m_szSiteURL);
szLowCase.MakeLower();
lstrcpyn(m_szSiteURL, szLowCase, STRING_BUFFER_SIZE);
3). Set
m_EbSiteUrl.SetLimitText(MAX_SITEURL_LENGTH); //SET MAX LENGTH
m_EbSiteUrl.SetWindowText(m_szSiteURL); //SET
m_EbSiteUrl.SetFocus();
4). DESTROY
m_EbSiteUrl.UnsubclassWindow();
2. LOAD RESOURCE
TCHAR szTempPath[_MAX_PATH]={0};
TCHAR szCurDllPath[_MAX_PATH]={0};
if(GetModuleFileName(_Module.GetModuleInstance(),szTempPath,_MAX_PATH)) //GET RUNING PATH
{
int ch = _T('\\');
TCHAR* p = _tcsrchr( szTempPath, ch); //GET THE LAST MATCH CH PORINT
if(p)
lstrcpyn(szCurDllPath,szTempPath,p-szTempPath+1); //COPY THE STRING
}
StringCchCat(szCurDllPath, _MAX_PATH, RESOURCE_DLL); //尾部附加RESOURCE_DLL,得到全路径
g_hRes = ::LoadLibrary(szCurDllPath);
if (!g_hRes)
{
g_hRes = _Module.GetResourceInstance();
g_bResDll = FALSE;
}
else
{
g_bResDll = TRUE;
}
3. 注册表
HKEY hKey = NULL;
if (RegOpenKey(HKEY_CURRENT_USER, _T("SOFTWARE"), &hKey) == ERROR_SUCCESS)
{
if (RegDeleteKey(hKey, _T("Web")) != ERROR_SUCCESS)
{
SHDeleteKey(hKey, _T("Web"));
}
RegCloseKey(hKey);
}
读注册表
#define ACD_BASEKEY _T("SOFTWARE\\ACD")
TCHAR szKey[LARGE_BUFFER_SIZE] = {0};
StringCchCat(szKey, LARGE_BUFFER_SIZE, ACD_BASEKEY);
StringCchCat(szKey, LARGE_BUFFER_SIZE, _T("\\"));
StringCchCat(szKey, LARGE_BUFFER_SIZE, lpszSection);
if(!bCreate)
{
if(RegOpenKeyEx(HKEY_CURRENT_USER, szKey, 0,
KEY_READ, &hKey) != ERROR_SUCCESS)
return NULL;
return hKey;
}
else
{
if(RegOpenKeyEx(HKEY_CURRENT_USER, szKey, 0,
KEY_ALL_ACCESS, &hKey) != ERROR_SUCCESS)
{
if(RegCreateKey(HKEY_CURRENT_USER, szKey, &hKey)
!= ERROR_SUCCESS) //create register
return NULL;
}
return hKey;
}
4. 检验程序是否运行
TCHAR szTitle[STRING_BUFFER_SIZE] = {0}; lstrcpyn(szTitle, _T("WebACDManager"), STRING_BUFFER_SIZE); g_hAppMutex = ::CreateMutex(NULL, FALSE, szTitle); if (GetLastError() == ERROR_ALREADY_EXISTS) { return 1; } else { g_ManagerWnd = ::FindWindow(NULL, szTitle); //找到窗口 BOOL bMatched = FALSE; if (g_ManagerWnd) { bMatched = (::GetWindowLong(g_ManagerWnd, GWL_USERDATA) == WINDOW_ACDMANAGER_SIGNATURE); //检验窗口 } if (bMatched) { return 1; } }
return 0; |
创建时:
TCHAR szTitle[STRING_BUFFER_SIZE] = {0}; lstrcpyn(szTitle, _T("WebACDManager"), sizeof(szTitle)/sizeof(TCHAR)); SetWindowText(szTitle); SetWindowLong(GWL_USERDATA, WINDOW_ACDMANAGER_SIGNATURE); |
退出:
if (g_hAppMutex)
{
::CloseHandle(g_hAppMutex);
} ExitProcess (0);
|
5. 字符串常用函数
1). copy
TCHAR szParam[LARGE_BUFFER_SIZE] = {0};
lstrcpyn(szParam, lpszCmdLine, sizeof(szParam)/sizeof(TCHAR));
2). 字符集合匹配
LPTSTR lpszToken = _tcstok(szParam, _T("-"));
char string[] = "A string\tof ,,tokens\nand some more tokens";
char seps[] = " ,\t\n";
char *token; int main( void ) {
printf( "Tokens:\n" );
// Establish string and get the first token:
token = strtok( string, seps ); // C4996
// Note: strtok is deprecated; consider using strtok_s instead
while( token != NULL ) {
// While there are tokens in "string" printf( " %s\n", token );
// Get next token: token = strtok( NULL, seps ); // C4996 } }
|
3). 子字符串匹配
lpszToken == _tcsstr(lpszToken,_T("cx"))
4). format
TCHAR pszDest[30]; size_t cchDest = 30; LPCTSTR pszFormat = TEXT("%s %d + %d = %d.");
TCHAR* pszTxt = TEXT("The answer is");
HRESULT hr = StringCchPrintf(pszDest, cchDest, pszFormat, pszTxt, 1, 2, 3); // The resultant string at pszDest is "The answer is 1 + 2 = 3."
|