青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

幽魂國度

 

自定義消息函數

(一)、在頭文件中定義消息的值
:#define WM_自定義名字 WM_USER+1.

(二)、在該頭文件中編寫該消息響應函數原型的聲明:
例:
 //}}AFX_MSG
 afx_msg void On自定義函數名(自定義形參);
 DECLARE_MESSAGE_MAP() 
注:定義消息函數可以不帶參數。

(三)、在該類源文件中添加消息映射
BEGIN_MESSAGE_MAP(CChatDlg, CDialog)
 //{{AFX_MSG_MAP(CChatDlg)
 ON_WM_SYSCOMMAND()
 ON_WM_PAINT()
 ON_WM_QUERYDRAGICON()
 ON_BN_CLICKED(IDC_BTN_SEND, OnBtnSend)
 //}}AFX_MSG_MAP
  ON_MESSAGE(WM_名字,On函數名)
END_MESSAGE_MAP()

(四)、該消息響應函數
void C類名::On函數名(形參)
{
}

posted @ 2009-11-17 22:23 峰 閱讀(194) | 評論 (0)編輯 收藏

如何在按鍵下輸出文字

介紹函數:CButtonST類應用
void CButtonST::SetTooltipText(CString* spText, BOOL bActivate)   //文字輸出
{
 if (spText == NULL) return;

 // Initialize ToolTip
 InitToolTip();

 // If there is no tooltip defined then add it
 if (m_ToolTip.GetToolCount() == 0)    // CToolTipCtrl m_ToolTip全局變量
 {
  CRect rectBtn;
  GetClientRect(rectBtn);
  m_ToolTip.AddTool(this, (LPCTSTR)*spText, rectBtn, 1);
 }

 // Set text for tooltip
 m_ToolTip.UpdateTipText((LPCTSTR)*spText, this, 1);  
  m_ToolTip.Activate(bActivate);
} // End of SetTooltipText

void CButtonST::InitToolTip() 
{
 if (m_ToolTip.m_hWnd == NULL)
 {
  // Create ToolTip control
  m_ToolTip.Create(this);
  // Create inactive
  m_ToolTip.Activate(FALSE);
 }
} // End of InitToolTip

程序:
頭文件
CButtonST m_btn; 定義一CButtonST 對象
CString strName;
源文件:
strName="輸入文字";
 m_btn.SetTooltipText(&strName);
可以在OnInitDialog()函數中定義,也可以在其他函數中重新定義。
 DDX_Control(pDX,IDC_BUTTON1,m_btn);  //輸出,DoDataExchange(CDataExchange* pDX)函數中

posted @ 2009-11-16 21:33 峰 閱讀(243) | 評論 (0)編輯 收藏

如何在控件上設置圖像,點擊時更改

介紹函數:
void AFXAPI DDX_Control( CDataExchange* pDX, int nIDC, CWnd& rControl );
參數一:指向CDataExchange的指針,用于建立資料交換設備上下文;
參數二:控件IDC;
參數三:控件變量。
重寫SetIcon()函數:
 頭文件:
 
void SetIcon(int nIconInId, int nIconOutId = NULL);  //帶參數的成員函數
 源文件:

void CButtonST::SetIcon(int nIconInId, int nIconOutId)

{

       HICON hIconIn;         //定義HICON 變量,用于保存圖片

       HICON hIconOut;

       HINSTANCE hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(nIconInId), RT_GROUP_ICON);
       //鼠標點擊時獲得應用資源句柄
       hIconIn = (HICON)::LoadImage(hInstResource/*AfxGetApp()->m_hInstance*/, MAKEINTRESOURCE(nIconInId), IMAGE_ICON, 0, 0, 0);
       // 鼠標移開時加載圖片
      
 hIconOut = (nIconOutId == NULL) ? NULL : (HICON)::LoadImage(hInstResource/*AfxGetApp()->m_hInstance*/,    MAKEINTRESOURCE(nIconOutId), IMAGE_ICON, 0, 0, 0);
       SetIcon(hIconIn, hIconOut);  //調用
}

