?
對于像我這樣剛接觸MFC不久的人來說,MFC中的數(shù)據(jù)類型的確讓人很頭痛,需要不時地去查找MSDN,找的多了,就記下來了一部分,于是貼出來,加強記憶!
數(shù)據(jù)類型 | 意義 |
BOOL | Boolean值(TRUE? or FALSE) |
BSTR | 32-bit字符指針 |
BYTE | 8-bit整數(shù),無正負號 |
COLORREF | 32-bit數(shù)值,代表一個顏色值 |
DWORD | 32-bit整數(shù),無正負號 |
LONG | 32-bit整數(shù),有正負號 |
LPARAM | 32-bit數(shù)值,作為窗口函數(shù)或callback函數(shù)的一個參數(shù) |
LPCSTR | 32-bit指針,指向一個常數(shù)字符串 |
LPSTR | 32-bit指針,指向一個字符串 |
LPCTSTR | 32-bit指針,指向一個常數(shù)字符串。此字符串可移植到Unicode |
LPTSTR | 32-bit指針,指向一個字符串。此字符串可移植到Unicode |
LPVOID | 32-bit指針,指向一個未指定類型的數(shù)據(jù) |
LPRESULT | 32-bit數(shù)值,作為窗口函數(shù)或callback函數(shù)的返回值 |
UINT | Win16中,16-bit無正負號,Win32中,32-bit無正負號 |
WNDPROC | 32-bit |
WORD | 16-bit整數(shù),無正負號 |
WPARAM | 窗口函數(shù)的一個參數(shù),Win16中16bits,Win32中32bits |
?
?
MFC獨特的數(shù)據(jù)類型
數(shù)據(jù)類型 | 意義 |
POSITION | 一個數(shù)值,代表collection對象(例如數(shù)組或鏈表)中的元素位置,常使用于MFC collection classes |
LPCRECT | 32-bit指針,指向一個不變的RECT結(jié)構(gòu) |
posted @
2006-05-11 09:00 炙熱的太陽 閱讀(1988) |
評論 (4) |
編輯 收藏
???? Google又有新創(chuàng)意了(Google的每一款新產(chǎn)品都給我?guī)硪恍@喜?。?,他的名字叫g(shù)oogle網(wǎng)頁設(shè)計工具(Google Page Create),當然這仍然是google工程師利用它們的20%時間開發(fā)的,它給人的感覺就像是google做的一個blog。反正大家自己去看看吧!
???? google黑白報上的內(nèi)容:
我們的目標是設(shè)計出我們的朋友和家人都喜歡而且易用的產(chǎn)品,經(jīng)過數(shù)月的努力,我們很高興 Google Page Creator(Google 網(wǎng)頁設(shè)計工具)正式加入 Google 實驗室了。Google 實驗室一向是 Google 科技試驗的園地,里面有我們覺得激動人心、但可能還沒完全成熟的產(chǎn)品。希望早期使用者給我們的產(chǎn)品提意見,幫助我們不斷完善改進。
?????
???? 鏈接地址:Google Page Creator(Google 網(wǎng)頁設(shè)計工具)。
??
posted @
2006-05-09 08:53 炙熱的太陽 閱讀(596) |
評論 (0) |
編輯 收藏
約瑟夫(josephus)環(huán)是這樣的:假設(shè)有n個小孩坐成一個環(huán),假如從第一個小孩開始數(shù),如果數(shù)到m個小孩,則該小該離開,問最后留下的小孩是第幾個小孩?例如:總共有6個小孩,圍成一圈,從第一個小孩開始,每次數(shù)2個小孩,則游戲情況如下:
????小孩序號:1,2,3,4,5,6
????離開小孩序號:2,4,6,3,1
最后獲勝小孩序號:5
????這樣的問題,我可以先考慮輸入的內(nèi)容有哪些?輸出內(nèi)容有哪些?
????????要求用戶輸入的內(nèi)容有:
?????????1、是小孩的個數(shù),也就是n的值;
?????????2、是離開小孩的間隔是多少?也就是m的值。
?????????3、所有小孩的序號要求存在數(shù)組或者鏈表中,所以需要定義一個指針,這里我們用數(shù)組來存放小孩的序號。
????????而要求輸出的內(nèi)容是:
?????????1、離開小孩的序號;
?????????2、最后留下小孩的序號;
所以,根據(jù)上面分析輸入輸出參數(shù),我們考慮離開小孩的序號可以直接輸出,這樣可以使函數(shù)的復雜性。那么函數(shù)定義如下:
//輸入?yún)?shù):
//Childs為指向一個整形指針,指向保存小孩數(shù)組的首地址;
//n為小孩的個數(shù);
//m為數(shù)小孩的個數(shù);
int?Josephus(int?*Child,int?n,int?m)


{
int?i=-1,j=0,k=1;
//開始數(shù)小孩,只到留下一個小孩
while(1)


{
//數(shù)m個小孩
??for(j=0;j<m;)

??
{
???i=(i+1)%n;????//取下標加1的模,當i的值在0到n-1之間循環(huán)
???if(Child[i]!=-1)?//小孩在環(huán)中則數(shù)數(shù)有效;
????j++;
???
??}

???if(k==n)????????????????????????//如果k==n則表示,此時數(shù)組中只留下一個小孩,
????break;??????????????????????????//序號為Child[i]中的值,跳出循環(huán);
???cout<<Child[i]<<",";??//輸出離開小孩的序號;

???Child[i]=-1;???????????????//離開的小孩用-1作標記
???k=k+1;

}
cout<<endl;
return(Child[i]);????//返回最獲勝小孩的序號
}

完整的程序,在VC6中調(diào)試通過。
//-----------------------------------------------------------
#include<iostream.h>
int?Josephus(int?*Child,int?n,int?m);
void?main()


{
int?*allChild,j,k,l;
cin>>j>>k;

??if((allChild=?new?int[j])!=NULL)

??
{
????for(l=0;l<j;l++)

????
{??
?????cout<<l+1<<",";
?????allChild[l]=l+1;
????}
????cout<<endl;
????cout<<Josephus(allChild,j,k);
??}
}

int?Josephus(int?*Child,int?n,int?m)


{
int?i=-1,j=0,k=1;
while(1)


{
??for(j=0;j<m;)

??
{
???i=(i+1)%n;????
???if(Child[i]!=-1)?
????j++;
???
??}

???if(k==n)????????????????????????
????break;????????????????????????
???cout<<Child[i]<<",";??

???Child[i]=-1;?????????
???k=k+1;

}
cout<<endl;
return(Child[i]);????
}

