急求帮助,困惑了好多天

Ccodeplus 2012-05-30 10:25:33
第一个问题是GetDlgItem(IDC_EDIT_SEND)->Invalidate();GetDlgItem(IDC_EDIT_SEND)->UpdateWindow(); 为什么我通过这个编辑框控件对象先调用Invalidate()函数再调用UpdateWindow()函数 却没有清除编辑框控件的文本内容。
第二个问题是我想是这个控件具有输入焦点,我通过该控件对象调用SetFocus函数 后,为什么这个控件没有输入焦点。

请大家帮帮忙忙,我实在不知道,希望大家帮我解答迷惑
...全文
94 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ccodeplus 2012-05-31
  • 打赏
  • 举报
回复
第二个问题具体就是我明明在对话框初始函数中通过编辑框2对象调用了SetFocus函数,为什么在对话框显示出来时,输入焦点却落在编辑框1上,这是为什么啊??求帮忙解释啊
Ccodeplus 2012-05-31
  • 打赏
  • 举报
回复
第二个问题具体就是我明明在对话框初始函数中通过编辑框2对象调用了SetFocus函数,为什么在对话框显示出来时,输入焦点却落在编辑框1上,这是为什么啊??求帮忙解释啊
Ccodeplus 2012-05-31
  • 打赏
  • 举报
回复
第二个问题具体是就是我在对话框初始函数中明明调用了编辑框2对象的SetFocus函数,但对话框刚刚显示时,输入焦点却在编辑框1上,不知为什么??真的很迷茫
glovel0425 2012-05-31
  • 打赏
  • 举报
回复
1、SetDlgItemText(...)
2、过程中设置焦点为SetFocus(),初始化设置焦点可以在资源视图中定义,你可以排列你的控件顺序CTRL+D 然后哪个排在首位就先点哪个控件,依次点击往下排
glovel0425 2012-05-31
  • 打赏
  • 举报
回复
1、SetDlgItemText().
2、过程中设置焦点用SetFocus,初始化时你可以在资源视图中直接排列你的控件顺序的。CTRL+D
baobaodediaozhui 2012-05-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
第一个问题解决方法:SetDlgItemText(IDC_EDIT1,_T(""));
或者
CEdit *pEdit=(CEdit *)GetDlgItem(IDC_EDIT1);
pEdit->SetWindowText(_T(""));

第二个问题解决方法:CEdit *pEdit=(CEdit *)GetDlgItem(IDC_EDIT1);
pEdit->S……
[/Quote]
试试,我以前就是这么用的。
liuli7786 2012-05-31
  • 打赏
  • 举报
回复
第一个问题解决方法:SetDlgItemText(IDC_EDIT1,_T(""));
或者
CEdit *pEdit=(CEdit *)GetDlgItem(IDC_EDIT1);
pEdit->SetWindowText(_T(""));

第二个问题解决方法:CEdit *pEdit=(CEdit *)GetDlgItem(IDC_EDIT1);
pEdit->SetFocus();
wltg2001 2012-05-30
  • 打赏
  • 举报
回复
第一个问题是GetDlgItem(IDC_EDIT_SEND)->Invalidate();GetDlgItem(IDC_EDIT_SEND)->UpdateWindow(); 为什么我通过这个编辑框控件对象先调用Invalidate()函数再调用UpdateWindow()函数 却没有清除编辑框控件的文本内容。
=============
这两个函数本来就没有这个功能,清除文本内容可以用SetDlgItemText(_T(""))来完成。
  • 打赏
  • 举报
回复
第一个问题,Invalidate();和UpdateWindow(); 方法都没有清除控件内容的功能,都是会给指定窗口发送WM_PAINT消息的。你可以用SetDlgItemText方法,该方法无需刷新窗口的。

第二个问题,你的处理是不是点击某个按钮,让指定的控件获取焦点,如果说是的话,这样的话会有问题,你本身鼠标下去会有多个消息,在DOWN的时候,你的控件获取了焦点,但当点击UP的时候,焦点我想应该又回到了你的按钮这边了。
具体使用MSDN有说明使用方法,下附。
另外一种是按某键盘的快捷键时,可以不发送消息,直接用的方法是可行的。

MSDN:
Do not call SetFocus to change a control's focus in a dialog window, except when handling the WM_INITDIALOG message.
To explicitly set the focus to a dialog's control call SendMessage(hDialog, WM_NEXTDLGCTL, (WPARAM)hwndCtrl, TRUE). The WM_NEXTDLGCTL message notifies the dialog manager that the focus has changed.

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