MFC中关于控件变量的使用!

Posted on 2007-12-14 00:31 T.S Liu 阅读(5907) 评论(1)  编辑 收藏 引用 所属分类: MFC

在MFC中我们常常要把一些变量于控件对应起来! 并通过UpdateDate来实调用DoDataExchange(CDataExchange* pDX)实现变量信息交换!

如:
DDX_Text(pDX, IDC_STATICCOUNT, m_sCount); --> value对应

把控件ID为IDC_STATICCOUNT的控件与m_sCount变量对应起,
用UpdateDate(TRUE)来把IDC_STATICCOUNT控件数据写到m_sCount;
用UpdateDate(FALSE)把m_sCount数据读写到IDC_STATICCOUNT控件;

DDX_Control(pDX, IDC_BSTARTTIME, m_cStartTime);有尽有-->control

把控件ID为IDC_BSTARTTIME的控件与m_sCount变量对应起,如BUTTON。
此时我们可以通过m_cStartTime控件变量改变对应控件状态!
m_cStartTime.EnableWindow(FALSE); 可以改变控件是否可用!如果没有control对应,
那么我们可以使用等价语句:GetDlgItem(IDC_BSTARTTIME)->EnableWindow(TRUE);

所以使用控件变量将很大的方便我们写P!

2 关于mouse按键的判断
当我们在开发程式的时候,都要有个交互的过程,那么这里一要用的mouse,然而我们如何发现个健被按下呢!

void CMouseDlg::OnMouseMove(UINT nFlags, CPoint point)
{
    
// TODO: 在此添加消息处理程序代码和/或调用默认值
    
if (nFlags & MK_LBUTTON)
    {
    }

    CDialog::OnMouseMove(nFlags, point);
}

些是我们可以通过nFlag来断定那个健被按下!
nFlag是一个UINT的变量,它的每一个bit都代表一定的意思!
MK_CONTROL    Set if the CTRL key is down.
MK_LBUTTON     Set if the left mouse button is down
MK_MBUTTON    Set if the middle mouse button is down
MK_RBUTTON    Set if the right mouse button is down
MK_SHIFT           Set if the SHIFT key is down.
我们只要用nFlag & MK_KEYBUTTON, 如果非0这个健就被按下了, 我们不作
if ((nFlag & MK_KEYBUTTON)  == MK_KEYBUTTON), 这样可以使其更加的简捷!实际上用&标记来简化if语句,这样可以置位,可以得到一个正值,否则是0

还有一点要注意,在onKeyDown中,WM_KEYDOWN事件只经你传递大写字母,而shift,caps loc是通过分开代码健被传,如果要区分大小写,你必须判断其是否被按下!

 


 

Feedback

# re: MFC中关于控件变量的使用!  回复  更多评论   

2008-08-29 10:02 by 22
应该是UpdateData(FALSE),UpdateData(TRUE)

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理