⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sy0404.htm

📁 c语言经典教程
💻 HTM
字号:
<html>
<HEAD>
<TITLE>Visual C++与计算机接口</TITLE>
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=gb2312" > 
</HEAD>
<body>
<font color="#0000FF">在窗口中创建和使用控件</font>
<p>
(一)实验目的:<BR>
     在窗口中创建和使用控件,掌握控件的使用方法<BR><BR>
(二)实验内容:<BR>
     在窗口类中定义控件对象,在窗口中创建控件<BR><BR>
(三)实验步骤:<BR><BR>
  如果想在窗口或View中使用通常在对话框中使用的按钮列表框等,可以使用下面的方法:<BR>
1、定义对象ID<BR>
  每个控件对象都需要用一个ID来标识,同一窗口中的ID不能重复,不同窗口中的可以重复。<BR>
  ID通常定义在窗口类的头文件中:<BR>
      #define IDC_BTN1	100<BR>
      #define IDC_BTN2	101<BR>
      #define IDC_LB1		200<BR>
      #define IDC_LB2		201<BR>
      #define IDC_TX1		300<BR>
      #define IDC_TX2		301<BR><BR>
2、在窗口类中定义控件对象:<BR>
      // Attributes<BR>
      public:<BR>
        CButton*	m_btn1;<BR>
        CButton*	m_btn2;<BR>
        CListBox*	m_lb1;<BR>
        CListBox*	m_lb2;<BR>
        CStatic*	m_tx1;<BR>
        CStatic*	m_tx2;<BR><BR>
3、用ClassWizard建立窗口类对WM_CREATE消息的映射<BR>
  对WM_CREATE消息的映射函数是在窗口已经创建后但还未显示时,被系统调用的。<BR>
  它与对话框的WM_INITDIALOAG消息映射函数类似,都是最适合作初始化工作的地方。<BR><BR>
4、在OnCreate函数中创建控件:<BR>
  控件的创建通常也是调用其Create函数,函数参数中一般包括控件的标题、控件显示风格、控件的位置、父窗口的指针等。<BR>
      m_btn1=new CButton;<BR>
      m_btn2=new CButton;<BR>
      CRect btn1(300,80,380,110);<BR>
      CRect btn2(300,160,380,190);<BR>
      m_btn1->Create("增添(&I)",WS_VISIBLE,btn1,this,IDC_BTN1);<BR>
      m_btn2->Create("删除(&D)",WS_VISIBLE,btn2,this,IDC_BTN2);<BR>
      m_tx1=new CStatic;<BR>
      m_tx2=new CStatic;<BR>
      CRect tx1(20,20,150,50);<BR>
      CRect tx2(160,20,290,50);<BR>
      m_tx1->Create("ListBox1:",WS_VISIBLE,tx1,this,IDC_TX1);<BR>
      m_tx2->Create("ListBox2:",WS_VISIBLE,tx2,this,IDC_TX2);<BR>
      m_lb1=new CListBox;<BR>
      m_lb2=new CListBox;<BR>
      CRect lb1(20,50,150,400);<BR>
      CRect lb2(160,50,290,400);<BR>
      m_lb1->Create(WS_VISIBLE|WS_VSCROLL|LBS_STANDARD,lb1,this,IDC_LB1);<BR>
      m_lb2->Create(WS_VISIBLE|WS_VSCROLL|LBS_STANDARD,lb2,this,IDC_LB2);<BR><BR>
5、手工添加控件响应消息:<BR>
  (1)在类的.h文件中添加处理函数的声明:<BR>
      protected:<BR>
        //{{AFX_MSG(CTttView)<BR>
        //}}AFX_MSG<BR>
        afx_msg void OnButtonInsert();<BR>
        afx_msg void OnButtonDelete();<BR>
        afx_msg void OnSelchangeLB1();<BR>
        afx_msg void OnSelchangeLB2();<BR>
        DECLARE_MESSAGE_MAP()<BR>
  (2)在用户类的.cpp文件中的消息映像区中,在 //}}AFX_MSG_MAP 和 END_MESSAGE_MAP() 之间加入消息映射宏:<BR>
      BEGIN_MESSAGE_MAP(CTttView, CView)<BR>
        //{{AFX_MSG_MAP(CTttView)<BR>
        //}}AFX_MSG_MAP<BR>
        ON_BN_CLICKED(IDC_BTN1,OnButtonInsert)<BR>
        ON_BN_CLICKED(IDC_BTN2,OnButtonDelete)<BR>
        ON_LBN_SELCHANGE(IDC_LB1, OnSelchangeLB1)<BR>
        ON_LBN_SELCHANGE(IDC_LB2, OnSelchangeLB2)<BR>
      END_MESSAGE_MAP()<BR>
    要想了解消息映像宏的全部内容,参见MSDN。<BR>
  (3)最后,可以在文件中添加消息处理函数的具体实现。<BR>
      void CMyWindow::OnButtonInsert() <BR>
      {<BR>
        m_lb1->InsertString(-1,"aaa");<BR>
        m_lb2->InsertString(-1,"bbb");<BR>
      }<BR>
      void CMyWindow::OnButtonDelete() <BR>
      {<BR>
        int nIndex;<BR>
        if ((nIndex=m_lb1->GetCurSel())==LB_ERR) return;<BR>
        m_lb1->DeleteString(nIndex);<BR>
        m_lb2->DeleteString(nIndex);<BR>
      }<BR>
      void CMyWindow::OnSelchangeLB1() <BR>
      {<BR>
        int nIndex;<BR>
        if ((nIndex=m_lb1->GetCurSel())==LB_ERR) return;<BR>
        m_lb2->SetCurSel(nIndex);<BR>
      }<BR>
      void CMyWindow::OnSelchangeLB2() <BR>
      {<BR>
        int nIndex;<BR>
        if ((nIndex=m_lb2->GetCurSel())==LB_ERR) return;<BR>
        m_lb1->SetCurSel(nIndex);<BR>
      }<BR>
<p></p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -