保持快乐,善于表达,敢于创新

C++ UI useful functions

上一篇 / 下一篇  2011-10-12 09:06:23 / 个人分类:c++

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."


   

TAG:

 

评分:0

我来说两句

Open Toolbar