2008年11月6日 星期四

[轉貼]匈牙利命名法簡單記法

{(g|m)_}?{type}{Desc}
{Desc}:{Word}+
Word:[A-Z][a-z, A-Z, 0-9]*

g:全域變數,否則m

Type:
int -> n(開頭)
long -> l
unsigned int / long -> un / ul
DWORD -> dw
WORD -> w
CString / string -> m_str
char* -> null terminated string -> psz / sz
BSTR -> bstr
combo box -> cb
list control / box -> lc

CList
m_EnterText -> m_strEnter / s_strEnter / g_strEnter

CCtDlgInput
CFont -> MFC 4.0 -> MFC 5.0

int nIdxInput, nIdxOutput;
int nCntFile, nCntCar;

count -> cnt;
index -> idx;
display -> disp;
Descrption -> desc

Macro
#define XXXX_XXXX

API: GetMediaFile

2008年10月29日 星期三

將數字在MSG BOX中顯示

int i = 100;
char str[10]="";
_itoa(i, str, 10);
CString GetIntStr(str);
MessageBox(NULL, GetIntStr, L"將數字在MSG BOX中顯示", MB_OK);

職場小笑話

新職員到崗(由上往下看)

老闆:萬分歡迎,沒有你我們的公司肯定大不一樣!
職員:如果工作太累,搞不好我會辭職的
老闆:放心,我不會讓這樣的事情發生的!
職員:我雙休日可以休息嗎?
老闆:當然了!這是底線!
職員:平時會天天加班到淩晨嗎?
老闆:不可能,誰告訴你的?
職員:有餐費補貼嗎?
老闆:還用說嗎,絕對比同行都高!
職員:有沒有工作猝死的風險?
老闆:不會!你怎麼會有這種念頭?
職員:公司會定期組織旅遊嗎?
老闆:這是我們的明文規定!
職員:那我需要準時上班嗎?
老闆:不,看情況吧
職員:工資呢?會準時發嗎?
老闆:一向如此!
職員:事情全是新員工做嗎?
老闆:怎麼可能,你上頭還有很多資深同事!
職員:如果領導職位有空缺,我可以參與競爭嗎?
老闆:毫無疑問,這是我們公司賴以生存的機制!
職員:你不會是在騙我吧?


進入公司後看真實的一幕.....(從後往前看)

2008年10月14日 星期二

CString與WCHAR及CString與char轉換

CString a = L"String Test";

//CString to WCHAR
WCHAR b[MAX_STRLEN];
wsprintf(b, (L"%s"), a);

//CString to char
char c[MAX_STRLEN];
WideCharToMultiByte(CP_OEMCP, NULL, a, -1, c, MAX_STRLEN, NULL, FALSE);

[轉貼]ShellExecuteEX 開啟外部程式並關閉它

SHELLEXECUTEINFO sei;
DWORD exitcode;

memset(&sei,0,sizeof(SHELLEXECUTEINFO));
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask=SEE_MASK_NOCLOSEPROCESS;
sei.hwnd = NULL;
sei.lpFile = "";
sei.lpParameters = "";
sei.nShow = SW_SHOWNORMAL;
ShellExecuteEx(&sei);

GetExitCodeProcess(sei.hProcess,&exitcode);
if(exitcode==STILL_ACTIVE)
{
TerminateProcess(sei.hProcess,0);
}

這樣可以開啟一個程式 並且關閉它喔

2008年9月24日 星期三

[轉貼]C++ vector 使用方法

#include vector

using namespace std;

vector v1;
vector ::iterator Iter1;

v1.push_back( 10 ); // 丟一個 integer 進去 vector
v1.push_back( 19 );

// v1.begin() : vector 的最前面
// v1.end() : vector 的最後面

for( Iter1 = v1.begin(); Iter1 < v1.end(); Iter1++ ){
cout << *Iter1 << ", "; // 取值,印出
}

cout << endl;
// 移除 第一個 Element
v1.erase (v1.begin());

// 移除 前兩個 Element
v1.erase (v1.begin(), v1.begin() + 1);

2008年9月19日 星期五

Data Conversions for C++

Decimal Conversions

Decimal To Hex

// Use _itoa( ) function and set radix to 16.

char hexstring[10];
int number = 30;
itoa( number, hexstring, 16);

// In hexstring is 1e.

Hex To Decimal

// You can use strtol function and you can specify base. 

char * hexstring= "ABCDEF";
char * p;
int number = strtol(hexstring, &p,16);

// A function that does this

bool HexToDecimal (char* HexNumber, int& Number)
{
char* pStopString;
Number = strtol (HexNumber, &pStopString, 16);
return (bool)(Number != LONG_MAX);
}

Decimal to time

char *DecToTime(float fTime, char *szTime)
{
int nHrs, nMin, nSec;
fTime *= 3600;
nHrs = (int)fTime / 3600;
nMin = (int)(fTime - nHrs * 3600) / 60;
nSec = (int)(fTime - nHrs * 3600 - nMin * 60);
wsprintf(szTime, "%02d.%02d.%02d Hrs.Min.Sec.", nHrs, nMin, nSec);
return szTime;
}

String Conversions

String to Hex

sscanf(string, %04X, &your_word16);
// where string = your string and
// 04 = length of your string and X = hex

Hex to CString

CString Str;
unsigned char Write_Buff[1];
Write_Buff[0] = 0x01;
Str.Format("0x0%x",Write_Buff[0]);

COleVariant to CString

CString strTemp;
COleVariant Var;
Var = "FirstName";
strTemp = Var.bstrVal;
AfxMessageBox(strTemp);

CString to char pointer

CString MyString = "ABCDEF";
char * szMyString = (char *)(LPCTSTR) MyString;
char *pBuffer = new char[1024];
CString strBuf = "Test";
pBuffer = strBuf.GetBuffer(sizeof(pBuffer));

char pointer to CString

char * mystring = "12345";
CString string = mystring;

Double to CString including thefractional part

CString strValue,strInt, strDecimal;
int decimal,sign;
double dValue = 4.125;
strValue = _fcvt(dValue,6,&decimal,&sign);
// Now decimal contains 1 because there is
// only one digit before the .

strInt = strValue.Left(decimal); // strInt contains 4
strDecimal = strValue.Mid(decimal); // strDecimal contains 125

CString strFinalVal;
strFinalVal.Format("%s.%s",strInt,strDecimal);
// strFinalVal contains 4.125

Double To CString

CString strValue;
int decimal,sign;

double dValue = 123456789101112;
strValue = _ecvt(dValue,15,&decimal,&sign);

CString To Double

strValue = "121110987654321";
dValue = atof(strValue
);

CString to LPCSTR

CString str1 = _T("My String");
int nLen = str1.GetLength();
LPCSTR lpszBuf = str1.GetBuffer(nLen);
// here do something with lpszBuf...........
str1.ReleaseBuffer();

CString to LPSTR

CString str = _T("My String");
int nLen = str.GetLength();
LPTSTR lpszBuf = str.GetBuffer(nLen);
// here do something with lpszBuf...........
str.ReleaseBuffer();

CString to WCHAR*

CString str = "A string here" ;
LPWSTR lpszW = new WCHAR[255];

LPTSTR lpStr = str.GetBuffer( str.GetLength() );
int nLen = MultiByteToWideChar(CP_ACP, 0,lpStr, -1, NULL, NULL);
MultiByteToWideChar(CP_ACP, 0, lpStr, -1, lpszW, nLen);
AFunctionUsesWCHAR( lpszW );
delete[] lpszW;

LPTSTR to LPWSTR

int nLen = MultiByteToWideChar(CP_ACP, 0, lptStr, -1, NULL, NULL);
MultiByteToWideChar(CP_ACP, 0, lptStr, -1, lpwStr, nLen);

string to BSTR

string ss = "Girish";
BSTR _bstr_home = A2BSTR(ss.c_str());

CString to BSTR

CString str = "whatever" ;
BSTR resultsString = str.AllocSysString();

_bstr_t to CString

#include 
#include
_bstr_t bsText("Hai Bayram");
CString strName;
W2A(bsText, strName.GetBuffer(256), 256);
strName.ReleaseBuffer();
AfxMessageBox(strName);

char szFileName[256];
GetModuleFileName(NULL,szFileName,256);
AfxMessageBox(szFileName);

Character arrays

Char array to integer

char MyArray[20];
int nValue;

nValue = atoi(MyArray);

Char array to float

char MyArray[20];
float fValue;

fValue = atof(MyArray);

Char Pointer to double

char *str = " -343.23 ";
double dVal;
dVal = atof( str
);

Char Pointer to integer

char *str = " -343.23 ";
int iVal
;
iVal = atoi( str );

Char Pointer to long

char *str = "99999";
long lVal;
lVal = atol( str
);

Char* to BSTR

char * p = "whatever";
_bstr_t bstr = p;

Float to WORD and Vice Versa

float fVar;
WORD wVar;
fVar = 247.346;
wVar = (WORD)fVar; //Converting from float to WORD.

//The value in wVar would be 247

wVar = 247;
fVar = (float)fVar; //Converting from WORD to float.
//The value in fVar would be 247.00