void CButtonST::SetIcon(HICON hIconIn, HICON hIconOut)
{
      
// Note: the following two lines MUST be here! even if
   
   // BoundChecker says they are unnecessary!
       if (m_hIconIn != NULL) ::DestroyIcon(m_hIconIn);        //判定是否與圖片相關聯
       if (m_hIconOut != NULL) ::DestroyIcon(m_hIconOut);

     
  // Set icon when the mouse is IN the button
     
 m_hIconIn = hIconIn;

      
 // Set icon when the mouse is OUT the button
     
 m_hIconOut = (hIconOut == NULL) ? m_hIconIn : hIconOut;

       ICONINFO ii;             //ICONINFO 結構體
     
 // Get icon dimension
     
 ZeroMemory(&ii, sizeof(ICONINFO));        //ii內存設0
      
 ::GetIconInfo(m_hIconIn, &ii);                       //設置自定義圖標
      
 m_cxIcon = (BYTE)(ii.xHotspot * 2);
     
 m_cyIcon = (BYTE)(ii.yHotspot * 2);
     
 ::DeleteObject(ii.hbmMask);
     
 ::DeleteObject(ii.hbmColor);

      
 RedrawWindow();

} // End of SetIcon

程序流程:
a)添加頭文件
     CButton m_btn;定義一對象
b)在新建框架類中初始化
 BOOL CMy5Dlg::OnInitDialog()
{
      m_btn.SetIcon(IDI_ICON1,IDI_ICON2); //設置兩幅圖標
}
c)鼠標點擊交換圖片
 void CMy5Dlg::DoDataExchange(CDataExchange* pDX)
{
           DDX_Control(pDX,IDC_BUTTON1,m_btn);
}

posted @ 2009-11-14 14:40 峰 閱讀(358) | 評論 (0)編輯 收藏

C++頭文件

#include <assert.h>    //設定插入點

 

  #include <ctype.h>//字符處理

 

  #include <errno.h>//定義錯誤碼

 

  #include <float.h>//浮點數處理

 

  #include <fstream.h>//文件輸入/輸出

 

  #include <iomanip.h>//參數化輸入/輸出

 

  #include <iostream.h>   //數據流輸入/輸出

 

  #include <limits.h>    //定義各種數據類型最值常量

 

  #include <locale.h>    //定義本地化函數

 

  #include <math.h>     //定義數學函數

 

  #include <stdio.h>     //定義輸入/輸出函數

 

  #include <stdlib.h>    //定義雜項函數及內存分配函數

 

  #include <string.h>    //字符串處理

 

  #include <strstrea.h>   //基于數組的輸入/輸出

 

  #include <time.h>     //定義關于時間的函數

 

  #include <wchar.h>     //寬字符處理及輸入/輸出

 

  #include <wctype.h>    //寬字符分類

 

標準 C++ (同上的不再注釋)

 

  #include <algorithm>    //STL 通用算法

 

  #include <bitset>     //STL 位集容器

 

  #include <cctype>

 

  #include <cerrno>

 

  #include <clocale>

 

  #include <cmath>

 

  #include <complex>     //復數類

 

  #include <cstdio>

 

  #include <cstdlib>

 

  #include <cstring>

 

  #include <ctime>

 

  #include <deque>      //STL 雙端隊列容器

 

  #include <exception>    //異常處理類

 

  #include <fstream>

posted @ 2009-11-11 20:54 峰 閱讀(291) | 評論 (0)編輯 收藏

構造函數簡介

目的:為了使用戶定義的數據類型如同一般數據類型一樣使用。
功能:對對象進行初始化,有若干種方法。
特點:1、無返回值說明;2、不能繼承;3、可以有缺省參數;4、不能取地址,構造時自動給對象分配棧中內存,析構時回收;
            5、自動調用構造函數。
        構造函數是類的一個特殊成員函數,其函數名同類名一樣。C++通過構造函數可以正確地初始化對象。構造函數不能被顯式調用,不能使
