MFC笔记二

来源:互联网 发布:万方地方志数据库网址 编辑:程序博客网 时间:2024/04/28 16:26

1.MFC中动态创建控件(以CButton为例)

1.在xxdlg.h中添加CButton控件类指针 CButton *mybutton

2.在xxDlg::OnInitDialog()函数中初始化控件指针 mybutton=new CButton();

3.在String talbe中设置控件的唯一ID 例如IDC_MYBUTTON 然后在Caption中添加对应的说明文字。

4.最后在需要的地方或者发生对应的事件后通过函数

 mybutton->Create("Button",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,CRect(570,355,630,400),this,IDC_MYBUTTON);

生成控件

第一个参数为显示在控件上的文字,第二个参数为控件属性,第三个参数为控件产生的位置,第四个参数应该表示产生在哪个窗口吧?(自己查下MSDN)

第五个参数表示这个控件对应的ID(就是在String Table中添加的)。

到这步就可以显示控件了,下面步骤为控件添加消息响应处理函数

5.xxDlg.h的AFX_MSG{................}AFX_MSG之后加入

afx_msg void OnMyButton();

此为定义一个消息响应函数void OnMyButton()

6.在xxDlg.cpp的BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间加入

ON_BN_CLICKED(IDC_MYBUTTON, OnMyButton)

IDC_MYBUTTON为控件ID,OnMyButton为控件消息响应函数

表示具体ID号为IDC_MYBUTTON的控件产生单击事件后会调用此事件的处理函数OnMyButton()来执行相应动作;

7.在xxDlg.cpp中添加OnMyButton函数的实现

void xxDlg::OnMyButton(){......................}

8.最后要若需要暂时想销毁窗口时可通过函数

mybutton->DestroyWindow()

实现。

主要参考:http://hi.baidu.com/wangyunfeubaby/blog/item/7ccff9cee52d76430fb3458b.html

2.MFC中动态创建的控件不能显示的问题

Create(_T("Button"),WS_CHILD|WS_VISIBLE|BS_FLAT|BS_PUSHBUTTON,CRect(570,355,630,400),this,IDC_MYBUTTON);

问题是函数CRect函数中的参数设置不合理!

CRect中的参数前两个表示控件左上角的X、Y坐标,后两位表示控件右下角的X、Y轴坐标!这样来可以确定BUTTON控件的大小以及位置!

3.MFC中List 控件不能显示列表头

动态创建的时候在窗口风格处 添加LVS_REPORT属性。

4.MFC中List控件中插入条目不能正常显示。

这个和函数输入错误参数有关!应该使用如下方法!

tmp = m_listctrl->InsertItem(i,rows[i].id,0);

m_list->SetItemText(tmp,1,rows[i].addr);

调用InsertItem函数后会返回一个条目索引,这个索引值就是新插入的条目,

然后再根据这个条目插入第二列 第三列等。此处的tmp就是用来保存索引用的!
原创粉丝点击