欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      VC編程資料總結(jié)

      時間:2019-05-12 03:57:19下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《VC編程資料總結(jié)》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《VC編程資料總結(jié)》。

      第一篇:VC編程資料總結(jié)

      CString類的完美總結(jié)

      2012-05-04 15:50:50 我來說兩句

      收藏

      我要投稿

      ①、CString 類對象的初始化: CString str;

      CString str1(_T(“abc”));CString str2 = _T(“defg”);

      TCHAR szBuf[] = _T(“kkk”);CString str3(szBuf);CString str4 = szBuf;

      TCHAR *p = _T(“1k2”);//TCHAR * 轉(zhuǎn)換為 CString CString str5(p);CString str6 = p;

      CString str7(str1);CString str8 = str7;

      ②、字符串基本操作: ● 長度:GetLength();CString str(_T(“abc”));

      int len = str.GetLength();//len == 3

      ● 是否為空,即不含字符:IsEmpty();● 清空字符串:Empty();CString str(_T(“abc”));

      BOOL mEmpty = str.IsEmpty();//mEmpty == FALSE str.Empty();

      mEmpty = str.IsEmpty();//mEmpty == TRUE

      ● 轉(zhuǎn)換大小寫:MakeUpper、MakeLower ● 轉(zhuǎn)換順序:MakeReverse CString str(_T(“Abc”));str.MakeUpper();//str == ABC str.MakeLower();//str == abc str.MakeReverse();//str == cba

      ● 字符串的連接:+、+= CString str(_T(“abc”));

      str = _T(“de”)+ str + _T(“kp”);//str == deabckp str += _T(“123”);//str == deabckp123 TCHAR szBuf[] = _T(“789”);

      str += szBuf;//str == deabckp123789

      ● 字符串的比較:==、!=、(<、>、<=、>= 不常用)、Compare(區(qū)分大小寫)、CompareNoCase(不區(qū)分大小寫)

      CString str1(_T(“abc”));CString str2 = _T(“aBc”);if(str1 == str2){

      MessageBox(_T(“str1 等于 str2”));}else{

      MessageBox(_T(“str1 不等于 str2”));}

      ③、字符串的查找:

      Find、ReverseFind、FindOneOf 三個函數(shù)可以實(shí)現(xiàn)字符串的查找操作

      Find 從指定位置開始查找指定的字符或者字符串,返回其位置,找不到返回-1;

      舉例:

      CString str(_T(“abcdefg”));

      int idx = str.Find(_T(“cde”), 0);//idx 的值為2;

      ReverseFind 從字符串末尾開始查找指定的字符,返回其位置,找不到返回-1,雖然是從后向前查找,但是位置為從開始算起;

      CString str(_T(“abcdefg”));

      int idx = str.ReverseFind('e');//idx 的值為4;

      FindOneOf 查找參數(shù)中給定字符串中的任意字符,返回第一次出現(xiàn)的位置,找不到返回-1;

      CString str(_T(“abcabcd”));

      int idx = str.FindOneOf(_T(“cbd”));//idx 的值為1;

      ④、字符串的替換與刪除:

      Replace 替換 CString 對象中的指定的字符或者字符串,返回替換的個數(shù),無匹配字符返回 0;

      CString str(_T(“abcdabc”));int num = str.Replace('b', 'k');//str == akcdakc, num == 2

      CString str(_T(“abcdabc”));

      int num = str.Replace(_T(“bc”), _T(“kw”));//str == akwdakw, num == 2

      Remove 刪除 CString 對象中的指定字符,返回刪除字符的個數(shù),有多個時都會刪除;

      CString str(_T(“abcdabcb”));

      int num = str.Remove('b');//str == acdac, num == 3

      Delete 刪除 CString 對象中的指定位置的字符,返回處理后的字符串長度;

      CString str(_T(“abcd”));

      int num = str.Delete(1, 3);//str == a, num == 1

      ⑤、字符串的提?。?/p>

      Left、Mid、Right 三個函數(shù)分別實(shí)現(xiàn)從 CString 對象的 左、中、右 進(jìn)行字符串的提取操作;

      CString str(_T(“abcd”));

      CString strResult = str.Left(2);//strResult == ab strResult = str.Mid(1);//strResult == bcd strResult = str.Mid(0, 2);//strResult == ab strResult = str.Right(2);//strResult == cd

      ⑥、單個字符的修改: GetAt、SetAt 可以獲取與修改 CString 對象中的單個 TCHAR 類型字符;

      操作符也可以獲取 CString 對象中的單個字符,但為只讀的,不能進(jìn)行修改;

      CString str(_T(“abcd”));

      str.SetAt(0, 'k');//str == kbck TCHAR ch = str.GetAt(2);//ch == c

      ⑦、其他類型與 CString 對象類型的轉(zhuǎn)換:

      ● 格式化字符串:Format 方法,實(shí)現(xiàn)從 int、long 等數(shù)值類型、TCHAR、TCHAR * 等類型向 CString 類型的轉(zhuǎn)換;

      int num = 6;CString str;

      str.Format(_T(“%d”), num);

      ● CString 類型向 int 等數(shù)值類型、TCHAR * 類型的轉(zhuǎn)換: TCHAR *pszBuf = str.GetBuffer();str.ReleaseBuffer();

      TCHAR *p =(LPTSTR)(LPCTSTR)str;

      CString str1(_T(“123”));int num = _ttoi(str1);

      ⑧、CString 對象的 Ansi 與 Unicode 轉(zhuǎn)換: 大家可以直接使用上節(jié)課給大家講解的方法,此外這里給大家介紹一種從 Ansi 轉(zhuǎn)換到 Unicode 的隱含方法:

      //當(dāng)前工程環(huán)境為Unicode CString str;str = “abc”;char *p = “defg”;str = p;

      ⑨、CString 對象字符串所占用的字節(jié)數(shù): CString str = _T(“abc”);

      錯誤的求法:sizeof(CString)、sizeof(str)

      正確的求法:str.GetLength()*sizeof(TCHAR)

      ⑩、當(dāng)作為 TCHAR * 類型傳參時,確保申請了足夠用的空間,比如使用 GetModuleFileName 函數(shù)

      轉(zhuǎn)載]CString、TCHAR*、char*轉(zhuǎn)換

      [轉(zhuǎn)載]CString、TCHAR*、char*轉(zhuǎn)換 char*、TCHAR*轉(zhuǎn)換CString CString str(****)下面詳細(xì)寫一下其它轉(zhuǎn)換

      ////////////////////////////// /* *********************************************************************** * 函數(shù): TransCStringToTCHAR * 描述:將CString 轉(zhuǎn)換為 TCHAR* * 日期:

      *********************************************************************** */ TCHAR* CPublic::CString2TCHAR(CString &str){ int iLen = str.GetLength();TCHAR* szRs = new TCHAR[iLen];lstrcpy(szRs, str.GetBuffer(iLen));str.ReleaseBuffer();return szRs;} /* *********************************************************************** * 函數(shù): TCHAR2Char * 描述:將TCHAR* 轉(zhuǎn)換為 char* * 日期:

      *********************************************************************** */ char* TCHAR2char(TCHAR* tchStr){ int iLen = 2*wcslen(tchStr);//CString,TCHAR漢字算一個字符,因此不用普通計(jì)算長度

      char* chRtn = new char[iLen+1] wcstombs(chRtn,tchStr,iLen+1);//轉(zhuǎn)換成功返回為非負(fù)值 return chRtn;} /* *********************************************************************** * 函數(shù): char2tchar * 描述:將 char* 轉(zhuǎn)換為 TCHAR* * 日期:

      *********************************************************************** */ TCHAR *char2tchar(char *str){ int iLen = strlen(str);TCHAR *chRtn = new TCHAR[iLen+1];mbstowcs(chRtn, str, iLen+1);return chRtn;} /* *********************************************************************** * 函數(shù): CString2char * 描述:將CString轉(zhuǎn)換為 char* * 日期:

      *********************************************************************** */ char* CPublic::CString2char(CString &str){ int len = str.GetLength();char* chRtn =(char*)malloc((len*2+1)*sizeof(char));//CString的長度中漢字算一個長度

      memset(chRtn, 0, 2*len+1);USES_CONVERSION;strcpy((LPSTR)chRtn,OLE2A(str.LockBuffer()));return chRtn;} //參考

      /////////////////////// //Pocket PC上的UNICODE和ANSI字符串

      //By Vassili Philippov, September 26, 2001.//楊方思歧 譯

      //////////////////////// /* *********************************************************************** * 函 數(shù) 名:GetAnsiString * 描 述:將CString(unicode)轉(zhuǎn)換為char*(ANSI)* 參 數(shù):CString &s 要轉(zhuǎn)換的CString * 返 回 值:返回轉(zhuǎn)換結(jié)果 * 創(chuàng)建日期:

      * 最后修改:

      *********************************************************************** */ char* GetAnsiString(const CString &s){ int nSize = 2*s.GetLength();char *pAnsiString = new char[nSize+1];wcstombs(pAnsiString, s, nSize+1);return pAnsiString;}

      ////////////////////////////////////////////////////////////////////////////////////////////// WideCharToMultiByte和MultiByteToWideChar函數(shù)的用法

      支持Unicode編碼,需要多字節(jié)與寬字節(jié)之間的相互轉(zhuǎn)換

      WideCharToMultiByte的代碼頁用來標(biāo)記與新轉(zhuǎn)換的字符串相關(guān)的代碼頁。

      MultiByteToWideChar的代碼頁用來標(biāo)記與一個多字節(jié)字符串相關(guān)的代碼頁。

      常用的代碼頁由CP_ACP和CP_UTF8兩個。

      使用CP_ACP代碼頁就實(shí)現(xiàn)了ANSI與Unicode之間的轉(zhuǎn)換。

      使用CP_UTF8代碼頁就實(shí)現(xiàn)了UTF-8與Unicode之間的轉(zhuǎn)換。

      wstring AnsiToUnicode((const string& str){ int len = 0;

      len = str.length();

      int unicodeLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(),-1,NULL,0);

      wchar_t * pUnicode;

      pUnicode = new wchar_t[unicodeLen+1];

      memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));

      ::MultiByteToWideChar(CP_ACP,0, str.c_str(),-1,(LPWSTR)pUnicode, unicodeLen);

      wstring rt;rt =(wchar_t*)pUnicode;delete pUnicode;return rt;}

      string UnicodeToAnsi(const wstring& str){

      char* pElementText;int iTextLen;

      // wide char to multi char

      iTextLen = WideCharToMultiByte(CP_ACP, 0, str.c_str(),-1, NULL, 0, NULL, NULL);

      pElementText = new char[iTextLen + 1];

      memset((void*)pElementText, 0, sizeof(char)*(iTextLen + 1));

      ::WideCharToMultiByte(CP_ACP, 0, str.c_str(),-1, pElementText,iTextLen,NULL,NULL);

      string strText;

      strText = pElementText;

      delete[] pElementText;

      return strText;}

      wstring UTF8ToUnicode((const string& str){ int len = 0;

      len = str.length();

      int unicodeLen = ::MultiByteToWideChar(CP_UTF8, 0, str.c_str(),-1,NULL,0);

      wchar_t * pUnicode;

      pUnicode = new wchar_t[unicodeLen+1];

      memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));

      ::MultiByteToWideChar(CP_UTF8,0, str.c_str(),-1,(LPWSTR)pUnicode, unicodeLen);

      wstring rt;rt =(wchar_t*)pUnicode;delete pUnicode;return rt;}

      string UnicodeToUTF8(const wstring& str){

      char* pElementText;int iTextLen;

      // wide char to multi char

      iTextLen = WideCharToMultiByte(CP_UTF8, 0, str.c_str(),-1, NULL, 0, NULL, NULL);

      pElementText = new char[iTextLen + 1];

      memset((void*)pElementText, 0, sizeof(char)*(iTextLen + 1));

      ::WideCharToMultiByte(CP_UTF8, 0, str.c_str(),-1, pElementText,iTextLen,NULL,NULL);

      string strText;

      strText = pElementText;

      delete[] pElementText;

      return strText;}

      第二篇:個人總結(jié)的VC編程技巧(范文模版)

      1.等于號=表示賦值操作;= =表示邏輯操作。在使用if或(a= =b)時候需要注意。2.浮點(diǎn)型數(shù)據(jù)判斷相等使用fabs(a-b)<0.00001f 3.數(shù)組使用SetSize(nSize)之前需要清空RemoveAll()4.修改資源編譯后exe不執(zhí)行處理方法:選中資源,將其Property屬性對話框中,修改其File Name屬性,改名,保存后會生成其他文件名

      5.對于繪制文字TextOut(),在SetMapMode(MM_LOMETRIC)后,需要重新選擇字體,否則打印預(yù)覽時候會出現(xiàn)字體亂碼現(xiàn)象。

      6.賦值型條件語句需要加括號,否則先執(zhí)行運(yùn)算符,再執(zhí)行條件語句,如int a=b+c>0 ? 1 :-1,時,將先執(zhí)行(b+c)。

      MFC的消息處理函數(shù)

      1.AfxWndProc()該函數(shù)負(fù)責(zé)接收消息,找到消息所屬的CWnd對象,然后調(diào)用AfxCallWndProc

      2.AfxCallWndProc()該函數(shù)負(fù)責(zé)保存消息(保存的內(nèi)容主要是消息標(biāo)識符和消息參數(shù))供應(yīng)用程序以后使用,然后調(diào)用WindowProc()函數(shù)

      3.WindowProc()該函數(shù)負(fù)責(zé)發(fā)送消息到OnWndMsg()函數(shù),如果未被處理,則調(diào)用DefWindowProc()函數(shù)

      4.OnWndMsg()該函數(shù)的功能首先按字節(jié)對消息進(jìn)行排序,對于WM_COMMAND消息,調(diào)用OnCommand()消息響應(yīng)函數(shù),對于WM_NOTIFY消息調(diào)用OnNotify()消息響應(yīng)函數(shù)。任何被遺漏的消息將是一個窗口消息。OnWndMsg()函數(shù)搜索類的消息映像,以找到一個能處理任何窗口消息的處理函數(shù)。如果OnWndMsg()函數(shù)不能找到這樣的處理函數(shù)的話,則把消息返回到WindowProc()函數(shù),由它將消息發(fā)送給DefWindowProc()函數(shù)

      5.OnCommand()該函數(shù)查看這是不是一個控件通知(lParam參數(shù)不為NULL,如果lParam參數(shù)為空的話,說明該消息不是控件通知),如果它是,OnCommand()函數(shù)會試圖將消息映射到制造通知的控件;如果他不是一個控件通知(或者如果控件拒絕映射的消息)OnCommand()就會調(diào)用OnCmdMsg()函數(shù)

      6.OnCmdMsg()根據(jù)接收消息的類,OnCmdMsg()函數(shù)將在一個稱為命令傳遞(Command Routing)的過程中潛在的傳遞命令消息和控件通知。例如:如果擁有該窗口的類是一個框架類,則命令和通知消息也被傳遞到視圖和文檔類,并為該類尋找一個消息處理函數(shù)

      MFC應(yīng)用程序創(chuàng)建窗口的過程

      1.PreCreateWindow()該函數(shù)是一個重載函數(shù),在窗口被創(chuàng)建前,可以在該重載函數(shù)中改變創(chuàng)建參數(shù)(可以設(shè)置窗口風(fēng)格等等)

      2.PreSubclassWindow()這也是一個重載函數(shù),允許首先子分類一個窗口

      3.OnGetMinMaxInfo()該函數(shù)為消息響應(yīng)函數(shù),響應(yīng)的是WM_GETMINMAXINFO消息,允許設(shè)置窗口的最大或者最小尺寸

      4.OnNcCreate()該函數(shù)也是一個消息響應(yīng)函數(shù),響應(yīng)WM_NCCREATE消息,發(fā)送消息以告訴窗口的客戶區(qū)即將被創(chuàng)建

      5.OnNcCalcSize()該函數(shù)也是消息響應(yīng)函數(shù),響應(yīng)WM_NCCALCSIZE消息,作用是允許改變窗口客戶區(qū)大小

      6.OnCreate()該函數(shù)也是一個消息響應(yīng)函數(shù),響應(yīng)WM_CREATE消息,發(fā)送消息告訴一個窗口已經(jīng)被創(chuàng)建

      7.OnSize()該函數(shù)也是一個消息響應(yīng)函數(shù),響應(yīng)WM_SIZE消息,發(fā)送該消息以告訴該窗口大小已經(jīng)發(fā)生變化

      8.OnMove()消息響應(yīng)函數(shù),響應(yīng)WM_MOVE消息,發(fā)送此消息說明窗口在移動

      9.OnChildNotify()該函數(shù)為重載函數(shù),作為部分消息映射被調(diào)用,告訴父窗口即將被告知一個窗口剛剛被創(chuàng)建

      MFC應(yīng)用程序關(guān)閉窗口的順序(非模態(tài)窗口)

      1.OnClose()消息響應(yīng)函數(shù),響應(yīng)窗口的WM_CLOSE消息,當(dāng)關(guān)閉按鈕被單擊的時候發(fā)送此消息

      2.OnDestroy()消息響應(yīng)函數(shù),響應(yīng)窗口的WM_DESTROY消息,當(dāng)一個窗口將被銷毀時,發(fā)送此消息

      3.OnNcDestroy()消息響應(yīng)函數(shù),響應(yīng)窗口的WM_NCDESTROY消息,當(dāng)一個窗口被銷毀后發(fā)送此消息

      4.PostNcDestroy()重載函數(shù),作為處理OnNcDestroy()函數(shù)的最后動作,被CWnd調(diào)用

      MFC應(yīng)用程序中打開模式對話框的函數(shù)調(diào)用順序

      1.DoModal()重載函數(shù),重載DoModal()成員函數(shù) 2.PreSubclassWindow()重載函數(shù),允許首先子分類一個窗口

      3.OnCreate()消息響應(yīng)函數(shù),響應(yīng)WM_CREATE消息,發(fā)送此消息以告訴一個窗口已經(jīng)被創(chuàng)建

      4.OnSize()消息響應(yīng)函數(shù),響應(yīng)WM_SIZE消息,發(fā)送此消息以告訴窗口大小發(fā)生變化

      5.OnMove()消息響應(yīng)函數(shù),響應(yīng)WM_MOVE消息,發(fā)送此消息,以告訴窗口正在移動

      6.OnSetFont()消息響應(yīng)函數(shù),響應(yīng)WM_SETFONT消息,發(fā)送此消息,以允許改變對話框中控件的字體

      7.OnInitDialog()消息響應(yīng)函數(shù),響應(yīng)WM_INITDIALOG消息,發(fā)送此消息以允許初始化對話框中的控件,或者是創(chuàng)建新控件

      8.OnShowWindow()消息響應(yīng)函數(shù),響應(yīng)WM_SHOWWINDOW消息,該函數(shù)被ShowWindow()函數(shù)調(diào)用

      9.OnCtlColor()消息響應(yīng)函數(shù),響應(yīng)WM_CTLCOLOR消息,被父窗口發(fā)送已改變對話框或?qū)υ捒蛏厦婵丶念伾?/p>

      10.OnChildNotify()重載函數(shù),作為WM_CTLCOLOR消息的結(jié)果發(fā)送

      MFC應(yīng)用程序中關(guān)閉模式對話框的順序

      1.OnClose()消息響應(yīng)函數(shù),響應(yīng)WM_CLOSE消息,當(dāng)“關(guān)閉”按鈕被單擊的時候,該函數(shù)被調(diào)用

      2.OnKillFocus()消息響應(yīng)函數(shù),響應(yīng)WM_KILLFOCUS消息,當(dāng)一個窗口即將失去鍵盤輸入焦點(diǎn)以前被發(fā)送

      3.OnDestroy()消息響應(yīng)函數(shù),響應(yīng)WM_DESTROY消息,當(dāng)一個窗口即將被銷毀時,被發(fā)送

      4.OnNcDestroy()消息響應(yīng)函數(shù),響應(yīng)WM_NCDESTROY消息,當(dāng)一個窗口被銷毀以后被發(fā)送

      5.PostNcDestroy()重載函數(shù),作為處理OnNcDestroy()函數(shù)的最后動作被CWnd調(diào)用

      打開無模式對話框的順序

      1.PreSubclassWindow()重載函數(shù),允許用戶首先子分類一個窗口 2.OnCreate()消息響應(yīng)函數(shù),響應(yīng)WM_CREATE消息,發(fā)送此消息以告訴一個窗口已經(jīng)被創(chuàng)建

      3.OnSize()消息響應(yīng)函數(shù),響應(yīng)WM_SIZE消息,發(fā)送此消息以告訴窗口大小發(fā)生變化

      4.OnMove()消息響應(yīng)函數(shù),響應(yīng)WM_MOVE消息,發(fā)送此消息以告訴窗口正在移動

      5.OnSetFont()消息響應(yīng)函數(shù),響應(yīng)WM_SETFONT消息,發(fā)送此消息以允許改變對話框中控件的字體

      以上這些的執(zhí)行都是按給定的順序執(zhí)行!

      只有清楚的了解應(yīng)用程序的執(zhí)行順序,才能在編寫代碼的時候知道,在什么時候應(yīng)該執(zhí)行什么,以及在什么地方該處理什么!

      這只是本人總結(jié)的一點(diǎn)小小的經(jīng)驗(yàn),希望能對MFC的初學(xué)者有所幫助!MFC應(yīng)用程序中處理消息的順序

      1.AfxWndProc()該函數(shù)負(fù)責(zé)接收消息,找到消息所屬的CWnd對象,然后調(diào)用AfxCallWndProc

      2.AfxCallWndProc()該函數(shù)負(fù)責(zé)保存消息(保存的內(nèi)容主要是消息標(biāo)識符和消息參數(shù))供應(yīng)用程序以后使用,然后調(diào)用WindowProc()函數(shù)

      3.WindowProc()該函數(shù)負(fù)責(zé)發(fā)送消息到OnWndMsg()函數(shù),如果未被處理,則調(diào)用DefWindowProc()函數(shù)

      4.OnWndMsg()該函數(shù)的功能首先按字節(jié)對消息進(jìn)行排序,對于WM_COMMAND消息,調(diào)用OnCommand()消息響應(yīng)函數(shù),對于WM_NOTIFY消息調(diào)用OnNotify()消息響應(yīng)函數(shù)。任何被遺漏的消息將是一個窗口消息。OnWndMsg()函數(shù)搜索類的消息映像,以找到一個能處理任何窗口消息的處理函數(shù)。如果OnWndMsg()函數(shù)不能找到這樣的處理函數(shù)的話,則把消息返回到WindowProc()函數(shù),由它將消息發(fā)送給DefWindowProc()函數(shù)

      5.OnCommand()該函數(shù)查看這是不是一個控件通知(lParam參數(shù)不為NULL,如果lParam參數(shù)為空的話,說明該消息不是控件通知),如果它是,OnCommand()函數(shù)會試圖將消息映射到制造通知的控件;如果他不是一個控件通知(或者如果控件拒絕映射的消息)OnCommand()就會調(diào)用OnCmdMsg()函數(shù)

      6.OnCmdMsg()根據(jù)接收消息的類,OnCmdMsg()函數(shù)將在一個稱為命令傳遞(Command Routing)的過程中潛在的傳遞命令消息和控件通知。例如:如果擁有該窗口的類是一個框架類,則命令和通知消息也被傳遞到視圖和文檔類,并為該類尋找一個消息處理函數(shù)

      MFC應(yīng)用程序創(chuàng)建窗口的過程

      1.PreCreateWindow()該函數(shù)是一個重載函數(shù),在窗口被創(chuàng)建前,可以在該重載函數(shù)中改變創(chuàng)建參數(shù)(可以設(shè)置窗口風(fēng)格等等)

      2.PreSubclassWindow()這也是一個重載函數(shù),允許首先子分類一個窗口

      3.OnGetMinMaxInfo()該函數(shù)為消息響應(yīng)函數(shù),響應(yīng)的是WM_GETMINMAXINFO消息,允許設(shè)置窗口的最大或者最小尺寸

      4.OnNcCreate()該函數(shù)也是一個消息響應(yīng)函數(shù),響應(yīng)WM_NCCREATE消息,發(fā)送消息以告訴窗口的客戶區(qū)即將被創(chuàng)建

      5.OnNcCalcSize()該函數(shù)也是消息響應(yīng)函數(shù),響應(yīng)WM_NCCALCSIZE消息,作用是允許改變窗口客戶區(qū)大小

      6.OnCreate()該函數(shù)也是一個消息響應(yīng)函數(shù),響應(yīng)WM_CREATE消息,發(fā)送消息告訴一個窗口已經(jīng)被創(chuàng)建

      7.OnSize()該函數(shù)也是一個消息響應(yīng)函數(shù),響應(yīng)WM_SIZE消息,發(fā)送該消息以告訴該窗口大小已經(jīng)發(fā)生變化

      8.OnMove()消息響應(yīng)函數(shù),響應(yīng)WM_MOVE消息,發(fā)送此消息說明窗口在移動

      9.OnChildNotify()該函數(shù)為重載函數(shù),作為部分消息映射被調(diào)用,告訴父窗口即將被告知一個窗口剛剛被創(chuàng)建

      MFC應(yīng)用程序關(guān)閉窗口的順序(非模態(tài)窗口)

      1.OnClose()消息響應(yīng)函數(shù),響應(yīng)窗口的WM_CLOSE消息,當(dāng)關(guān)閉按鈕被單擊的時候發(fā)送此消息

      2.OnDestroy()消息響應(yīng)函數(shù),響應(yīng)窗口的WM_DESTROY消息,當(dāng)一個窗口將被銷毀時,發(fā)送此消息

      3.OnNcDestroy()消息響應(yīng)函數(shù),響應(yīng)窗口的WM_NCDESTROY消息,當(dāng)一個窗口被銷毀后發(fā)送此消息

      4.PostNcDestroy()重載函數(shù),作為處理OnNcDestroy()函數(shù)的最后動作,被CWnd調(diào)用

      MFC應(yīng)用程序中打開模式對話框的函數(shù)調(diào)用順序

      1.DoModal()重載函數(shù),重載DoModal()成員函數(shù) 2.PreSubclassWindow()重載函數(shù),允許首先子分類一個窗口

      3.OnCreate()消息響應(yīng)函數(shù),響應(yīng)WM_CREATE消息,發(fā)送此消息以告訴一個窗口已經(jīng)被創(chuàng)建

      4.OnSize()消息響應(yīng)函數(shù),響應(yīng)WM_SIZE消息,發(fā)送此消息以告訴窗口大小發(fā)生變化

      5.OnMove()消息響應(yīng)函數(shù),響應(yīng)WM_MOVE消息,發(fā)送此消息,以告訴窗口正在移動

      6.OnSetFont()消息響應(yīng)函數(shù),響應(yīng)WM_SETFONT消息,發(fā)送此消息,以允許改變對話框中控件的字體

      7.OnInitDialog()消息響應(yīng)函數(shù),響應(yīng)WM_INITDIALOG消息,發(fā)送此消息以允許初始化對話框中的控件,或者是創(chuàng)建新控件

      8.OnShowWindow()消息響應(yīng)函數(shù),響應(yīng)WM_SHOWWINDOW消息,該函數(shù)被ShowWindow()函數(shù)調(diào)用

      9.OnCtlColor()消息響應(yīng)函數(shù),響應(yīng)WM_CTLCOLOR消息,被父窗口發(fā)送已改變對話框或?qū)υ捒蛏厦婵丶念伾?/p>

      10.OnChildNotify()重載函數(shù),作為WM_CTLCOLOR消息的結(jié)果發(fā)送

      MFC應(yīng)用程序中關(guān)閉模式對話框的順序

      1.OnClose()消息響應(yīng)函數(shù),響應(yīng)WM_CLOSE消息,當(dāng)“關(guān)閉”按鈕被單擊的時候,該函數(shù)被調(diào)用

      2.OnKillFocus()消息響應(yīng)函數(shù),響應(yīng)WM_KILLFOCUS消息,當(dāng)一個窗口即將失去鍵盤輸入焦點(diǎn)以前被發(fā)送 3.OnDestroy()消息響應(yīng)函數(shù),響應(yīng)WM_DESTROY消息,當(dāng)一個窗口即將被銷毀時,被發(fā)送

      4.OnNcDestroy()消息響應(yīng)函數(shù),響應(yīng)WM_NCDESTROY消息,當(dāng)一個窗口被銷毀以后被發(fā)送

      5.PostNcDestroy()重載函數(shù),作為處理OnNcDestroy()函數(shù)的最后動作被CWnd調(diào)用

      打開無模式對話框的順序

      1.PreSubclassWindow()重載函數(shù),允許用戶首先子分類一個窗口

      2.OnCreate()消息響應(yīng)函數(shù),響應(yīng)WM_CREATE消息,發(fā)送此消息以告訴一個窗口已經(jīng)被創(chuàng)建

      3.OnSize()消息響應(yīng)函數(shù),響應(yīng)WM_SIZE消息,發(fā)送此消息以告訴窗口大小發(fā)生變化

      4.OnMove()消息響應(yīng)函數(shù),響應(yīng)WM_MOVE消息,發(fā)送此消息以告訴窗口正在移動

      5.OnSetFont()消息響應(yīng)函數(shù),響應(yīng)WM_SETFONT消息,發(fā)送此消息以允許改變對話框中控件的字體

      MFC的一些主要成員函數(shù)

      CWinThread::m_pMainWnd:保存指向應(yīng)用程序的主窗口指針。CWinThread::GetMainWnd:查詢指向線程主窗口的指針。CWinThread::InitInstance:重載以實(shí)現(xiàn)線程實(shí)例的初始化。AfxGetApp:獲得指向CWinApp對象的指針。

      AfxGetInstanceHandle:獲得當(dāng)前應(yīng)用程序?qū)嵗木浔?。AfxGetResourceHandle:獲得應(yīng)用程序資源的句柄。

      AfxGetAppName:獲得一個字符串指針,其中包含了應(yīng)用程序的名字。另外,如果你擁有一個指向CWinApp對象的指針,可以通過m_pszExename來獲得應(yīng)用程序的名字。

      CDocument::IsModified:標(biāo)識文檔從最近一次保存以來是否被修改過。CDocument::UpdateAllViews:通知所有視圖文檔已被修改的消息。CWnd::m_hWnd:指明與這個CWnd對象相關(guān)聯(lián)的HWND句柄。CWnd::Create:創(chuàng)建并初始化與CWnd對象相關(guān)聯(lián)的子窗口。

      CWnd::PreCreateWindow:在與CWnd對象相關(guān)聯(lián)的窗口被創(chuàng)建之前調(diào)用。CWnd::IsWindowEnabled:確定一個窗口是否允許鼠標(biāo)和鍵盤輸入。CWnd::EnableWindow:允許或禁止鼠標(biāo)和鍵盤輸入。CWnd::SetWindowPos:改變子窗口、彈出窗口和頂層窗口的大小、位置以及順序。CWnd::GetDlgItem:獲得指定的對話框中具有指定ID的控件。CWnd::UpdateData:初始化對話框或獲得對話框中的數(shù)據(jù)。CWnd::GetWindowRect:獲得CWnd的屏幕坐標(biāo)。CWnd::GetDC:獲得客戶區(qū)的設(shè)備環(huán)境。

      CWnd::RedrawWindow:更新客戶區(qū)中的指定矩形或區(qū)域。CWnd::UpdateWindow:更新客戶區(qū)。

      CWnd::Invalidate:使整個客戶區(qū)無效。CWnd::ShowWindow:顯示或隱藏窗口。

      CWnd::ClientToScreen:將給定點(diǎn)或顯示器上矩形的客戶區(qū)坐標(biāo)轉(zhuǎn)換為屏幕坐標(biāo)。

      CWnd::ScreenToClient:將給定點(diǎn)或顯示器上矩形的屏幕坐標(biāo)轉(zhuǎn)換為客戶坐標(biāo)。CWnd::SetWindowText:將窗口的文本或標(biāo)題文字(如果有)設(shè)為指定的文本。CWnd::SetFont:設(shè)置當(dāng)前字體。

      CWnd::GetDlgItemInt:將給定對話框中控件的文本轉(zhuǎn)換為整數(shù)。

      CWnd::SetTimer:安裝一個系統(tǒng)定時器,當(dāng)它被激活時,發(fā)送一個WM_TIMER消息。

      CWnd::KillTimer:銷毀一個系統(tǒng)定時器。CWnd::FlashWindow:使窗口閃爍一次。CWnd::MessageBox:創(chuàng)建并顯示一個窗口,其中包含了應(yīng)用程序提供的消息和標(biāo)題

      第三篇:實(shí)驗(yàn)一 VC開發(fā)環(huán)境的使用和常用算法的編程概要

      實(shí)驗(yàn)一 VC開發(fā)環(huán)境的使用和常用算法的編程

      一、實(shí)驗(yàn)?zāi)康?/p>

      熟悉VC++6.0的集成開發(fā)環(huán)境,學(xué)會用它編寫、調(diào)試、運(yùn)行程序。

      二、實(shí)驗(yàn)要求

      對VC++6.0集成開發(fā)環(huán)境進(jìn)行操作,用它編寫、調(diào)試和運(yùn)行常用的程序,初步掌握使用方法;在課后編程題目中任選一題,編好程序,上機(jī)進(jìn)行調(diào)試和運(yùn)行,同時養(yǎng)成好的程序書寫風(fēng)格。

      三、實(shí)驗(yàn)報告要求

      1.寫出編程題目;

      2.寫出題目分析(提取出算法和設(shè)計(jì)思路); 3.寫出源代碼;

      4.寫出多次運(yùn)行的記錄或出錯調(diào)試信息(上機(jī)時寫); 5.寫出實(shí)驗(yàn)后的心得體會(上機(jī)后寫)。

      四、上交源代碼要求

      1.從網(wǎng)絡(luò)提交;

      2.文件名包含:編程題目名稱、班級、姓名; 3.第二周前提交。

      第四篇:刀具和編程總結(jié)

      ① 白鋼刀(即高速鋼刀具)因其通體銀白色而得名,主要用于直壁加工。白鋼刀價格便宜,但切削壽命短、吃刀量小、進(jìn)給速度低、加工效率低,在數(shù)控加工中較少使用。

      ② 飛刀(即鑲嵌式刀具)主要為機(jī)夾式可轉(zhuǎn)位刀具,這種刀具剛性好、切削速度高,在數(shù)控加工中應(yīng)用非常廣泛,用于模胚的開粗、平面和曲面粗精加工效果均很好。

      ③ 合金刀(通常指的是整體式硬質(zhì)合金刀具)精度高、切削速度高,但價格昂貴,一般用于精加工。

      數(shù)控刀具與普通機(jī)床上所用的刀具相比,有以下不同的要求。

      (1)剛性好(尤其是粗加工刀具)、精度高、抗振及熱變形小。

      (2)互換性好,便于快速換刀。

      (3)壽命高,切削性能穩(wěn)定、可靠。

      (4)刀具的尺寸便于調(diào)整,以減少換刀調(diào)整時間。

      (5)刀具應(yīng)能可靠地斷屑或卷屑,以利于切屑的排除。(6)系列化、標(biāo)準(zhǔn)化,以利于編程和刀具管理。

      ① 刀具直徑越大,轉(zhuǎn)速越慢;同一類型的刀具,刀桿越長,吃刀量就要減小,否則容易彈刀而產(chǎn)生過切。

      ② 白鋼刀轉(zhuǎn)速不可過快,進(jìn)給速度不可過大。

      ③ 白鋼刀容易磨損,開粗時少用白鋼刀。

      ① 以上的飛刀參數(shù)只能作為參考,因?yàn)椴煌娘w刀材料其參數(shù)值也不相同,不同的刀具廠生產(chǎn)的飛刀其長度也略有不同。另外,刀具的參數(shù)值也因數(shù)控銑床或加工中心的性能和加工材料的不同而不同,所以刀具的參數(shù)一定要根據(jù)工廠的實(shí)際情況來設(shè)定。

      ② 飛刀的剛性好,吃刀量大,最適合模胚的開粗。另外,飛刀精加工陡峭面的質(zhì)量也非常好。③ 飛刀主要是鑲刀粒的,沒有側(cè)刃,① 合金刀剛性好,不易產(chǎn)生彈刀,用于精加工模具的效果最好。

      ② 合金刀和白鋼刀一樣有側(cè)刃,精銑銅公直壁時往往使用其側(cè)刃。

      ① 刀具的名稱一般根據(jù)刀具的直徑和圓角半徑來定義,例如,直徑為30,圓角半徑為5的飛刀,其名稱定義為D30R5;直徑為12的平底刀,其名稱定義為D12;半徑為5的球刀,其名稱定義為R5。

      ② 輸入刀具名稱時,只需要輸入小寫字母即可,系統(tǒng)會自動將字母轉(zhuǎn)為大寫狀態(tài)。③ 設(shè)置刀具參數(shù)時,只需要設(shè)置刀具的直徑和底圓角半徑即可,其他參數(shù)按默認(rèn)即可。加工時,編程人員還需要編寫加工工藝說明卡,注明刀具的類型和實(shí)際長度。

      機(jī)床坐標(biāo)一般在工件頂面的中心位置,所以創(chuàng)建機(jī)床坐標(biāo)時,最好先設(shè)置好當(dāng)前坐標(biāo),然后在〖CSYS〗對話框中設(shè)置“參考”為WCS。

      加工模具時,其開粗余量多設(shè)為0.5,但如果是加工銅公余量就不一樣了,因?yàn)殂~公(銅公是火花機(jī)放電加工用的電極)最后的結(jié)果是要留負(fù)余量的。

      模具加工要求越高時,其對應(yīng)的公差值就應(yīng)該越小。

      進(jìn)行實(shí)體模擬驗(yàn)證前,必須設(shè)置加工工件和毛坯,否則無法進(jìn)行實(shí)體模擬。

      第五篇:編程題總結(jié)

      C作業(yè)匯總

      1.short a,b=32767;/*short類型在內(nèi)存中占2B*/ a=b+1;問:a的值是多少?并分析原因。

      2.有一4位數(shù)整數(shù),假設(shè)用abcd表示,請把這個4位數(shù)的每個數(shù)位用表達(dá)式表示出來。3.從鍵盤輸入圓的半徑r,計(jì)算并輸出圓的面積s(要求:半徑r定義為float型;圓周率?定義為符號常量;面積s保留2位小數(shù))#define PI 3.14159 #include void main(){ float r,s;printf(“請輸入半徑r:n”);scanf(“%f”,&r);s=PI*r*r;printf(“面積是:%.2fn”,s);}

      4.輸入m>=3的正整數(shù),判斷m是否素數(shù)。畫出算法流程圖及NS圖

      5.有一函數(shù):

      x?1 ?x ?y??2x?1 1?x?10

      ?3x-11 x?10 ?寫一段程序,輸入x,輸出y值。

      要求x,y聲明為float類型,y保留2位小數(shù)。#include void main(){ float x,y;printf(“請輸入x的值:n”);scanf(“%f”,&x);

      if(x<1)

      y=x;else

      if(x<10)

      y=2*x-1;

      else

      y=3*x-11;

      }

      printf(“y=%.2fn”,y);

      x3x5x7x9?????,6.課后習(xí)題4.17(P159)利用泰勒級數(shù)sinx?x?計(jì)算sinx的3!5!7!9!值。要求最后一項(xiàng)的絕對值小于10,并統(tǒng)計(jì)出此時累加了多少項(xiàng)。#include #include void main(){ float x,sinx=0;float term;

      /*記錄每個項(xiàng)數(shù)*/ int n=1,count=0;/*count記錄累加了多少項(xiàng)*/

      printf(“請輸入x值(弧度):n”);scanf(“%f”,&x);

      term=x/n;while(fabs(term)>1e-5)

      /* while循環(huán)*/ {

      sinx+=term;

      count++;

      n+=2;

      term=-term*x*x/((n-1)*n);}

      /* do

      /*do while循環(huán)*/ {

      sinx+=term;

      count++;

      n+=2;

      term=-term*x*x/((n-1)*n);}while(fabs(term)>1e-5);

      */

      printf(“sin(%.2f)=%.4fn”,x,sinx);printf(“一共累加了:%d項(xiàng)。n”,count);}

      7.用牛頓迭代法求下面方程在1.5附近的根:

      2x?4x?3x?6?0 32?5

      牛頓迭代公式:

      x1?x0?f(x0)f?(x0)

      #include #include void main(){ float x0,x1=1.5;float y1,y2;

      /*y1記錄f(x0),y2記錄f(x0)的導(dǎo)數(shù)*/

      do {

      x0=x1;

      y1=2*x0*x0*x0-4*x0*x0+3*x0-6;

      y2=6*x0*x0-8*x0+3;

      x1=x0-y1/y2;}while(fabs(x1-x0)>1e-5);

      printf(“the root is:%.2fn”,x1);}

      8.寫一函數(shù),輸入一個16進(jìn)制整數(shù),輸出相應(yīng)的10進(jìn)制數(shù)。例:從鍵盤輸入2a,輸出結(jié)果是42。

      要求:若輸入數(shù)據(jù)不合法,則輸出提示信息。如輸入了35g,輸出“您輸入的16進(jìn)制數(shù)不合法!”。

      #include #include void main(){ char c;int sum=0;

      printf(“請輸入一個16進(jìn)制數(shù)字:n”);

      while((c=getchar())!='n'){

      if(c>='0' && c<='9')

      sum=sum*16+c-'0';

      else

      if(c>='a' && c<='f')

      sum=sum*16+c-87;

      else

      if(c>='A' && c<='F')

      sum=sum*16+c-55;

      else

      {

      printf(“您輸入的16進(jìn)制不合法.n”);

      exit(0);

      } }

      printf(“相應(yīng)的10進(jìn)制數(shù)是:%dn”,sum);} 方法2:用字符串處理的方式 #include #include void main(){ char str[20];int i,sum=0;

      printf(“請輸入一個16進(jìn)制數(shù)字:n”);gets(str);

      for(i=0;str[i];i++){

      if(str[i]>='0' && str[i]<='9')

      sum=sum*16+str[i]-'0';

      else

      if(str[i]>='a' && str[i]<='f')

      sum=sum*16+str[i]-87;

      else

      if(str[i]>='A' && str[i]<='F')

      sum=sum*16+str[i]-55;

      else

      {

      printf(“您輸入的16進(jìn)制不合法.n”);

      exit(0);

      } }

      printf(“相應(yīng)的10進(jìn)制數(shù)是:%dn”,sum);} 方法3:用字符數(shù)組及指針處理的方式 #include #include void main()

      { char str[20],*p=str;int sum=0;

      printf(“請輸入一個16進(jìn)制數(shù)字:n”);gets(p);

      while(*p){

      if(*p>='0' && *p<='9')

      sum=sum*16+*p-'0';

      else

      if(*p>='a' && *p<='f')

      sum=sum*16+*p-87;

      else

      if(*p>='A' && *p<='F')

      sum=sum*16+*p-55;

      else

      {

      printf(“您輸入的16進(jìn)制不合法.n”);

      exit(0);

      }

      p++;}

      printf(“相應(yīng)的10進(jìn)制數(shù)是:%dn”,sum);} 9.編寫一個小函數(shù),其功能是計(jì)算兩個整數(shù)的平均值,該函數(shù)要在主函數(shù)中調(diào)用。

      #include void main(){ int x,y;float avg;float average(int,int);printf(“輸入x,y的值,用空格分隔兩個數(shù):n”);scanf(“%d%d”,&x,&y);

      avg=average(x,y);

      printf(“%d,%d的平均值是:%.2fn”,x,y,avg);}

      float average(int x,int y)

      { return(x+y)/2.0;}

      10.有N(N用宏定義為符號常量)個元素的一維整型數(shù)組,該數(shù)組中各元素值從鍵盤隨機(jī)輸入。然后,將這個整型數(shù)組中的值逆序存放。例如,原來5個元素的順序?yàn)?、1、4、6、5,逆序之后各元素的值是5、6、4、1、8 #define N 5 #include void main(){ int a[N];int i,t;

      printf(“輸入%d個整數(shù),用空格或回車分隔:n”,N);for(i=0;i

      scanf(“%d”,&a[i]);

      printf(“數(shù)組原來的值是:n”);for(i=0;i

      printf(“%dt”,a[i]);

      for(i=0;i

      t=a[i];

      a[i]=a[N-1-i];

      a[N-1-i]=t;}

      printf(“n逆序之后數(shù)組的值是:n”);for(i=0;i

      printf(“%dt”,a[i]);

      printf(“n”);} 11.有N(N用宏定義為符號常量)個元素的一維整型數(shù)組,該數(shù)組中各元素值從鍵盤隨機(jī)輸入。然后,對該數(shù)組元素進(jìn)行由小到大排序(要求,該功能用函數(shù)實(shí)現(xiàn)),輸出數(shù)組中各元素值。最后,從鍵盤隨機(jī)輸入一個整數(shù),并把該整數(shù)插入上述數(shù)組中(該功能用函數(shù)實(shí)現(xiàn)),使得插入該整數(shù)后的數(shù)組仍然有序,輸出數(shù)組中各元素的值。#define N 5 #include void main(){ int a[N+1];

      int i,x;void sort(int array[],int n);void insert(int array[],int n,int x);

      printf(“輸入%d個整數(shù),用空格或回車分隔:n”,N);for(i=0;i

      scanf(“%d”,&a[i]);

      sort(a,N);

      /*調(diào)用sort對數(shù)組進(jìn)行排序*/

      printf(“n升序排序之后數(shù)組的值是:n”);for(i=0;i

      printf(“%d

      ”,a[i]);

      printf(“n輸入一個x值插入到數(shù)組中:n”);scanf(“%d”,&x);

      insert(a,N,x);

      printf(“n插入%d之后數(shù)組的值是:n”,x);for(i=0;i

      printf(“%d

      ”,a[i]);

      printf(“n”);}

      void sort(int array[],int n)/*用選擇法對數(shù)組array升序排序*/ { int i,j,t,min;

      for(i=0;i

      min=i;

      for(j=i+1;j

      if(array[j]

      min=j;

      if(min!=i)

      {

      t=array[i];

      array[i]=array[min];

      array[min]=t;

      } } }

      void insert(int array[],int n,int x){ int i,pos;

      for(i=0;i

      pos=i;

      for(i=n-1;i>=pos;i--)

      array[i+1]=array[i];

      array[pos]=x;}

      12.有一整型數(shù)組,N(N用宏定義為符號常量)個元素,該數(shù)組中各元素值從鍵盤隨機(jī)輸入。從鍵盤隨機(jī)輸入一個整數(shù)x,刪除該數(shù)組中值與x相同的所有元素(該功能用函數(shù)實(shí)現(xiàn)),輸出數(shù)組中各元素的值。#define N 5 #include void main(){ int a[N];int i,x,n;int delet(int a[],int n,int x);

      printf(“輸入%d個整數(shù),用空格或回車分隔:n”,N);for(i=0;i

      scanf(“%d”,&a[i]);

      printf(“數(shù)組原來的值是:n”);for(i=0;i

      printf(“%dt”,a[i]);

      printf(“n請輸入要刪除的值x:n”);scanf(“%d”,&x);

      n=delet(a,N,x);

      /*n值是刪除與x相同的元素后,數(shù)組剩余元素的個數(shù)。*/

      printf(“刪除%d之后數(shù)組的值是:n”,x);for(i=0;i

      printf(“%d

      ”,a[i]);

      printf(“n”);

      }

      int delet(int a[],int n,int x){ int i,j;

      for(i=0,j=0;i

      if(a[i]!=x)

      a[j++]=a[i];

      return j;}

      13.從鍵盤隨機(jī)輸入一字符串,將所有ASCII值為偶數(shù)的字符輸出。例如:輸入abc123,輸出結(jié)果是b2(因?yàn)閎的ASCII值是98,2的ASCII值是50,其他字符的ASCII值都是奇數(shù))

      #include #define N 40 void main(){ char str[N];int i;

      printf(“輸入字符串:n”);gets(str);

      printf(“ASCII碼是偶數(shù)的字符有:”);for(i=0;str[i];i++)

      if(str[i]%2==0)putchar(str[i]);

      printf(“n”);}

      14.從鍵盤輸入兩個字符串s1,s2,把s2連接到s1的末尾。不能用strcat函數(shù) #include #define N 40 void main(){ char str1[N],str2[N];void mystrcat(char *p1,char *p2);

      printf(“輸入兩個字符串,輸入回車鍵結(jié)束:n”);gets(str1);gets(str2);

      mystrcat(str1,str2);

      printf(“連接在一起的字符串是:n”);puts(str1);

      }

      void mystrcat(char *p1,char *p2){ while(*p1)p1++;while(*p2)

      *p1++=*p2++;*p1='