📄 sy0404.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 + -