虛函數。
例: class queue {
                         int q[100];              //默認為private
                         int sloc,rloc;
                      public:
                         queue();
                         void qput(int i); 
};
queue ::queue ()          //隱式調用
{
        sloc=rloc=0;
}        
int    queue ::qput (int i){}
main()
{
      queue  a,b;
      a.qput (10); 
      b.qput (20); 
}
      參數化的構造函數
queue ::queue (int vx,int vy){} };
main()
{
    queue  a(10,20);
}
      缺省參數的構造函數:特殊情況下需要傳遞參數,一般都是用缺省參數。
單個參數:queue ::queue (int i=16) {}   };
                    main()
                      {
                             queue  a;
                       }
多個參數:queue ::queue (int vx=0,int vy=0) {}
缺省參數還可用于一般成員函數。使用時應注意避免二義性。
      多構造函數
public:
        queue ( );
        queue (int );
        queue (int,char );
};
main()
{
         queue a;
         queue b(1);
         queue c(1,'c');    //避免二義性
}
       拷貝構造函數
1、系統產生:
queue ::queue (int vx,int vy){}   };
  main() { queue a(b) ; }
2、自定義:
queue ::queue (const queue &p){}  };
 main()  { queue }

總結:構造函數的作用是對對象本身做初始化工作,也就是給用戶提供初始化類中成員變量的一種方式。
          如果一個類中沒有定義任何的構造函數,那C++編輯器將在某些情況下提供一個默認的構造函數(不帶參數),3種情況:
    1)、類有虛擬成員函數或虛擬繼承父類(虛擬基類);
    2)、類的基類有構造函數;
    3)、類中的所有非靜態餓對象數據成員,它們所屬的類中有構造函數。

構造函數的目的是為了初始化對象,因此一個構造函數至少應該使得對象處于明確定義的狀態
例://class string
string () {s=new char[80];len=80;}
string (int n) {s=new char[n];len=n;}
}
string::stringprintf() { cout<< s <<endl;}
定義對象:
string x,y(80);
x.print();
y.print();
此時,x和y調用的print()函數結構未定義,因為在構造函數中只對字符數組分配了內存,卻未對分配的內存進行初始化。
我們可以通過修改帶默認參數值的構造函數來改進:
string (int n=80) {s=new char[n];s[0]='\0';len=n;}
 用默認參數的形式來代替函數重載的形式。

注意點:
1)構造函數應該使對象處于明確定義的狀態;
2)保持物理狀態的一致性:對數據成員的定義保持一致,在所有函數中只能使用一種定義。
3)類不變性:可以將不變性作為程序代碼的注釋,//len=strlen(s);
4)動態內存的一致性:接口一致性
     void assign (char* str) { strcpy(s,str);}
     void concat (string& a) {s=new char[len+1];strcpy(s,a.s);}
     兩函數的表現行為存在不一致性:前者內存不再分配,而后者一直在分配。我們應只使用一種以保持一致性。
5)內存泄露:concat函數中每拷貝一次,s就重新分配一次,s被新的指針值覆蓋,而前一指針值被拋棄,產生內存垃圾。
      因此concat函數必須保證舊的數組一定要被刪除,對于每一個new,就必須有一個delete操作,且delete語句只能被增加在
      新的字符串創建之后。
      void concat (string& a) {new_s=new char[len+1];strcpy(s,a.s); delete[]s;s=new_s;}

posted @ 2009-11-10 15:49 峰 閱讀(444) | 評論 (0)編輯 收藏

常量指針與指針常量

const char*類型是指向常量的指針,不能修改其指向的內容,當可以修改其指向的地址。
例1:
char ch[5]="lisi";                //定義一字符串ch[],并賦值
const char* pStr=ch;         //定義一常量指針pStr,將ch賦給pStr
注:ch[]定義時須對其進行賦值,字符長度為5,最后一位為"\0"表示結束。
        在對pStr賦值時相當于將ch[]的首地址給pStr,因為const char*類型得指針變量只可以修改其本身的值,即變量保存的內存地址。
        因此該變量的值可以改變,但其指向的地址的內容不能改變。
    如:*pStr="jiliang";  //錯誤的,因為其直接改變了內容,所以無法將"jiliang"賦值給ch[];
              pStr="jiliang";     //正確的,因為其改變的是地址值,即pStr保存的是="jiliang"的首地址。
        我們無法通過pStr來修改其指向地址的內容,但可以通過ch[]來修改內容。
