hur.cn - 华软网

 热门搜索

对话框的退出???!!

  作者:未知    来源:网络    更新时间:2011/8/12
在MFC中创建了一个子对话框,上面布置了一个Edit Control控件,用来输入文字的,请问如何在我输入指定的字符如exit时,整个对话框都关闭??
---华软 网友回答---
处理WM_CHAR,然后判断是否输入exit,是的话,就OnOK等方式退出对话框
---华软网友回复---
响应OnChar,判断输入字符
---华软网友回复---
处理EN_CHANGE消息,获取输入的字符等于exit的话就给父窗口发送WM_CLOSE
---华软网友回复---
都对。
---华软网友回复---
 ON_EN_CHANGE 用户采取的行动可能会改变编辑控件的文本。与EN_UPDATE通知消息不同,该通知是在Windows更新显示之后发送的。 
· ON_EN_ERRSPACE 编辑控件不能为特定请求分配足够的空间。 
· ON_EN_HSCROLL 用户单击了编辑控件中的水平滚动条,父窗口在屏幕更新之前被通知。 
· ON_EN_KILLFOCUS 编辑控件失去输入焦点。 
· ON_EN_MAXTEXT 当前输入超过了为编辑控件指定的数目,并作截尾处理。当编辑控件不具有ON_EN_HSCROLL风格且要输入的字符会超过编辑控件的宽度时,发送消息。当编辑控件不具有ON_EN_VSCROLL风格且要输入的字符会超过编辑控件的高度时,也会发送消息。 
· ON_EN_SETFOCUS 编辑控件获得焦点。 
· ON_EN_UPDATE 编辑控件将要显示变动的文本。在控件对文本格式化之后但在显示文本之前发送消息,以便在必要时改变窗口尺寸。 
· ON_EN_VSCROLL 用户单击了编辑控件中的垂直滚动条,父窗口在屏幕更新之前被通知。 

1、以上为Eidt Control 的消息 你可以添加 ON_EN_CHANGE消息函数 并且添加CString变量 
2、获取Eidt Control里的文本 ,然后进行对比就行了
3‘如  Eidt变量 CString m_strinfo;
Updatadate();
if(m_strinfo == "exit")
{
   SendMessage(wm_close,0,0);
   return ;
}


还有一种方法:
  创建定时器,时时更新Edit Control里的文本进行比较就行。
---华软网友回复---
不行呀,在获取Edit Control里的文本的时候,因为之前已经输入了字符,获取内容就是一大堆字符呀
---华软网友回复---
5楼正解
---华软网友回复---
响应EN_CHANGE消息,取文本串

判断取得串的最后四个字符

如果是"EXIT"则调用OnOK()

char ch[1024]=0;
char *p=ch;
取EDIT文本到ch;
while(*p) p++;
while(*p==0) p--;
if(*(p-3)=='E'&&*(p-2)=='X'&&*(p-1)=='I'&&*p=='T'&&p!=ch)
  CDialog::OnOK();
---华软网友回复---
在ONCHAR中捕获后进行处理,退出的代码就不用说了。关键是判断。
---华软网友回复---
wm_char 可以的吧。。判断连续的4个是exit就可以了


---华软网友回复---
解决了,多谢各位      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。