1、如何設置全局變量/函數
(1)定義一個Global.h,內包含
#pragma once
#include "OraEnv.h"
extern OraEnv Glob_OraEnv; //全局變量
#define SQL_MAXLEN 1024 //全局宏定義
extern double GetTime(); //全局函數
(2)定義Global.cpp,內涵
#pragma once
#include "stdafx.h"
#include "Globs.h"
OraEnv Glob_OraEnv; //全局變量
double GetTime() //全局函數
{
.....
}
2、獲取系統時間
(1)GetTickCount()函數,但是它通常只能精確到10ms。
(2)自己寫
double GetTime()
{
static __int64 nTimeCount = 0;
static __int64 nFrequency = 0;
QueryPerformanceCounter((LARGE_INTEGER*)&nTimeCount); //計算機從工作開始來計數次數。
QueryPerformanceFrequency((LARGE_INTEGER*)&nFrequency); //每秒計數次數。
return (double)nTimeCount/(double)nFrequency;
}
3、GetDlgItem(ID號)返回CWind*,用於操縱該ID對應的控件,當然也可以直接給該控件定義變量。
4、字符串轉換
//注意,這些轉換好像對char*字符串裏包含中文的失效。
(1)CString 轉化成 WCHAR*, 其實二者都是每一個字符佔2個字節,但是不能通過wcDir = m_strPath來完成
WCHAR* wcDir = NULL;
wcDir = m_strPath.GetBuffer(m_strPath.GetLength());
(2)CString 轉化成char*
size_t convertedChars = 0;
size_t strConcatsize = (m_strPath.GetLength() + 1)*2;
char *cDir = new char[strConcatsize];
memset(cDir, 0, strConcatsize);
wcstombs_s(&convertedChars, cDir, strConcatsize, m_strPath, _TRUNCATE);
(3)char*轉變成wchar_t*
size_t newsize = strlen(char*(cCount)) + 1;
wchar_t * wcstring = new wchar_t[newsize];
size_t convertedChars = 0;
mbstowcs_s(&convertedChars, wcstring, newsize, cCount, _TRUNCATE);
(4) wchar*轉變成char*
char* WcharStringToCharString(wchar_t* wcOrigin)
{
size_t origsize = wcslen(wcOrigin) + 1;
size_t convertedChars = 0;
char strConcat[] = " (char *)";
size_t strConcatsize = (strlen(strConcat) + 1)*2;
const size_t newsize = origsize*2;
char *nstring = new char[newsize+strConcatsize];
wcstombs_s(&convertedChars, nstring, newsize, wcOrigin, _TRUNCATE);
_mbscat_s((unsigned char*)nstring, newsize+strConcatsize, (unsigned char*)strConcat);
return nstring;
}
(5)將wchar* 轉變爲CString
CString szFolderPath(wcstring);
5、CListCtrl的初始化在它隸屬的Dialog的OnInitDialog()裏邊。
m_ListCtrl.ModifyStyle(NULL, LVS_REPORT);
m_ListCtrl.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES);
6、非模態對話框的顯示與隱藏
butFtpConn = (CButton*)GetDlgItem(IDC_FTP_DISCONN_SEL);
butFtpConn->ShowWindow(SW_HIDE);
7、memset(errbuf, 0, ERRINFO_MAX_LEN); 第3個參數是字節數,如果申請的是WCHAR*,則相應地應當變成兩倍。
8、