• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            CDateTimeCtrl 設定為“ShowNone” 為 True
            2.Format 初始化
            CDateTimeCtrl m_Date1;
            m_Date1.SetFormat(_T("yyyy'- 'MM'- 'dd"));
            3.Format初始化選擇確認框為空
            CDateTimeCtrl m_Date1;
            ::SendMessage( this->m_Date1.m_hWnd,(UINT)DTM_SETSYSTEMTIME,GDT_NONE, NULL);

            4.Format初始化選擇確認框變化是產生的動作

            voidPageDialog4::OnDtnDatetimechangeDatetimepicker1(NMHDR *pNMHDR,LRESULT *pResult)
            {
            LPNMDATETIMECHANGE pDTChange =reinterpret_cast<LPNMDATETIMECHANGE>(pNMHDR);
            // TODO: 在此添加控件通知處理程序代碼
            if(pDTChange->dwFlags == GDT_NONE)
            {
            this->m_Date2.EnableWindow(FALSE);
            }
            else if (pDTChange->dwFlags == GDT_VALID)
            {
            if( this->m_Date2.IsWindowEnabled() == FALSE)
            {
            this->m_Date2.EnableWindow(TRUE);
            CTime theTime = CTime::GetCurrentTime();
            this->m_Date1.SetTime(&theTime);
            this->m_Date2.SetTime(&theTime);
            }
            }

            *pResult= 0;
            }

            5.獲取時間

            CTimetimeTime;
            CString szDate;
            CDateTimeCtrl* pCtrl =&this->m_Date1;
            DWORD dwResult =pCtrl->GetTime(timeTime);
            if (dwResult == GDT_VALID)
            {
            szDate = timeTime.Format(TEXT("%Y/%m/%d"));
            }

            獲取時間的第二種方法:


            6.根據Format格式設定時間

            CTime theTime = CTime::GetCurrentTime();
            this->m_Date1.SetTime(&theTime);

            posted @ 2012-11-06 15:03 Mumoo 閱讀(4004) | 評論 (0)編輯 收藏
             
            本文轉載至http://www.shnenglu.com/jialisoft/archive/2012/10/11/193149.html
             

            學習VC++時經常會遇到鏈接錯誤LNK2001,該錯誤非常討厭,因為對于編程者來說,最好改的錯誤莫過于編譯錯誤,而一般說來發生連接錯誤時,編譯都已通過。產生連接錯誤的原因非常多,尤其LNK2001錯誤,常常使人不明其所以然。如果不深入地學習和理解VC++,要想改正連接錯誤LNK2001非常困難

            unresolved external symbol (不確定的外部符號)。

            如果連接程序不能在所有的庫和目標文件內找到所引用的函數、變量或標簽,將產生此錯誤消息。一般來說,發生錯誤的原因有兩個:

            (1) 所引用的函數、變量不存在、拼寫不正確或者使用錯誤;

            (2) 可能使用了不同版本的連接庫。

            以下是可能產生LNK2001錯誤的原因:   
            1. 由于編碼錯誤導致的LNK2001   
            (1) 不相匹配的程序代碼或模塊定義(.DEF)文件能導致LNK2001。例如,   如果在C++   源文件內聲明了一變量“var1”,卻試圖在另一文件內以變量“VAR1”訪問該變量,將發生該錯誤。   
            (2) 如果使用的內聯函數是在.CPP文件內定義的,而不是在頭文件內定義將導致LNK2001錯誤。   
            (3) 調用函數時如果所用的參數類型同函數聲明時的類型不符將會產生LNK2001   
            (4) 試圖從基類的構造函數或析構函數中調用虛擬函數時將會導致LNK2001   
            (5) 要注意函數和變量的可公用性,只有全局變量、函數是可公用的。 靜態函數和靜態變量具有相同的使用范圍限制。當試圖從文件外部訪問任何沒有在該文件內聲明的靜態變量時將導致編譯錯誤或LNK2001   
            函數內聲明的變量(局部變量)   只能在該函數的范圍內使用。 
            C++的全局常量只有靜態連接性能。這不同于C,如果試圖在C++的多個文件內使用全局變量也會產生LNK2001錯誤。一種解決的方法是需要時在頭文件中加入該常量的初始化代碼,并在.CPP文件中包含該頭文件;另一種方法是使用時給該變量賦以常數。 
              
            2. 由于編譯和鏈接的設置而造成的LNK2001 
            (1) 如果編譯時使用的是/NOD(/NODEFAULTLIB)選項,程序所需要的運行庫和MFC庫在連接時由編譯器寫入目標文件模塊,   但除非在文件中明確包含這些庫名,否則這些庫不會被鏈接進工程文件。在這種情況下使用/NOD將導致錯誤LNK2001   
            (2) 如果沒有為wWinMainCRTStartup設定程序入口,在使用UnicodeMFC時將得到“unresolved   external   on   _WinMain@16”LNK2001錯誤信息。   
            (3)使用/MD選項編譯時,既然所有的運行庫都被保留在動態鏈接庫之內,源文件中對“func”的引用,在目標文件里即對“__imp__func”   的引用。如果試圖使用靜態庫LIBC.LIBLIBCMT.LIB進行連接,將在__imp__func上發生LNK2001;如果不使用/MD選項編譯,在使用MSVCxx.LIB連接時也會發生LNK2001   
            (4)使用/ML選項編譯時,如用LIBCMT.LIB鏈接會在_errno上發生LNK2001   
            (5)當編譯調試版的應用程序時,如果采用發行版模態庫進行連接也會產生LNK2001;同樣,使用調試版模態庫連接發行版應用程序時也會產生相同的問題。   
            (6) 不同版本的庫和編譯器的混合使用也能產生問題,因為新版的庫里可能包含早先的版本沒有的符號和說明。   
            (7) 在不同的模塊使用內聯和非內聯的編譯選項能夠導致LNK2001。如果創建C++庫時打開了函數內聯(/Ob1/Ob2),但是在描述該函數的相應頭文件里卻關閉了函數內聯(沒有inline關鍵字),這時將得到該錯誤信息。為避免該問題的發生,應該在相應的頭文件中用inline關鍵字標志內聯函數。   

            (8) 不正確的/SUBSYSTEM/ENTRY設置也能導致LNK2001

            其實,產生LNK2001的原因還有很多,以上的原因只是一部分而已。

            上面錯誤的原因是在程序中違反了標準C++的規定而引起的。下面還要說明一中由于編譯器而引起的錯誤:

            在標準C++中模板類的定義和實現是不能分開的,原因是類模板和函數模板都不是真正的定義,真正的定義是在模板實例化時由編譯器生成的。如果將模板的定義和實現分離的話,編譯器在生成定義時就會因為找不到實現而報錯。

            在標準C++中模板類的定義和實現是可以像普通類一樣分開來存放(類定義放在.h中,類實現放在.cpp)。然而這個實現起來太困難,所以大多數編譯器都不支持(比如VC)。這樣,如果在VC中編譯代碼,代碼中將模板的定義和實現分開了,就會產生LNK2001的錯誤。

            posted @ 2012-10-22 15:19 Mumoo 閱讀(955) | 評論 (0)編輯 收藏
             
            SilentInstall silent —— 設置靜默安裝 此狀態下可使用 MessageBox 的 /SD 參數來指定靜默安裝時默認的返回值

            HKLM——Local Machine
            HKCU——Current User
            posted @ 2012-09-27 17:48 Mumoo 閱讀(465) | 評論 (0)編輯 收藏
             
            ListCtrl的InsertItem方法默認首列不相同,若首列值相同,則每次均插入第0行。
            修改算法如下:
            int nSize = 100;

            int nCount = 0;
             for (int i = 0; i < nSize; i++)
             {
               CString sValue;
              sValue.Format("%d", nCount);

              int nInsLine = InsertItem(nCount, sValue);
              nCount++;

              int nColumn = 0;
              for (int j = 0; j < vRecord.size(); j++)
              {
                 sValue = recordItem.sValue;
                 SetItemText(nInsLine, nColumn, sValue);
               nColumn++; 
              }
             }

            posted @ 2012-09-04 14:48 Mumoo 閱讀(310) | 評論 (0)編輯 收藏
             
            //Source:AllCode_Release?/PCPrintManage?/USBRegedit;
               //Dest:   PCPrintManage
               int nURLFindFirstSecond = sURL.ReverseFind('?');
               ASSERT(nURLFindFirstSecond != -1);
               CString sMidDir = sURL.Mid(nURLFindFirst+2, nURLFindFirstSecond-(nURLFindFirst+2));
               sSubCodeOutPath = m_sCodeOutPath + "\\" + sMidDir;
               sSubCodeOutPath.Replace("?", "");
            posted @ 2012-08-23 17:27 Mumoo 閱讀(713) | 評論 (0)編輯 收藏
             
            1)創建CStatic Control變量 m_sStatic;
            2)OnInit函數中 調用:m_sStatic.SetWindowText(sName);
            posted @ 2012-07-20 10:17 Mumoo 閱讀(862) | 評論 (0)編輯 收藏
             
            對話框類中添加消息函數(Messages) WM_OnContextMenu
             afx_msg void OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/); //函數聲明

             void CBarView::OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/) //函數體
             {
              // TODO: Add your message handler code here
              CMenu menu;
              menu.LoadMenu(IDR_RIGHTMENU);
              CMenu* pop=menu.GetSubMenu(0);
              POINT ptMouse;
              GetCursorPos(&ptMouse);
              pop->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,ptMouse.x,ptMouse.y, this);

             }



            posted @ 2012-07-10 15:35 Mumoo 閱讀(1185) | 評論 (0)編輯 收藏
             

            1.
              所有變量定義位于函數開始處。

            2.
             盡量避免全局變量,全局變量需于實現文件中定義,頭文件中extern聲明。

            3.
            浮點零值比較采用區間值。

            4.
            保證正確的前提下盡量使用移位運算。

            5.
            If語句、switch語句優先處理出現概率大的情況。

            6.
             指針與NULL比較反寫如:NULL==p。

            7.
             循環嵌套時最長的循環放內層短的放外層。

            8.
            盡量不在循環體內修改循環變量。

            9.
            凡是無返回值、無參數、任意類型指針參數的函數均使用void或void指針。

            10.
            適當使用const,使用目的限于節省空間、提高效率、不允許修改或可能產生的函數參數修改。

            11.
            對于可變、多變的寄存器變量、多線程共享變量,在經過代碼優化處理的releas版本下需使用volatile類型修飾符修飾變量。

            12.
            多參數函數應使用結構體減少參數個數。

            13.
            負數右移操作時會帶上符號位,高位補零或補一取決編譯器。左移或右移時移動位數不能大于數據的存儲位數。

            14.
             Release版下assert()語句無效,故非調試狀態下還是可能出現數據溢出而不報錯。

            15.
            使用宏定義#define定義文件路徑時候使用帶雙引號、雙反斜杠的字符串。宏定義函數時候盡可能的使用括號。宏定義中的換行接續后和行起始處保證無任何字符。

            16.
            一種變量名稱代表一段有限空間,其內容稱為值,c/c++中稱之為從左值到右值的轉換。另一種變量是一段有限空間的引用,同時規定空間的長度(數組)。

            17.
            創建動態二維數組(指向指針的指針)一維使用new char*[一維度] 或者 (char**)malloc(一維度).二維循環于一維下動態創建new char[二維度] 或者(char*)malloc(二維度)。釋放動態二維數組剛好相反,先循環釋放二維,再釋放一維。

            18.
            使用vector作為全局變量時候存在問題。release版下push_back()會出現錯誤,估計是vector本身具有動態擴展性而做為全局變量其空間大小是固定的。如果允許其變量使用push_back添加數據則可能導致堆數據破壞。解決辦法是將變量定義于類中并完成push_back再賦值于全局變量。

            19.
            利用字符創的結束標識'/0' (其ascII 碼是 0,0x00)而非空格(其ascII 碼是 32,0x20)可判斷字符串結束以否,并可以移動指針的方式計算字符串的大小。

            20.
            Dll庫,不但可以導出函數接口,也可以導出類。如:calss _declspec(dllexport) CALSSNAME{}; class _declspec(dllimport) CLASSNAME{};#pragma comment(lib,"path")。

            21.
            合理使用整數的/ 和 % 可取得整數(浮點數整數部分)的各個位數(%10 /10),合理使用h,p,q,t做循環下的指針移動可以構建鏈表和逆序鏈表。合理利用數組下標可實現折半循環逆序數組(字符串)

            22.
            int a= 4; (++a) += (a++)  a= ?

            23.
            字符數組的大小不要忘了最后的'/0'(字符指針不能使用sizeof(point)計算)。

            24.
            free后的內存空間只是被標記為了可重新分配,但作為該進程的內存塊他依然具有讀寫權限,為了避免內存混亂需要NULL指針避免野指針的存在。

            25.
            不存在下載文件夾的說法,只有下載文件數據和文件目錄信息,文件夾于本地創建。

            26.
            使用哈希查找加速檢索,哈希過程就是建立直接索引的過程,經過哈希處理的數據在查找時候可以通過函數計算后直接定位(哈希表的索引值相當于數組索引直接定位)到該數據。哈希不能做到百分百的唯一,所以需要處理哈希沖突,通常使用鏈表加關鍵值匹配。

            27.
            減少程序與外存的交互次數可提速程序執行,考慮使用鏈表一次加載多次使用、內存塊分配或者文件映射等方法。

            28.
            對大數據大文件的處理,考慮使用多線程均分工作任務的辦法從而可降低對處理器的占用率。

            posted @ 2012-06-21 16:45 Mumoo 閱讀(413) | 評論 (0)編輯 收藏
             

            string 轉 CString
            CString.format("%s", string.c_str());

            char 轉 CString
            CString.format("%s", char*);

            char 轉 string
            string s(char *);

            string 轉 char *
            char *p = string.c_str();

            CString 轉 string
            string CStringTostring(CString str)
            {
            string s;

            s.append(str.GetBuffer(str.GetLength()));

            str.ReleaseBuffer();

            return s;

            }

            1,string -> CString
            CString.format("%s", string.c_str());
            用c_str()確實比data()要好.
            2,char -> string
            string s(char *);
            你的只能初始化,在不是初始化的地方最好還是用assign().


            C++標準函數庫》中說的
            有三個函數可以將字符串的內容轉換為字符數組和C—string
            1.data(),返回沒有”{post.content}“的字符串數組
            2,c_str(),返回有”{post.content}“的字符串數組
            3,copy()

            ---------------------------------------------------------------

            CString與int、char*、char[100]之間的轉換- -


            CString與int、char*、char[100]之間的轉換- -



            CString互轉int

            將字符轉換為整數,可以使用atoi、_atoi64或atol。
            而將數字轉換為CString變量,可以使用CString的Format函數。如
            CString s;
            int i = 64;
            s.Format("%d", i)
            Format函數的功能很強,值得你研究一下。

            void CStrDlg::OnButton1()
            {
            // TODO: Add your control notification handler code here
            CString
            ss="1212.12";
            int temp=atoi(ss);
            CString aa;
            aa.Format("%d",temp);
            AfxMessageBox("var is " + aa);
            }

            sart.Format("%s",buf);

            CString互轉char*

            ///char * TO cstring
            CString strtest;
            char * charpoint;
            charpoint="give string a value";
            strtest=charpoint;


            ///cstring TO char *
            charpoint=strtest.GetBuffer(strtest.GetLength());

            標準C里沒有string,char *==char []==string

            可以用CString.Format("%s",char *)這個方法來將char *轉成CString。要把CString轉成char *,用操作符(LPCSTR)CString就可以了。


            CString轉換 char[100]

            char a[100];
            CString str("aaaaaa");
            strncpy(a,(LPCTSTR)str,sizeof(a));

            posted @ 2012-06-21 15:25 Mumoo 閱讀(327) | 評論 (0)編輯 收藏
             

            BOOL  MergeXMLToDesXML(const CString &sDesXMLPath, const CString &sSrcXMLPath)
            {
             TiXmlDocument XmlDocSrc(sSrcXMLPath);
             if (!XmlDocSrc.LoadFile())
             {
              LOG("GetJobXMLInfo:加載XML文件%s失敗", sSrcXMLPath);
              return FALSE;
             }

             TiXmlDocument XmlDocDes(sDesXMLPath);
             if (!XmlDocDes.LoadFile())
             {
              LOG("GetJobXMLInfo:加載XML文件%s失敗", sDesXMLPath);
              return FALSE;
             }

             TiXmlElement *pFirstChildSrc = XmlDocSrc.FirstChildElement("Root");

             TiXmlElement *pFirstChildDes = XmlDocDes.FirstChildElement("Root");
             if (TiXmlElement* pRecordAtributeDes = pFirstChildDes->FirstChildElement("FirstChild"))
             {
              while(pRecordAtributeDes)
              {
               pFirstChildSrc->InsertEndChild(*pRecordAtributeDes); 
               pRecordAtributeDes = pRecordAtributeDes->NextSiblingElement();
              }
             }

             XmlDocSrc.SaveFile(sDesXMLPath);
             return TRUE;
            }

            posted @ 2012-06-18 17:53 Mumoo 閱讀(1123) | 評論 (0)編輯 收藏
            僅列出標題
            共4頁: 1 2 3 4 
             
            99久久精品这里只有精品| 久久久久亚洲AV片无码下载蜜桃| 久久久久久久波多野结衣高潮| 婷婷久久五月天| 日本精品久久久久中文字幕| 午夜天堂精品久久久久| 四虎久久影院| 精品无码人妻久久久久久| 72种姿势欧美久久久久大黄蕉 | 国产亚洲精久久久久久无码77777| 精品综合久久久久久97超人| 97久久国产综合精品女不卡| 精品国产乱码久久久久久郑州公司| 热99RE久久精品这里都是精品免费 | 久久综合久久综合久久| 亚洲欧洲久久av| 伊人久久大香线蕉综合5g| 久久精品蜜芽亚洲国产AV| 久久久久免费看成人影片| 久久夜色精品国产www| 久久精品视频一| 国产香蕉97碰碰久久人人| 久久久噜噜噜久久熟女AA片 | 亚洲午夜久久久久久噜噜噜| 久久久久国产精品| 久久国产精品一国产精品金尊| 狠狠色丁香婷婷久久综合| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 99久久久精品| 午夜精品久久久久久久久| 无码任你躁久久久久久老妇App| 国产成人无码精品久久久久免费 | 国产亚洲色婷婷久久99精品91 | 伊人久久大香线蕉影院95| 无码精品久久久久久人妻中字 | 色综合久久天天综线观看| 久久久久国产精品麻豆AR影院 | 欧美伊香蕉久久综合类网站| 精品久久人妻av中文字幕| 久久久久久午夜成人影院| 欧美大香线蕉线伊人久久|