• <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>

            驀然回首,那人卻在燈火闌珊處

            默默走在編譯的路上,不知道何時才生成.exe文件
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            統計

            • 隨筆 - 13
            • 文章 - 0
            • 評論 - 8
            • 引用 - 0

            常用鏈接

            留言簿(1)

            隨筆檔案

            csdn

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            2009年9月22日

            網頁賬號 自動登錄 學習筆記(一)

            使用wininet
            一般流程:
            1,

            BOOL AFXAPI AfxParseURLEx(
            LPCTSTR pstrURL,
            DWORD& dwServiceType,
            CString& strServer,
            CString& strObject,
            INTERNET_PORT& nPort,
            CString& strUsername,
            CString& strPassword,
            DWORD dwFlags = 0
            );  使用該函數解析URP
            其中 strServer  :The first segment of the URL following the service type.
            2,
            GetHttpConnection()
            3,
            OpenRequest()
            4,
            AddRequestHeaders() 通用頭 域包含請求和響應消息都支持的頭域
            5,
            SendRequest
            6,
            QueryInfo
             

            posted @ 2009-09-22 10:01 裁縫 閱讀(653) | 評論 (0)編輯 收藏

            2009年5月20日

            Static控件背景透明時文字覆蓋問題


            pDC->SetBkMode(TRANSPARENT);
            設置透明后,要改變控件的文字就會發生文字重疊,如果不使用透明就不會,
            請問在透明狀態下改變文字如何不發生重疊?


            static的背景已經是透明的了,那么殘留的文本應該是畫在static的父窗口上的。


            辦法有了:在給
            static
            設置新的文本之后(不是之前!)刷新窗口。

            void CTestStaticDlg::OnTimer(UINT nIDEvent)

            {

                   CString strTime;

                   CTime time = CTime::GetCurrentTime();

                   strTime = time.Format("%y%m%d %H:%M:%S");

             

                   GetDlgItem(IDC_STATIC)->SetWindowText(strTime);

                   GetDlgItem(IDC_STATIC)->GetParent()->RedrawWindow(); //就這兩句話而已,呵呵

                   CDialog::OnTimer(nIDEvent);

            }

            posted @ 2009-05-20 16:24 裁縫 閱讀(581) | 評論 (0)編輯 收藏

            2009年4月23日

            對話框中接受鍵盤消息

            PreTranslateMessage(MSG*   pMsg)    
              {  
              if(   pMsg->message   ==   WM_KEYDOWN   )  
              {                  
              switch(   pMsg->wParam   )  
              {  
              case   VK_RETURN:  
              AfxMessageBox("return");  
              }  
              }  
              return   CDialog::PreTranslateMessage(pMsg);  
              }  

            重寫該函數,  就可以截獲鍵盤消息.

            posted @ 2009-04-23 16:20 裁縫 閱讀(478) | 評論 (0)編輯 收藏

            2009年4月22日

            VC 連接ACCESS ado

             1void CTestdbDlg::OnOK() 
             2{
             3    // TODO: Add extra validation here
             4    //AfxOleInit();    
             5    CoInitialize(NULL);  //初始化
             6    //打開數據庫
             7    _ConnectionPtr m_pConnection;
             8    try
             9    {
            10        m_pConnection.CreateInstance("ADODB.Connection");
            11        //    ASSERT(m_pConnection != NULL);
            12        _bstr_t strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Persist Security Info=False";
            13        m_pConnection->ConnectionTimeout=5//設置超時時間為5秒
            14        m_pConnection->Open(strConnect,"","",adModeUnknown);
            15    }

            16    catch(_com_error e)
            17    {
            18        AfxMessageBox(e.ErrorMessage());
            19    }

            20    _RecordsetPtr m_pRecordset; //一個指向Recordset對象的指針
            21    //查詢 
            22    CString    sql="select sno From [sn]  ";
            23      try
            24      
            25            m_pRecordset.CreateInstance(__uuidof(Recordset));
            26            m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
            27            while(!m_pRecordset->GetadoEOF())
            28            {
            29                _variant_t var;
            30                var=m_pRecordset->GetCollect("sno");
            31                if(var.vt != VT_NULL)
            32                {
            33                     CString strValue =(LPCSTR)_bstr_t(var);
            34                     MessageBox(strValue);
            35                }

            36                m_pRecordset->MoveNext();
            37            }

            38      }

            39      catch(_com_error e)///捕捉異常
            40      {
            41        AfxMessageBox(e.ErrorMessage());
            42        AfxMessageBox(e.Source());
            43            AfxMessageBox(e.Description());   
            44      }

            45    //更新
            46     _bstr_t    sql2="update [sn] set name='sss' where sno=3";
            47    _variant_t RecordsAffected;
            48    m_pConnection->Execute(sql2,&RecordsAffected,adCmdText);
            49    m_pRecordset->Close();///關閉記錄集
            50    m_pConnection->Close();///關閉連接
            51//    AfxOleTerm();
            52    CoUninitialize();
            53         
            54}
            在連接數據庫之前要添加#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF","adoEOF")

            路徑根據本機設置修改  
            rename("EOF","adoEOF")  //重新命名

            posted @ 2009-04-22 11:02 裁縫 閱讀(428) | 評論 (0)編輯 收藏

            2009年4月20日

            在對話框程序下禁用回車和ESC鍵

            在對話框類中添加如下函數

            BOOL CRegister::PreTranslateMessage(MSG *pMsg)
            {
             if(WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST)
             {
              if(pMsg->wParam == VK_RETURN ||pMsg->wParam ==VK_ESCAPE)//按回車鍵不響應
              {
               return true;
              }
             }
             return CDialog::PreTranslateMessage(pMsg);

            }

            posted @ 2009-04-20 10:48 裁縫 閱讀(449) | 評論 (0)編輯 收藏

            2009年3月25日

            隨便寫點

            OO的精髓是繼承、封裝和多態
            繼承就是說:你的愛人會繼承做你女朋友時的相當多的優點,因為這些優點對你都是public的,但同時她也會繼承以前的更多的缺點,因為其中很多缺點對你是protected,繼承后才讓你能訪問。 

            封裝就是說:許多不想讓你知道的東西她會封裝起來,你只能通過她提供的有限的接口來訪問到被接口函數做了手腳的東西。 

            多態就是說:在她心情不同時,你去訪問以她為參數的一個函數得到的結果是不同的。比如對她說“我愛你” 。

            posted @ 2009-03-25 17:52 裁縫 閱讀(200) | 評論 (0)編輯 收藏

            2009年3月21日

            虛函數

              虛函數有時候也被稱為方法。它可以使有差異的實體對象公用一種方法實現不同的操作。

                虛函數能克服類型域解決方案中的缺陷,它使程序員能夠在基類聲明一些能夠在各個派生類里面重新定義的函數。編譯器和裝載程序能保證對象和應用于他們的函數之間的正確對應關系。

             class Employee

            {

                 string name;

             public:

                 Employee(const  string &name);

                virtual void print() const;

            }

            void Employee::print() const

            {

                cout<<name<endl;

            }

             

            關鍵字virtual指明print的作用就像是一個界面,既可以服務本類print函數,又可以服務于派生類的print函數。對于派生類定義的print函數,編譯器保證對于生成的每一個實體對象都能調用正確的print函數。

                在派生類中對于有關函數的參數類型必須于虛函數的的參數類型相同,但可以在返回值類型上不同。

                所謂的多態性就是從Employee中取得了正確的行為,而不依賴于實際使用的是哪一種Employee。一個帶有虛函數的類型被稱為是一個多態類型。在C++要取得多態行為,被調用的函數必須是虛函數,而對象必須是通過指針或者引用操作。如果直接操作一個對象(而不是通過指針或者引用),它的確切類型已經被編譯器所知,就不需要多態了。

                為了實現多態性,編譯器必須在類的每個對象里存儲某種類型信息,并且在需要虛函數的時候利用這些信息。在典型的實例中,所需要的空間是一個指針。只有那些包含了虛函數的類才需要這點空間,而不是任何對象,甚至不是任何派生類的對象。使用時,只需要為含有虛函數的類付出開銷。

            posted @ 2009-03-21 22:24 裁縫 閱讀(293) | 評論 (0)編輯 收藏

            2009年3月20日

            高手給講一下,謝謝

            #include <iostream>
            using namespace std;
            class A
            {
             friend double count(A&);
            public:
             A(double t, double r):total(t),rate(r){}
             private:
             double total;
             double rate;
            };
            double count(A&a)
            {
             a.total+=a.rate*a.total;
             return a.total;
            }
            int main(void )
            {
             A x(100,0.5),y(50,0.1);

             cout<<count(x)<<"  "<<count(y)<<endl;
             cout<<count(x) <<"\n";
                return 0;
            }

            這段代碼是什么意思??

            posted @ 2009-03-20 21:40 裁縫 閱讀(414) | 評論 (3)編輯 收藏

            2009年3月19日

            結構體和類的區別

            類成員默認訪問權限為私有(private),結構體成員默認訪問權限為公共public

            從class繼承默認是私有繼承,從struct繼承默認是公有繼承。

            結構體類型不包括操作。

            posted @ 2009-03-19 20:59 裁縫 閱讀(271) | 評論 (0)編輯 收藏
            const 的用法

            (一)const修飾參數。const只能修飾輸入參數。
               如果輸入參數是指針型的,用const修飾可以防止指針被意外修改。

            (二)const修飾函數返回值。
               函數返回const指針,表示該指針不能被改動,只能把該指針賦給const修飾的同類型指針變量。

             (三)const+成員函數。
            任何不修改數據成員的函數都應該聲明為const類型,如果const成員函數修改了數據成員或者調用了其他函數修改數據成員,編譯器都將報錯!

            (四)const 修飾變量,表示該變量不能被修改。
                1、const char  *p 表示 指向的內容不能改變
                2、char * const p,就是將P聲明為常指針,它的地址不能改變,是固定的,但是它的內容可以改變。
                3、這種const指針是前兩種的結合,使得指向的內容和地址都不能發生變化.
                     const double pi = 3.14159;
                     const double *const pi_ptr = &pi;

            posted @ 2009-03-19 20:40 裁縫 閱讀(196) | 評論 (0)編輯 收藏
            僅列出標題  下一頁
            欧美一区二区久久精品| 国产精品免费久久| 一本久久a久久精品亚洲| 亚洲精品乱码久久久久久蜜桃图片 | 久久精品国产秦先生| 国产精品美女久久久久网| 精品国产青草久久久久福利| 浪潮AV色综合久久天堂| 香蕉久久夜色精品国产小说| 热久久视久久精品18| 久久综合狠狠综合久久激情 | 久久综合视频网| 久久精品18| 欧美激情精品久久久久| 亚洲日本va中文字幕久久| 国产精品狼人久久久久影院| 丁香色欲久久久久久综合网| 久久强奷乱码老熟女网站| 99久久这里只有精品| 色综合久久久久久久久五月| 亚洲国产婷婷香蕉久久久久久| 亚洲国产精品久久| 久久综合狠狠综合久久| 久久婷婷五月综合成人D啪| 久久久久婷婷| 久久久综合香蕉尹人综合网| 精品久久久久久国产91| 国内精品久久久久久99| 热re99久久6国产精品免费| 性做久久久久久久久久久| 久久e热在这里只有国产中文精品99| 久久香蕉国产线看观看99| A狠狠久久蜜臀婷色中文网| 久久久久人妻一区精品性色av| 久久精品国产99久久久古代 | 久久免费精品一区二区| 久久久久人妻一区精品性色av| 亚洲精品乱码久久久久久蜜桃图片| 精品国产乱码久久久久软件| 国产精品久久久久久五月尺| 国产精品久久新婚兰兰|