使用:利用指針類型來傳遞參數時,可以定義為const char*類型,保持內容的一致性。

char* const類型是一個指針常量,可以修改地址指向的內容,但不可以修改其地址值。
例2:
char ch[5]="lisi";                //定義一字符串ch[],并賦值
const char* pStr=ch;         //定義一指針常量pStr,將ch賦給pStr
注:對于指針常量,必須在定義時對其賦值。指針常量表示指針本身是常量,即地址值為常量。
       如:pStr="jiliang";     //錯誤的,因為該賦值將新的字符串地址賦值給指針常量,這是不允許的;
               *pStr="jiliang";//正確的,可以對指針常量指向的地址修改其內容。
 小結:
  const char*類型的指針其指向的內容是常量,不能修改,但其地址值可以修改;
  char* const類型的指針其地址值是常量,不能修改,但其指向的內容可以修改。
參考:<<VC++深入淺出>>孫鑫

posted @ 2009-11-09 12:28 峰 閱讀(240) | 評論 (0)編輯 收藏

僅列出標題
共2頁: 1 2 

導航

統計

常用鏈接

留言簿

隨筆檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国语自产精品视频在线看| 日韩亚洲欧美高清| 久久久蜜桃一区二区人| 亚洲图片在线观看| 日韩视频一区二区三区在线播放免费观看 | 亚洲美女精品一区| 久久精品一区二区三区四区| 欧美三区在线| 欧美伦理视频网站| 亚洲日本电影| 欧美激情精品久久久久久| 暖暖成人免费视频| 亚欧成人精品| 国产一区自拍视频| 欧美在线亚洲综合一区| 亚洲性视频h| 国产精品久久久久9999高清| 一区二区三区视频免费在线观看| 欧美电影在线观看完整版| 久久久久成人精品免费播放动漫| 国产一区二区成人| 久久久久久久一区| 久久精品网址| 亚洲欧美激情在线视频| 国产精品一区二区三区成人| 先锋影音网一区二区| 亚洲午夜激情在线| 国产欧美日韩麻豆91| 欧美一区二区精品久久911| 亚洲综合第一| 狠狠综合久久av一区二区小说| 久久性天堂网| 男女激情视频一区| 制服丝袜亚洲播放| 中文一区字幕| 激情国产一区二区| 欧美成人中文字幕| 欧美啪啪成人vr| 亚洲欧美日韩成人高清在线一区| 亚洲欧美日韩在线综合| 国产亚洲一级| 亚洲二区视频在线| 免费欧美日韩国产三级电影| 亚洲精品免费网站| 亚洲一区二区三区免费在线观看 | 久久国产黑丝| 亚洲精品色婷婷福利天堂| 91久久精品日日躁夜夜躁国产| 欧美日韩中文字幕在线| 久久成人18免费观看| 久久香蕉国产线看观看网| 亚洲天堂av图片| 在线亚洲美日韩| 精品动漫3d一区二区三区免费| 亚洲精品免费一二三区| 国产精品日本精品| 亚洲国产成人精品久久| 亚洲激情视频在线| 亚洲黄色在线视频| 国产精品欧美日韩| 欧美刺激性大交免费视频| 欧美日本韩国一区| 久久夜色精品| 欧美日韩在线精品| 美国成人直播| 国产精品日韩欧美综合| 亚洲国产精品美女| 国产欧美一区二区精品仙草咪| 亚洲国产天堂久久国产91| 国产精品一二三视频| 亚洲美女黄色片| 91久久视频| 久久深夜福利免费观看| 亚洲女人小视频在线观看| 欧美高清在线视频| 久久天天狠狠| 国产精品女人网站| 狠狠色狠狠色综合人人| 在线一区亚洲| 国产精品99久久久久久有的能看 | 日韩一级精品视频在线观看| 娇妻被交换粗又大又硬视频欧美| 一区二区三区四区五区精品| 亚洲国产一区二区在线| 性久久久久久久久| 亚洲欧美韩国| 欧美视频在线视频| 亚洲美女网站| 艳妇臀荡乳欲伦亚洲一区| 欧美gay视频激情| 久久综合国产精品| 国模精品一区二区三区| 亚洲一区二区三区四区五区午夜| 亚洲精品一品区二品区三品区| 久久久久久久久久久久久9999| 久久激情综合网| 国产一区二区按摩在线观看| 亚洲综合色噜噜狠狠| 亚洲欧美日韩另类精品一区二区三区| 欧美日韩一区二区视频在线观看 | 午夜精品久久久久久久久久久久久 | 午夜精品久久久久久久久久久久久 | 亚洲一区二区日本| 性伦欧美刺激片在线观看| 国产精品国码视频| 一区二区三区四区蜜桃| 亚洲中字在线| 国产精品午夜电影| 亚洲欧美日韩中文视频| 久久久久九九九九| 激情亚洲网站| 蜜桃精品久久久久久久免费影院| 亚洲国产日韩欧美在线图片| 亚洲免费中文| 久久久亚洲影院你懂的| 久久综合色婷婷| 欧美77777| 亚洲激情偷拍| 亚洲一区二区动漫| 欧美成人亚洲成人| 国产精品入口麻豆原神| 久久av在线看| 久久久夜色精品亚洲| 在线观看国产欧美| 欧美黄色免费网站| 99riav久久精品riav| 午夜欧美大片免费观看| 国产免费成人av| 久久久蜜桃一区二区人| 亚洲欧洲视频| 亚洲欧美在线另类| 揄拍成人国产精品视频| 欧美日韩亚洲一区二区| 欧美一区二区三区喷汁尤物| 久久这里只精品最新地址| 亚洲人在线视频| 国产精品久久久久毛片软件| 欧美在线不卡视频| 亚洲国产精品视频| 欧美在线91| 亚洲欧洲一区二区天堂久久| 欧美色视频一区| 亚洲成在人线av| 亚洲自拍偷拍一区| 在线成人激情| 国产精品日韩电影| 老司机午夜精品| 亚洲午夜女主播在线直播| 久久人91精品久久久久久不卡| 99国产精品久久| 伊人精品久久久久7777| 欧美视频你懂的| 久久免费视频在线| 亚洲视频在线一区观看| 欧美国产亚洲精品久久久8v| 午夜精品久久久久久久蜜桃app| 亚洲国产va精品久久久不卡综合| 国产精品视频精品| 欧美国产日产韩国视频| 欧美在线一二三区| 亚洲一区二区三区国产| 亚洲精品看片| 欧美激情亚洲激情| 久久久久国产精品厨房| 亚洲免费视频在线观看| 亚洲区国产区| 在线精品视频一区二区三四| 欧美日韩激情小视频| 欧美综合第一页| 久久久久久一区| 亚洲精品视频免费观看| 国产精品久久久久久久久免费| 亚洲黄色免费网站| 一区二区三区视频在线看 | 欧美日本韩国一区| 亚洲精品国产精品乱码不99| 欧美成人在线免费观看| 欧美成人精品激情在线观看| 亚洲国产va精品久久久不卡综合| 亚洲欧美激情精品一区二区| 亚洲精品婷婷| 91久久精品视频| 最新日韩在线| 亚洲日本一区二区| 在线观看91精品国产麻豆| 国产一区二区三区黄视频| 国产精品高清网站| 欧美午夜视频在线| 国产精品久久久久久妇女6080| 欧美成年人视频| 欧美国产一区二区三区激情无套| 六月婷婷一区| 毛片一区二区| 欧美本精品男人aⅴ天堂| 裸体一区二区三区| 欧美激情一区二区三区在线| 欧美伦理91i| 国产精品高清一区二区三区| 国产日韩欧美一区二区| 亚洲中午字幕|