c++中修改弹出窗内的static text

我在主窗口中点击一个按钮a,触发一个弹窗x。这个弹窗x是专门用来发出各种提示报错的。现在我想根据不同情况来修改弹窗x上面的文字显示(弹窗x上已经设置了statictext... 我在主窗口中点击一个按钮a,触发一个弹窗x。这个弹窗x是专门用来发出各种提示报错的。现在我想根据不同情况来修改弹窗x上面的文字显示(弹窗x上已经设置了static text,ID是TIPSWORDING)。使用如下语句时会报错说GetDlgItem需要两个参数,第一个是HWND类型。但是不知道怎么获取HWND,看到有人说HWND变量是弹窗x对象里的变量,但我去查看没发现有这个变量。求大神指点。
GetDlgItem(TIPSWORDING)->SetWindowTextA("testing");
展开
 我来答
478617
2014-07-07 · TA获得超过875个赞
知道小有建树答主
回答量:725
采纳率:100%
帮助的人:93.5万
展开全部
如果只是发出各种提示报错,可以直接使用AfxMessageBox()函数或者MessageBox()函数.不必自己去设置一个专门的弹窗.

AfxMessageBox的函数原型:
int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );
int AFXAPI AfxMessageBox( UINT nIDPrompt, UINT nType = MB_OK, UINT nIDHelp = (UINT) –1 );

MessageBox的函数原型:
int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL,UINT nType =MB_OK );
参数:
lpszText: 消息正文
lpszCaption:消息框标题(默认没有)
nType:消息框的风格

GetDlgItem()只需要一个参数吧.
我一般这么用.
CWnd *pApp = GetDlgItem(TIPSWORDING);
pApp ->SetWindowTextA("testing");
因为 GetDlgItem()有两个,一个是只有一个参数,但返回一个CWnd指针.另外一个有两个参数, 没有返回值.
GetDlgItem(TIPSWORDING)->SetWindowTextA("testing");这样写会使编译器产生选择综合症,不知道到底选择哪一个GetDlgItem(),所以就有错误发生
追问

不好意思,我选了个看似最简单的MessageBox来调用,发现报错了。网上说这类错误一般是缺少了库。想问问是需要include 什么库文件吗?还是需要在项目属性里添加库,是哪一个库呢?

追答
最简单的是AfxMessageBox()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
john_lee1969
2014-07-07 · TA获得超过1700个赞
知道小有建树答主
回答量:419
采纳率:100%
帮助的人:528万
展开全部
不要在窗口弹出后来修改文字。
应该在弹窗类的构造函数传递一个字符串或string ID,保存在类成员中,在弹窗的OnInitDialog回调中使用成员保存的字符串SetWindowsText。
class CMyMsgWnd : public CDialog {
public:
CMyMsgWnd(..., LPCTSTR lpszMsg) : CDialog (...) { m_lpszMsg = lpszMsg; } // 传入的字符串
...
private:
LPCTSTR m_lpszMsg;
};

BOOL CMyMsgWnd::OnInitDialog()
{
...
GetDlgItem(TIPSWORDING)->SetWindowText(m_lpszMsg);
...
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式