• <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 設(shè)定為“ShowNone” 為 True
            2.Format 初始化
            CDateTimeCtrl m_Date1;
            m_Date1.SetFormat(_T("yyyy'- 'MM'- 'dd"));
            3.Format初始化選擇確認(rèn)框?yàn)榭?/font>
            CDateTimeCtrl m_Date1;
            ::SendMessage( this->m_Date1.m_hWnd,(UINT)DTM_SETSYSTEMTIME,GDT_NONE, NULL);

            4.Format初始化選擇確認(rèn)框變化是產(chǎn)生的動(dòng)作

            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.獲取時(shí)間

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

            獲取時(shí)間的第二種方法:


            6.根據(jù)Format格式設(shè)定時(shí)間

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

            posted @ 2012-11-06 15:03 Mumoo 閱讀(4026) | 評(píng)論 (0)編輯 收藏
             
            本文轉(zhuǎn)載至http://m.shnenglu.com/jialisoft/archive/2012/10/11/193149.html
             

            學(xué)習(xí)VC++時(shí)經(jīng)常會(huì)遇到鏈接錯(cuò)誤LNK2001,該錯(cuò)誤非常討厭,因?yàn)閷?duì)于編程者來(lái)說(shuō),最好改的錯(cuò)誤莫過(guò)于編譯錯(cuò)誤,而一般說(shuō)來(lái)發(fā)生連接錯(cuò)誤時(shí),編譯都已通過(guò)。產(chǎn)生連接錯(cuò)誤的原因非常多,尤其LNK2001錯(cuò)誤,常常使人不明其所以然。如果不深入地學(xué)習(xí)和理解VC++,要想改正連接錯(cuò)誤LNK2001非常困難

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

            如果連接程序不能在所有的庫(kù)和目標(biāo)文件內(nèi)找到所引用的函數(shù)、變量或標(biāo)簽,將產(chǎn)生此錯(cuò)誤消息。一般來(lái)說(shuō),發(fā)生錯(cuò)誤的原因有兩個(gè):

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

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

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

            (8) 不正確的/SUBSYSTEM/ENTRY設(shè)置也能導(dǎo)致LNK2001

            其實(shí),產(chǎn)生LNK2001的原因還有很多,以上的原因只是一部分而已。

            上面錯(cuò)誤的原因是在程序中違反了標(biāo)準(zhǔn)C++的規(guī)定而引起的。下面還要說(shuō)明一中由于編譯器而引起的錯(cuò)誤:

            在標(biāo)準(zhǔn)C++中模板類的定義和實(shí)現(xiàn)是不能分開(kāi)的,原因是類模板和函數(shù)模板都不是真正的定義,真正的定義是在模板實(shí)例化時(shí)由編譯器生成的。如果將模板的定義和實(shí)現(xiàn)分離的話,編譯器在生成定義時(shí)就會(huì)因?yàn)檎也坏綄?shí)現(xiàn)而報(bào)錯(cuò)。

            在標(biāo)準(zhǔn)C++中模板類的定義和實(shí)現(xiàn)是可以像普通類一樣分開(kāi)來(lái)存放(類定義放在.h中,類實(shí)現(xiàn)放在.cpp)。然而這個(gè)實(shí)現(xiàn)起來(lái)太困難,所以大多數(shù)編譯器都不支持(比如VC)。這樣,如果在VC中編譯代碼,代碼中將模板的定義和實(shí)現(xiàn)分開(kāi)了,就會(huì)產(chǎn)生LNK2001的錯(cuò)誤。

            posted @ 2012-10-22 15:19 Mumoo 閱讀(979) | 評(píng)論 (0)編輯 收藏
             
            SilentInstall silent —— 設(shè)置靜默安裝 此狀態(tài)下可使用 MessageBox 的 /SD 參數(shù)來(lái)指定靜默安裝時(shí)默認(rèn)的返回值

            HKLM——Local Machine
            HKCU——Current User
            posted @ 2012-09-27 17:48 Mumoo 閱讀(478) | 評(píng)論 (0)編輯 收藏
             
            ListCtrl的InsertItem方法默認(rèn)首列不相同,若首列值相同,則每次均插入第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 閱讀(324) | 評(píng)論 (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 閱讀(725) | 評(píng)論 (0)編輯 收藏
             
            1)創(chuàng)建CStatic Control變量 m_sStatic;
            2)OnInit函數(shù)中 調(diào)用:m_sStatic.SetWindowText(sName);
            posted @ 2012-07-20 10:17 Mumoo 閱讀(878) | 評(píng)論 (0)編輯 收藏
             
            對(duì)話框類中添加消息函數(shù)(Messages) WM_OnContextMenu
             afx_msg void OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/); //函數(shù)聲明

             void CBarView::OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/) //函數(shù)體
             {
              // 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 閱讀(1201) | 評(píng)論 (0)編輯 收藏
             

            1.
              所有變量定義位于函數(shù)開(kāi)始處。

            2.
             盡量避免全局變量,全局變量需于實(shí)現(xiàn)文件中定義,頭文件中extern聲明。

            3.
            浮點(diǎn)零值比較采用區(qū)間值。

            4.
            保證正確的前提下盡量使用移位運(yùn)算。

            5.
            If語(yǔ)句、switch語(yǔ)句優(yōu)先處理出現(xiàn)概率大的情況。

            6.
             指針與NULL比較反寫(xiě)如:NULL==p。

            7.
             循環(huán)嵌套時(shí)最長(zhǎng)的循環(huán)放內(nèi)層短的放外層。

            8.
            盡量不在循環(huán)體內(nèi)修改循環(huán)變量。

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

            10.
            適當(dāng)使用const,使用目的限于節(jié)省空間、提高效率、不允許修改或可能產(chǎn)生的函數(shù)參數(shù)修改。

            11.
            對(duì)于可變、多變的寄存器變量、多線程共享變量,在經(jīng)過(guò)代碼優(yōu)化處理的releas版本下需使用volatile類型修飾符修飾變量。

            12.
            多參數(shù)函數(shù)應(yīng)使用結(jié)構(gòu)體減少參數(shù)個(gè)數(shù)。

            13.
            負(fù)數(shù)右移操作時(shí)會(huì)帶上符號(hào)位,高位補(bǔ)零或補(bǔ)一取決編譯器。左移或右移時(shí)移動(dòng)位數(shù)不能大于數(shù)據(jù)的存儲(chǔ)位數(shù)。

            14.
             Release版下assert()語(yǔ)句無(wú)效,故非調(diào)試狀態(tài)下還是可能出現(xiàn)數(shù)據(jù)溢出而不報(bào)錯(cuò)。

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

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

            17.
            創(chuàng)建動(dòng)態(tài)二維數(shù)組(指向指針的指針)一維使用new char*[一維度] 或者 (char**)malloc(一維度).二維循環(huán)于一維下動(dòng)態(tài)創(chuàng)建new char[二維度] 或者(char*)malloc(二維度)。釋放動(dòng)態(tài)二維數(shù)組剛好相反,先循環(huán)釋放二維,再釋放一維。

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

            19.
            利用字符創(chuàng)的結(jié)束標(biāo)識(shí)'/0' (其ascII 碼是 0,0x00)而非空格(其ascII 碼是 32,0x20)可判斷字符串結(jié)束以否,并可以移動(dòng)指針的方式計(jì)算字符串的大小。

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

            21.
            合理使用整數(shù)的/ 和 % 可取得整數(shù)(浮點(diǎn)數(shù)整數(shù)部分)的各個(gè)位數(shù)(%10 /10),合理使用h,p,q,t做循環(huán)下的指針移動(dòng)可以構(gòu)建鏈表和逆序鏈表。合理利用數(shù)組下標(biāo)可實(shí)現(xiàn)折半循環(huán)逆序數(shù)組(字符串)

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

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

            24.
            free后的內(nèi)存空間只是被標(biāo)記為了可重新分配,但作為該進(jìn)程的內(nèi)存塊他依然具有讀寫(xiě)權(quán)限,為了避免內(nèi)存混亂需要NULL指針避免野指針的存在。

            25.
            不存在下載文件夾的說(shuō)法,只有下載文件數(shù)據(jù)和文件目錄信息,文件夾于本地創(chuàng)建。

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

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

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

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

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

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

            char 轉(zhuǎn) string
            string s(char *);

            string 轉(zhuǎn) char *
            char *p = string.c_str();

            CString 轉(zhuǎn) 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()確實(shí)比data()要好.
            2,char -> string
            string s(char *);
            你的只能初始化,在不是初始化的地方最好還是用assign().


            C++標(biāo)準(zhǔn)函數(shù)庫(kù)》中說(shuō)的
            有三個(gè)函數(shù)可以將字符串的內(nèi)容轉(zhuǎn)換為字符數(shù)組和C—string
            1.data(),返回沒(méi)有”{post.content}“的字符串?dāng)?shù)組
            2,c_str(),返回有”{post.content}“的字符串?dāng)?shù)組
            3,copy()

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

            CString與int、char*、char[100]之間的轉(zhuǎn)換- -


            CString與int、char*、char[100]之間的轉(zhuǎn)換- -



            CString互轉(zhuǎn)int

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

            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互轉(zhuǎn)char*

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


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

            標(biāo)準(zhǔn)C里沒(méi)有string,char *==char []==string

            可以用CString.Format("%s",char *)這個(gè)方法來(lái)將char *轉(zhuǎn)成CString。要把CString轉(zhuǎn)成char *,用操作符(LPCSTR)CString就可以了。


            CString轉(zhuǎn)換 char[100]

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

            posted @ 2012-06-21 15:25 Mumoo 閱讀(338) | 評(píng)論 (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 閱讀(1145) | 評(píng)論 (0)編輯 收藏
            僅列出標(biāo)題
            共4頁(yè): 1 2 3 4 
             
            久久精品蜜芽亚洲国产AV| 国产精品免费看久久久香蕉| 久久精品一区二区三区AV| 亚洲狠狠婷婷综合久久久久| 91精品国产乱码久久久久久| 久久久国产一区二区三区| 麻豆AV一区二区三区久久| 88久久精品无码一区二区毛片| 久久这里只有精品视频99| 久久久久久国产精品无码超碰| 日本高清无卡码一区二区久久| AV无码久久久久不卡蜜桃| 婷婷久久五月天| 久久成人18免费网站| 久久人妻少妇嫩草AV无码专区| 青青青青久久精品国产h久久精品五福影院1421 | 亚洲国产精品热久久| 久久精品国产男包| 亚洲国产成人精品无码久久久久久综合 | 久久青青草原亚洲av无码app | 久久这里只有精品视频99| 久久精品成人免费网站| 亚洲欧美成人综合久久久| 一97日本道伊人久久综合影院| 91精品国产91久久久久久蜜臀| 久久99精品国产麻豆| 国产亚洲色婷婷久久99精品| 日韩AV无码久久一区二区| 国产激情久久久久久熟女老人| 色综合久久久久综合99| 久久久青草青青国产亚洲免观| 精品久久久久久国产牛牛app| 国产综合免费精品久久久| 国产香蕉97碰碰久久人人| 91精品国产高清久久久久久91| 免费观看成人久久网免费观看| 秋霞久久国产精品电影院| 久久国产福利免费| 久久精品国产欧美日韩99热| 7777精品久久久大香线蕉| 91精品国产综合久久婷婷|