关于MFC中对于文本框的控件问题

图片说明
GetDlgItem(IDC_EDIT1)->GetWindowText(filename);
其中的IDC_EDIT1一直是红色下划线,然后没找到问题在哪,该文本我定义的也是CString啊

7个回答

GetDlgItem这个函数实际上有两个版本,一个是全局的Windows API函数:

HWND GetDlgItem(HWND hDlg, int nIDDlgItem); 

另一个是MFC中的CWnd类的成员函数:

CWnd::GetDlgItem(...);

当你在一个CWnd派生的类中(例如CDialog)调用此函数时,编译器认为是成员函数,所以按第二种方法编译,所以不会出错。而当你在其它地方调用此函数时,编译器认为是全局API函数,所以报错,提示你形参的类型不对,因为第一个方法需要HWND作为形参,而你传入了一个int类型的参数。

显然,你的本意是想调用第二个方法,所以你要检查你的函数调用的位置,要么在CWnd类及其派生类的内部调用,要么通过实例调用,例如:

pMyDlg->GetDlgItem(IDC_EDIT1)... 
qq_38608195
qq_38608195 感谢,是的,我把他写成类外面的函数了,再在派生类里面调用的该函数,谢谢,把整个函数放进类里面就可以了感谢感谢
大约 2 年之前 回复

CWnd::GetDlgItem(...);

是不是控件ID重复了

当你在一个CWnd派生的类中(例如CDialog)调用此函数时,编译器认为是成员函数,所以按第二种方法编译,所以不会出错。而当你在其它地方调用此函数时,编译器认为是全局API函数,所以报错,提示你形参的类型不对,因为第一个方法需要HWND作为形参,而你传入了一个int类型的参数。

显然,你的本意是想调用第二个方法,所以你要检查你的函数调用的位置,要么在CWnd类及其派生类的内部调用,要么通过实例调用,例如:

pMyDlg->GetDlgItem(IDC_EDIT1)...

GetDlgItem方法应该是根据当前window才有效吧,具体的id在配置文件下可以查看是否是当前窗口的id

char filename[32] = {0};
((CEdit*)GetDlgItem(IDC_EDIT1))->GetWindowText(filename, 32);
请这样试试

关于这个ID红线,我也遇到过,有一种解决方案是#include"resource.h",或者不管他,对编译并不会有影响。
在非CWnd派生类中调用这些函数,需要得到HWnd这个句柄参数,不然不知道是哪个窗口里面的哪一个控件。
这个时候调用方式就不同了,可以用pMyDlg->GetDlgItem(*)这样,也可以 在GetDlgItem(***)前面加两个冒号:
表示调用Windows api函数

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MFC关于控件的美化问题

MFC关于控件的美化问题MFC关于控件的美化问题MFC关于控件的美化问题MFC关于控件的美化问题MFC关于控件的美化问题MFC关于控件的美化问题

MFC基本控件使用——静态文本框(Static)

众所周知,在MFC应用chen静态文本框

[MFC]获取文本框里面的内容

获取文本框里面的文字赋值给另外一个文本框 代码如下: CString text; //获取文本框内容 GetDlgItemText(IDC_EDIT1, text); //给另一个文本框赋值 SetDlgItemText(IDC_EDIT2, text);

MFC 静态文本框控件

 如果我们想在程序中动态创建静态文本框,而不是像前面那样直接从Toolbox中拖到对话框模板上,那么就需要使用CStatic类的成员函数Create。Create函数的原型如下: virtual BOOL Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd,

MFC 关于Static控件背景透明时文本覆盖重影的问题

MFC 关于Static控件背景透明时文本覆盖重影的问题

vs2015/MFC静态文本控件

