vc++數組控制項的快速設定-動態設定控制項-控制項數組

來源:互聯網
上載者:User

網上的許多例子確實很麻煩,也很少有真正意義上實現動態控制項。

前提是有時候我們不知道控制項的數量(比方說我們的指標庫是在資料庫中定義的,要為每個指標定義一個控制項,而指標的數量我們是不知道的),這樣在BEGIN_MESSAGE_MAP中列出來是不可能的,當然在AFX_MSG列出來也是不可能的,怎麼解決這個問題,昨天在論壇上徵求大家的建議,終於解決了。

下面把定義動態數組控制項的方法先介紹一下:

1.開啟資源視窗的string talbel 添加一個ID IDC_MYBUTTON0,caption為“動態數組”,系統會自動分配ID號value

2.為你的表單定義一個變數N(私人共有都可以,看情況),它用表示控制項的個數的,將來要被動態賦值。

3.開啟Resource.h檔案(該檔案在你的工程檔案目錄下,或者搜尋IDC_MYBUTTON0,就可以掉出來),添加一個動態數組,目的是為每一個IDC_MYBUTTON分配一個id,方法為:

#define IDC_MYBUTTON(N)                 IDC_MYBUTTON0+N

4.在視窗的INI方法裡產生對話方塊,方法如下:

   N=5;//自訂數量,可有資料庫、設定檔等獲得
 CButton* p_MyBut=new CButton[N];
 int i=0;   
 for(i=0;i<N;i++)
 {
 CString ss;
 ss.Format("我是第%d個按鈕",i+1);

 p_MyBut[i].Create( ss, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,/
  CRect(30,10+i*40,150,50+i*40), this, IDC_MYBUTTON0+i);//CRect負責大小和位置
 }

5.運行,可以看到出現了新的5個按鈕

6.為每個按鈕添加事件,方法很簡單,就是開啟對話方塊的類嚮導,重載OnCommand()函數,裡面有兩個參數:

WPARAM wParam, LPARAM lParam,前一個就是按鈕的id,後一個為控制代碼,我們根據id來判斷比較方便,我們判斷方法如下:

 用一個for迴圈就可以解決:

int i=0;
 for(i=0;i<N;i++)
 if (wParam==IDC_MYBUTTON0+i) {
  CString ss;
  ss.Format("你單擊了第%d個按鈕",i+1);
  MessageBox(ss);
    }

既然能標誌到你單擊了那個按鈕,完成其他的工作也就沒問題了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.