我在对话框中设置某个属性后,我想在这个EDITBOX失去焦点的时候判断用户输入数据的合法性,并给出提示。于是我加了个EN_KILLFOCUS处理函数进行处理。但是,当输入一个非法数据后点击对话框的“取消”按钮时会先执行KILLFOCUS函数(这是我不希望的),请问有什么办法在这个时候不执行KILLFOCUS函数??
解决方案 »
- template <typename T1, typename T2>有何作用呢
- 求助啊wave系列音频函数
- GetPane问题
- 一个VC CreateProcess 问题?新建的进程窗口怎么没跑到坐标0,0的位置去
- 关于自绘窗体的一点问题
- 关于托盘的问题
- 控件打印?
- 急,急,急,sourceview打不开,打开时报“the file is open in one editor”。我曾把.\res\.做过移动,现在拷回原路径,。(resource.rc
- MFC定时器问题
- 刚接触钩子,想实现对所有文件的拦截,应该用什么方法
- 哪位大哥写过四则运算方面的东西啊,帮帮忙!
- 请问如何判断光驱中是否有光盘,如果有,如何将其内容读出?
比如我的EDITBOX需要输入整数,但是输入“-”肯定应该是不合法的,但是“-1”却是合法的。那么当输入“-”的时候应该认为它合法还是不合法呢?其实这样的例子很多,当一个合法数据的前半部分是不合法的时候就有不太好处理了。Snow_Ice11111(雪上加冰)兄的做法比较有创意,似乎可以解决问题。
但是如果这样做,当用户确认的时候也得不到合法检查了,当然如果让确认操作也延迟一下也可以解决问题。 问题是,当你把鼠标点在“Cancel”上却犹豫了一下,这时候“可怕的事情”就发生了!! 是否可以在OnTime中判断焦点是否在“Cancel”上,然后选择性进行处理??!!
其实我不太喜欢用定时器,我觉得对话框中搞那么多定时器始终不太好,至少调试的时候不太爽。有不有其他办法解决这个问题???
就比如“-1”吧。
首先要输入‘-’吧,这时候产生了一个EN_CHANGE消息。需要判断“-”是否合法,因为这时候“-”就是整体。
然后才输入‘1’,这时候又产生了一个EN_CHANGE消息。这时才判断“-1”是否合法。
所以,第一次判断的结果是不合法。第二次判断的结果才是合法。
void CResizeObjDlg::OnKillfocusEditNewx()
{
if(CWnd::GetFocus()==this)
{
return;
}
if(CWnd::GetFocus()==GetDlgItem(IDCANCEL)){
return;
}
if(UpdateData(TRUE))
{
........
}
UpdateData(FALSE);
}
哎,我ZTMD是猪头一个。