1.通过静态文本控件的Caption属性修改控件的显示文本。 2.通过函数显示静态文本控件显示 的文本: m_Static.SetWindowText("在这里更换文本"); 3.通过SetTextColor函数设置文本颜色: 首先设置控件显示的文本,然后处理对话框的WM_CTLCOLOR消息,在该消息中调用SetTextColor函数设置文本颜色: if(nCtlColor==CTLC

C++ MFC / VS2013 之十九(常用控件:编辑框Edit Control)

编辑框Edit Control      本节要讲的编辑框(Edit Control)同样是一种很常用的控件,我们可以在编辑框中输入并编辑文本。在前面加法计算器的例子中已经演示了编辑框的基本应用。下面具体讲解编辑框的使用。 一. 编辑框的通知消息      编辑框发生某些事件时会向父窗口发送通知消息。在对话框模板中的编辑框上点右键,选择“Add Event Handler”,为编辑框添

C++ MFC / VS2013 之十八(常用控件:静态文本框)

静态文本框      上一节讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了。从本节开始将讲解各种常用控件的用法。常用控件主要包括:静态文本框、编辑框、单选按钮、复选框、分组框、列表框、组合框、图片控件、列表控件、树形控件和进度条控件等等。本节教程先来讲解静态文本框的使用。 一. 控件的通知消息     在将静态文本框的使用之前,先大概讲讲控件的通知消息。

VS2013/MFC编程入门之二十(常用控件:编辑框Edit Control)

除了静态文本框外,编辑框(Edit Control)同样是一种很常用的控件,本节要讲的是在编辑框中输入并编辑文本。在前面加法计算器的例子中已经演示了编辑框的基本应用。下面具体讲解编辑框的使用。        编辑框的通知消息        编辑框发生某些事件时会向父窗口发送通知消息。在对话框模板中的编辑框上点右键,选择“添加事件处理程序”,为编辑框添加消息处理函数时,可以在“消息类型”

MFC静态文本控件设置超链接

有时我们需要在窗口上设置一个超链接,比如在Aboutdlg上设置“我的博客”这样的超链接.具体的设置方法如下。 1、首先我们在窗体上添加一个Static文本控件,修改Caption属性,设置成你想要的超链接标题,比如“更多内容欢迎访问小梦的博客”等。2、这步很重要。由于Static控件不具备设置超链接的能力,我们需要重写一个继承自CStatic的类CHyperLink. 这里可以直接复制两个文件

动态Static文本导致字体重叠的解决方案

场景: 需要动态更新Static静态文本框的内容来显示不同状态信息 要求:设置文本框背景透明 方法:添加消息ON_WM_CTLCOLOR() HBRUSH CAppHelperDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlCo

解决当静态文本或编辑框等控件设置为透明后文字重叠问题

/*这里解决当静态文本设置为透明后文字重叠问题先隐藏再显示*/ IDC_STATUS 为静态文本控件ID        GetDlgItem(IDC_STATUS)->ShowWindow(SW_HIDE);        GetDlgItem(IDC_STATUS)->SetWindowText("解决当静态文本设置为透明后文字重叠问题");           GetDlgItem(I

MFC-按钮与静态文本控件

两个按钮状态互锁。初始状态为 选中“1G”,检查框选“摄像头”,静态文本框为空,“提交选择”按钮为活动状态。 解答: 1、通过可视化操作完成上述界面的设计。 2、为静态文本绑定CString类型的变量m_static。 3、在BOOL CCBaseButtonDlg::OnInitDialog()即对话框初始化函数中完成单选按钮和复选框的初始化工作: CheckRadio

MFC 在静态文本控件和picture控件上显示位图

1.在静态文本控件上显示位图

VS2010/MFC编程入门之二十(常用控件:静态文本框)

本文转自鸡啄米:http://www.jizhuomi.com/software/177.html  感 谢鸡啄米对本文的贡献。 上一节鸡啄米讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了。从本节开始鸡啄米将讲解各种常用控件的用法。常用控件主要包括:静态文本框、编辑框、单选按钮、复选框、分组框、列表框、组合框、图片控件、列表控件、树形控件和进度条控件等等。本节

OnCtlColor函数:MFC设置静态文本框,编辑框等控件背景和字体颜色

在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型: afx_msg HBRUSH OnCtlColor(CDC *pDC,CWnd *pWnd,UINT nCtlColor); 参数nCtlColor用于指定控件的类型,可以是: .CTLCOLOR_BTN 按钮控件 .CTLC

MFC 文本框多行显示

CString str="";     for(int index=0;index { CString strm; strm.Format("舰艇有%s:\r\n",ship_pos[index].stMyplat.shipname);   str+=strm; } GetDlgItem(IDC_EDIT1)->SetWindowText(

MFC对话框中如何给一个edit文本框赋初值?

MFC里面的EDIT Control控件的用法 //获得EDIT CEdit* pBoxOne; pBoxOne = (CEdit*) GetDlgItem(IDC_EDIT1); //付值 pBoxOne->SetWindowText( _T"FOO" ); //取值并赋值给str CString str; pB

文本框控件TextBox(文本类控件)

文本框控件(TextBox)用于获取用户的输入数据或者显示文本。文本框控件(TextBox)通常用于可编辑文本,也可使其成为只读控件。文本框可以显示多个行,对文本换行使其符合控件大小。 1.创建只读文本框   文本框控件的部分属性及说明 属性名 说明 Text 在单行编辑情况下获取或设置文本框中当前文本 Multili

MFC Static静态文本控件不能添加变量(variable) vs( visual studio)

尝试将静态文本控件的ID改成其他名字即可·,不要使用默认名字。

MFC中静态文本框贴图处理

1.静态文本控件贴png图片     在创建控件时添加SS_BITMAP属性SS_NOTIFY     CImage m_Icon.Load(wstring(L"tupian.png").c_str());     RECT rect;     HDC pDC = ::GetWindowDC(pImageStatic->m_hWnd);     ::GetWindowRect(pImag

把界面上静态文本控件的尺寸根据文本的内容自动调整大小(转)

函数功能:该函数计算指定的正文字符串的高度和宽度。    函数原型:BOOL GetTextExtentPoint32(HDC hdc, LPCTSTR lpString, int cbString, LPSIZE lpSize);    参      数:hdc:设备环境句柄。                lpString:指向正文字符串的指针。此字符串不必以\0结束,因为c

vc设置文本框为只读状态

CEdit *pEditUser=NULL;  pEditUser=(CEdit *)GetDlgItem(IDC_EDIT_OLDNAME);    //获取文本框指针  pEditUser->SetReadOnly(TRUE);                                      //设置为只读状态

如何设置MFC静态文本背景为透明色?

//添加 WM_CTRLCOLOR 消息处理函数,是静态文本背景透明    并增加如下代码: HBRUSH CMFCApplication1Dlg::OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC,pWnd,nCtlColor); // TODO:

mfc应用的介绍

介绍的是关于mfc中对于数据库的链接问题

VS2013/MFC编程入门之十九(常用控件:静态文本框)

从本节开始讲解各种常用控件的用法。MFC中常用控件主要包括:静态文本框、编辑框、单选按钮、复选框、分组框、列表框、组合框、图片控件、列表控件、树形控件和进度条控件等等。本节先来讲解静态文本框的使用。        控件的通知消息        在将静态文本框的使用之前,先大概讲讲控件的通知消息。        当控件有事件发生时,它会向父窗口发送通知消息。最常发生的事件就是鼠标单

MFC中静态文本框(CStatic)响应鼠标单击事件

1、将静态文本框的属性Notify设置为Ture; 2、将静态文本框的ID改为其他的;

MFC静态文本控件如何设置字体--大小和颜色及背景色

CFont font;  font.CreateFont(10,10,0,0,FW_BLACK,FALSE,FALSE,   FALSE,GB2312_CHARSET,OUT_DEFAULT_PRECIS,   CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,   FIXED_PITCH|FF_MODERN, _T("华文楷体"));  m_stc.SetFont

VS2010/MFC编程入门之二十一(常用控件:编辑框Edit Control)

VS2010/MFC编程入门之二十一(常用控件:编辑框Edit Control) 分类标签: 编程入门  VS2010  VC++  MFC          鸡啄米上一节讲了静态文本框,本节要讲的编辑框(Edit Control)同样是一种很常用的控件,我们可以在编辑框中输入并编辑文本。在前面加法计算器的例子中已经演示了编辑框的基本应用。下面具体讲解编辑框的使用。

MFC实现编辑框对回车键的响应

首先把文本编辑框属性里的want return选上。 然后可以通过重载虚函数PreTranslateMessage()对所关心的消息进行解析: BOOL CTestView::PreTranslateMessage(MSG* pMsg) { if (WM_KEYFIRST message && pMsg-> message <= WM_KEYLAST)

【MFC入门】之二 标准控件在可视化编程中的应用之编辑框控件

关键词: 成员变量的搜索,删除 编辑框控件的使用

VC Static控件的文本垂直居中

VS中使用SS_CENTERIMAGE或Center Image让文本垂直居中。

CStatic子类化解决背景透明,文本重叠,刷新闪烁问题

由于是很少使用VS2008的MFC,遇到了很多麻烦,其实都是很初级的;但是我还是想做点记录,以示对自己工作的鼓励,同时也是留个纪念,因为随着微软政策的变化,以后MFC的程序将不会是趋势了,而我也有意从事Android平台的开发,所以不太可能做MFC程序了。

MFC-静态文本框用法

向Static文本添加文本有几下几种方法:方法1: CString s("test"); //GetDlgItem()返回的是一个控件句柄,利用这个句柄来访问这个控件 //与之相匹配的是GetDlgItem(IDC_STATIC)->GetWindowTextW(s); GetDlgItem(IDC_STATIC)->SetWindowTextW(s);方法2:

MFC编辑框(Edit Control)文本垂直居中方法

使用MFC的编辑框时,常常需要设置编辑框文本的字体,同时使文本垂直居中。方法如下: 一,文本垂直居中。 CRect rect; GetDlgItem(IDC_CC_COLCORNERNUM)->GetClientRect(&rect); ::OffsetRect(&rect,0,15); ::SendMessageA( ((CComboBox*)GetDlgItem(IDC_CC_CO

MFC控件关联变量总结

MFC控件关联变量总结 通常在要绑定变量的编辑框控件上右键添加变量就可以。 绑定变量分value和control两种,value是赋值用的,control是控制用的。 对于编辑框的赋值,共分几种方法 1. 不用绑定变量的方法 GetDlgItem(IDC_EDIT1)->GetWindowText(变量);  如果是数组->GetWindowText(数组名,长度) GetDlgIte

MFC如何动态改变控件的文本内容?

为什么我用以下方式修改静态文本内容 程序有时候运行成功 有时候却崩溃 画面如上图。 代码: void CMainFrame::OnEnglish()  { // TODO: Add your command handler code here CString str; str="FlyMode"; m_controlmode->GetDlgItem(IDC_STATIC1)->

mfc 静态文本框让文字居中显示

vs2008  选择这个控件-->属性 Align Text --> Center  左右居中 Center Image --> True 上下居中

VC MFC 对话框 Picture控件 显示图像闪烁问题

在VC 使用StretchDIBits函数拉伸图像,然后显示,使用 pWnd->Invalidate();  pWnd->UpdateWindow(); 刷新窗口,发现当图像和背景相差很大的时候,有闪烁现象。   解决办法: hdd=DrawDibOpen(); ::DrawDibDraw(hdd,m_hDC,0,0,rPhotoRight-rPhotoLeft,rPhotoBot

MFC获取输入框的值

当输入框没加对应的变量时 假设该输入框ID为:IDC_EDIT1 CString str; GetDlgItemText(IDC_EDIT1,str); ///这儿就是取该输入框的值,并赋给str; MessageBox(str);//弹出对话框显示str的值。

MFC中给Edit编辑框赋值(详细版)

这里拿VC6.0来说,对vs2005,vs2008等自己找找看。给Edit赋值有多种方法,这里将我所用的一种叙说下,供新手查看。有不对之处,请原谅   1 打开MFC中的资源视图,如图所示   2 点击资源图中的一个对话框,打开如图所示 3 左键选中一个Edit

MFC如何获取编辑框中的字符?

1、打开MFC编译器,如VC6,新建一个基于对话框的MFC程序,命名为GetText。 2、放置控件并设置标题↓↓↓ 3、更改控件ID:          按钮:IDC_GetText          编辑框:IDC_Edit 4、给编辑框添加一个CEdit型的变量m_edit。 5、双击按钮,添加按钮按下处理程序代码: CString str; //定义一个变量str

藏文文本在MFC编辑框控件中显示不完整,下部被截断了一部分原因分析

前提:控件使用了“方正藏文新白体OT_Unicode”字体       备注相关知识:GB2312支持的汉字太少。1995年字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持G

树控件添加编辑框总结

<br /> 树控件添加编辑框总结<br />1》首先介绍一下树控件在树控件节点上添加编辑框以编辑节点的功能:<br />转自CSDN帖子http://topic.csdn.net/u/20090305/09/96ff46f8-da84-4321-9669-2efcee826a81.html<br /> <br />树控件默认的编辑框无法随意更改位置,你不如自己放置一个编辑框在树控件上,实现编辑框的移动和更改尺寸:<br />1.在对话框的树控件上放置一个文本框,标识符为IDC_EDIT1<br />向对话

怎么向tab control中加其它控件(如文本框等)

1、首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个Tab   Control   控件,根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,将此控件跟一个CTabCtrl类变量绑定在一起,这里设为m_tabctrl     2、创建两个新的对话框资源,其属性作如下修改:     Border:none   //边界为空,这样它就没了标题栏     Style   :Chi

mfc中使用CEdit为编辑框设置字体

mfc中使用CEdit为编辑框设置字体

MFC 静态文本无法显示

一、问题描述        在对话框里拖入了一个静态文本控件,想点击时显示

MFC中给静态文本加上提示

      还是那句老话:纸上得来终觉浅,绝知此事要躬行。前天给同事解决了一个问题,他动态创建了一个静态控件,可是这个静态控件的ToolTip总是显示不出来。我提示他在创建时要设置一下窗口风格。果然他在创建时加上SS_NOPREFIX就好了。 今天抽空把这个知识记录一下(这也算是我的一个习惯了,无关乎技术含量),上网搜了一下CToolTipCtrl类的用法,搜到一篇文章:  

MFC Static控件的自绘,实现界面控件美化效果

MFC Static控件的自绘,实现界面控件美化效果.

如何设置VC Edit控件的编辑框滚动条自动往下滚

最近做了一个MFC程序,用匿名管道的方法读取命令行界面输出的内容到对话框的Edit控件上。在一个while的循环里,不断地从命令行界面上读数据,可是编辑框在动态显示显示输出内容时,编辑框的滚动条总是往上跑,这就导致了看不到最新读到的数据内容,于是就思考着如何使滚动条在接收数据的过程中一直保持向下走,查了一些资料,并结合自己的想法提出了一下思路(代码): .....................

立即提问
相关内容推荐