1. MFC 自定义控件?
自定义控件的消息需要重载,绘制也要重载,OnPaint()或者是DrawItem(),要看你要自定义什么控件了。
2. 在MFC编程中到底什么是控件的客户区
整个窗体一般分客户区和非客户区。
一般控件全部区域都是客户区(默认)
对话框,Frame等在Create过程中修改了此默认客户区大型。一般就是去除标题栏大小,去除四周边框(2个象素)的范围就是客户区。
3. MFC标签控件
afx_msg void FuncName(NMHDR* pNMHDR, LRESULT* pResult);
这个是WM_NOTIFY消息的处理函数的类型,见如下说明:
http://msdn.microsoft.com/en-us/library/749htf6k.aspx
你的这个void CSaleDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
是处理Tab控件切换标签页的通知,一旦你鼠标或者其它操作切换了标签页,程序就会执行到这个函数。这个时候只是切换了标签,标签对应的下面的显示页没有切换,于是,你需要隐藏不显示的,而显示要显示的。
if(m_tabCurSel)
{
employeeDlg.ShowWindow(SW_SHOW);
commodityDlg.ShowWindow(SW_HIDE);
}
else
{
employeeDlg.ShowWindow(SW_HIDE);
commodityDlg.ShowWindow(SW_SHOW);
}
m_tabCurSel = 1 - m_tabCurSel;
tab标签页有序号,0开始的,m_tabCurSel表示当前序号,那个if语句就是查看m_tabCurSel 的值,如果是0就显示0标签对应的对话框,否则就是1标签。
看你这个处理方式,是只适合2个标签页的时候,即m_tabCurSel的值只会是0和1切换,所以m_tabCurSel = 1 - m_tabCurSel;就只是在0和1之间变动,要处理好应该
int curSel = m_tab.GetCurSel(); // 获取当前选择标签序号
switch(curSel)
{
...
}
m_tab假设是你为tab控件关联的控件变量。
*pResult = 0;这个是修改返回值:Your function must return TRUE if the notification message has been completely handled or FALSE if other objects in the command routing should have a chance to handle the message.
4. MFC中控件和类是什么关系啊?控件和用户添加类成员是同级关系吗?
MFC控件是由MFC类对象创建和控制.就像对话框由对话框类对象创建和控制一样.控件和用户添加类成员没有同不同同级关系问题.
5. mfc 界面控件
第9个是CListCtrl
6. 如何用MFC编程可以实现在用户打开软件时可以设置界面控件的数目
1.采用动态创建的办法;2、如果控件数目不多,可以采用不需要的控件先隐臧,需要的控件先显示,我曾做过一个程序,窗口的同一个地方根据需要显示不同的控件,在对话框资源上这些控件是同时存在的,只是在程序运行的时候根据用户操作选择性的隐臧或显示一些控件。
7. MFC中标签控件的问题
里面有中文字符了。
8. MFC 单文档 控件相关问题
1 你用到了消息反射。父窗口将这个通知消息,首先反射回子窗口进行处理,如果子窗口
处理了这个消息,返回为TRUE,父窗口则不处理此消息
子窗体重载OnChildNotify函数,返回false,父窗体就能够处理这个消息.
如果你想子窗体和父窗体同时处理,用ON_CONTROL_REFLECT_EX映射消息