posted @
2006-04-29 09:30 炙熱的太陽 閱讀(555) |
評論 (0) |
編輯 收藏
? 今天跟單位的人出去到郊外玩了一天,緊張了幾個星期的心情總算有一點放松,呵呵,過幾天項目就要驗收了,所以最近一直都在趕工作。玩了一天有點體會,那就是以后一定要加強體育鍛煉,不能把身體搞垮了。
posted @
2006-04-09 20:36 炙熱的太陽 閱讀(260) |
評論 (0) |
編輯 收藏
?
畢業(yè)半年多了,寫程序有半年了,今天突然間有點迷茫??我是不是要繼續(xù)做程序?我是不是做程序的材料?一連串的問題向我逼來,搞得我一下午沒有工作,于是乎上論壇,看大家討論,思考問題........
?? 莫非這就是人們所說的浮躁,我想可能是吧!人不免在某一件事上做久了,就會產(chǎn)生厭倦感,或者是一時間沒有了方向,又或者是沒有思想依靠,等等,如此之類。
?? 咳!想發(fā)一下感慨,可是怎么也想不起來要怎么寫,大學四年,文筆是徹底荒廢了,現(xiàn)在想拾起來,可又吐不出什么東西來,有時間寫上一大堆東西,回頭再一看,自己都想反胃,于是隨即刪掉,到最后,還是沒有寫出一點像樣的文章來。我比較喜歡林銳(大學十年的作者)的文風,風趣,灑脫又有內(nèi)涵,我也一直想寫他那樣的文章來,好歹也算是給自己肯定一下。
?? 算了,又忘詞了,上面的已經(jīng)是把腸子里的東西攪騰了好幾遍,不想再折騰自己,就這樣自己吧!繼續(xù)學習C++,繼續(xù)韓語學習,繼續(xù)努力!
posted @
2006-03-22 20:08 炙熱的太陽 閱讀(239) |
評論 (0) |
編輯 收藏
摘要: 當SP端和ISMG端建立Connect連接后,我們就要開始發(fā)送短信了,而Submit操作的目的是SP在與ISMG建立應(yīng)用層連接后向ISMG提交短信。ISMG以Submit_Resp消息響應(yīng)。下面還是要看它的消息定義:字段名字節(jié)數(shù)屬性描述Msg_Id8Unsigned Integer信息標識。Pk_total1Unsigned Integer相同Msg_Id的信息總條數(shù),從1開始。Pk_number...
閱讀全文
posted @
2006-03-20 20:43 炙熱的太陽 閱讀(1861) |
評論 (0) |
編輯 收藏
? 前一陣子,我一直想再學一門外語,但害怕學一門新的外語太難,所以就一直沒有起步。在一次飯局上我聽一個同事說,韓語很簡單,一個星期基本上可以入門,很簡單的一門語言,而且又是從中文演變過去的,對中國人來說是比較簡單。加上最近中國盛行韓風,因此決定學習韓語。于是乎上書店買入門教程,上網(wǎng)上找資料,一個星期下來,嘿!發(fā)現(xiàn)韓語還真的挺簡單的,挺適合我這種懶散的人學習??上?,我沒有下載朝鮮語插件,不然的我也用韓語寫一篇blog!
posted @
2006-03-17 08:24 炙熱的太陽 閱讀(687) |
評論 (10) |
編輯 收藏
CMPP協(xié)議的全稱是中國移動通信互聯(lián)網(wǎng)短信網(wǎng)關(guān)接口協(xié)議,它是聯(lián)想亞信公司根據(jù)SMMP協(xié)議為中國移動量身定做的,是符合中國國情的一個短信協(xié)議,閑話不多說了,說說CMPP的主要功能吧。(1)短信發(fā)送(short message mobile originate)MO,就是手機給SP發(fā)短信;(2)短信接受(short message mobile terminated)MT,這個就是SP給手機發(fā)的短信了,通常我們手機上收到的不良短信就是SP給我們的MT。CMPP協(xié)議的通信基礎(chǔ)是TCP/IP為底層通信承載的,連接方式是長連接方式。SP與ISMG之間,SMSC和ISMG之間的交互過程中均采用異步方式,即任一個網(wǎng)元在收到請求消息后應(yīng)立即回應(yīng)。
下面看看它的消息定義:CMPP中的消息分為消息頭和消息體。消息頭定義如下
字段名 |
字節(jié)數(shù) |
類型 |
描述 |
Total_Length |
4 |
Unsigned Integer |
消息總長度(含消息頭及消息體) |
Command_Id |
4 |
Unsigned Integer |
命令或響應(yīng)類型 |
Sequence_Id |
4 |
Unsigned Integer |
消息流水號,順序累加,步長為1,循環(huán)使用(一對請求和應(yīng)答消息的流水號必須相同) |
那么下面就是SP連接到ISMG上了,看它的Bind連接消息定義
字段名 |
字節(jié)數(shù) |
屬性 |
描述 |
Source_Addr |
6 |
Octet String |
源地址,此處為SP_Id,即SP的企業(yè)代碼。 |
AuthenticatorSource |
16 |
Octet String |
用于鑒別源地址。其值通過單向MD5 hash計算得出,表示如下:
AuthenticatorSource =
MD5(Source_Addr+9 字節(jié)的0 +shared secret+timestamp)
Shared secret 由中國移動與源地址實體事先商定,timestamp格式為:MMDDHHMMSS,即月日時分秒,10位。 |
Version |
1 |
Unsigned Integer |
雙方協(xié)商的版本號(高位4bit表示主版本號,低位4bit表示次版本號),對于3.0的版本,高4bit為3,低4位為0 |
Timestamp |
4 |
Unsigned Integer |
時間戳的明文,由客戶端產(chǎn)生,格式為MMDDHHMMSS,即月日時分秒,10位數(shù)字的整型,右對齊 。 |
根據(jù)上的定義我們可以寫出的代碼,如下,在VC環(huán)境下編寫的
/*
*函數(shù)功能:建立和CMPP網(wǎng)關(guān)的直接通路
*輸入條件:SP用戶名const char *UserName,SP密碼const char *PWD
*/
void Ccmpp_API::CmppConnect(const char *UserName, const char *PWD)
{
char netbuf[100];
CMPP_CONNECT *bufer;
bufer=(CMPP_CONNECT*)netbuf;
memset(bufer, 0, 100);
bufer->nTotalLength = htonl(39);//CMPP_CONNECT消息總長度
bufer->nCommandId = htonl(CMPP_CONNECT_tag);//消息標志
//自動產(chǎn)生SeqId號
if (sequenceid == 123456789i32)
{
sequenceid = 1;
}else{
sequenceid++;
}
bufer->nSeqId = htonl(sequenceid);
int MD5Len;
MD5_CTX md5;//MD5源字串
CTime TimeData = CTime::GetCurrentTime();
CString timestamp = TimeData.Format("%m%d%H%M%S");
unsigned char md5source[29];
int Len1 = strlen(UserName);
int Len2 = strlen(PWD);
MD5Len = Len1 + 9 +Len2 + timestamp.GetLength();
memset(md5source, 0, MD5Len);
memcpy(bufer->sSourceAddr, UserName, Len1);
memcpy(md5source, UserName, Len1);
for (int j = 0; j<Len2; j++)
{
md5source[j + Len1 + 9] = PWD[j];
}
for (int i=0;i<timestamp.GetLength();i++)
{
md5source[i + Len2 + Len1 + 9]=timestamp[i];
}
//進行md5加密轉(zhuǎn)換
md5.MD5Update(md5source, MD5Len);
md5.MD5Final(md5source);
memcpy(bufer->sAuthSource, md5source, 29);
bufer->cVersion = 0x30;
bufer->nTimeStamp = htonl(atoi(timestamp));
CmppSocket.Send(bufer, 39, 0);//把消息打包發(fā)送
return;
}
今天就到這,下次再寫,歡迎交流!
posted @
2006-03-15 07:58 炙熱的太陽 閱讀(9525) |
評論 (8) |
編輯 收藏