获取static文本的问题 请问各位大侠,现在我想获取static文本,不通过该static的ID。操作如下,点击该static控件,获取该控件的文本。刚学习MFC不久,不知道这个问题如何解决,请各位帮帮忙吧,好急 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通过EnumChildWindows(怎么用去查一下),得到static窗口句柄,然后GetWindowText取得。 不通过ID的话,就直接给static控件关联变量就行了啊还有,要static控件响应单击消息得把Notify风格选定 获取你的点击坐标,然后再判断呗,得到static后再取词 我这儿有200个static,想绑定一个处理函数,在点击一个static控件的时候,获取该控件的文本 而且这些static是动态生成的.操作如下:动态生成200个static控件,绑定在一个处理函数上点击一个控件的时候,就能获得该控件的文本 你动态创建的时候可以绑定一些其他的关键信息到CExtStatic(这个是扩张的CStatic),然后将这些信息都保存到map中,nKey,Cwnd×,然后当你单击的时通过向父窗口发送nkey过去,然后父窗口通过map得到cwnd指针,然后读取text。 你是用Creat生成的吧,最后一个参数就是ID啊,不明白你为什么纠结于不用ID给200个同时添加消息,只能手动来了,首先得保证ID是连续的,Fun为消息处理函数在头文件里加函数声明afx_msg void Fun(UINT nID);源文件里再将函数跟消息关联ON_CONTROL_RANGE( 0,1,200,Fun) //1指第一个static的ID,200指第200个static的ID注意这一句要加在BEGIN_MESSAGE_MAP(C****Dlg, CDialog)和END_MESSAGE_MAP()之间最后定义Fun,str就是要得到的文本void C****Dlg::Fun(UINT nID){ CString str; GetDlgItemText(nID,&str);} 不用ID的好处就在自动化测试时,自动化测试,我只能拿到软件的AP,当然不知道该AP上成千上万个button的ID了...楼主应该是在写自动化测试用例吧. 这个用C实现起来貌似很难的,不过我见过别人用其他语言实现的,一两句话搞定 /*使用这个CWnd::ChildWindowFromPoint()函数,在WM_LBUTTONDOWN消息中,当你点击Static控件的时候处理,得到static控件的文本以后,将该文本显示在主窗口标题栏上*/void CXXXDlg::OnLButtonDown(UINT nFlags, CPoint point){ // TODO: Add your message handler code here and/or call default CWnd* pWnd = ChildWindowFromPoint(point); ScreenToClient(&point); if(pWnd) { CString str; pWnd->GetWindowText(str); SetWindowText(str); } CDialog::OnLButtonDown(nFlags, point);} 您好,这个消息是给dialog加对吧,我这样操作了,点击dialog没有控件的地方会相应该函数,点击static控件就不响应该函数,不知道这是什么原因 第一次在CSDN上发帖,看到大家这么热情的帮助,心中好温暖。感觉到IT大家庭的淳朴。因为static是动态生成的,所以我想把这些static都绑定到一个响应函数上。现在还没有实现,有很多地方还没搞定。1、现在能动态创建static控件,在动态创建过程中模式也加了SS_NOTIFY,我选择的是在创建static时给他们赋值为一样的id,所以创建之后就能自动绑定上相应函数。这个已经实现。2、在点击该控件的时候,还是不能获取static控件的文本 小弟初学VC,用MFC编写了一个贪吃蛇,但是想去掉MFC自己建立的按钮,该怎么办? 一个简单的发邮件问题,或许很菜,不要笑 为什么没有人使用DAO?都看不见DAO的问题呀!进来就给分。。 写一个像Reset链一样的重启程序 初学者请教一个关于OnEraseBkgnd的问题 像VC那样左边的浮动窗口与主框架如何通信? 隐含的BUG debug和release有什么区别? 请问存在跨域情况下如何取得IFAME相对于网页的坐标? 帮帮忙,如何使用CArchive手工存盘? 为什么我的界面背景是黑糊糊的,怎么改变,另外,我的界面经常边角出现白一块,求求了,下面有图 求购一软件
操作如下:
动态生成200个static控件,绑定在一个处理函数上
点击一个控件的时候,就能获得该控件的文本
然后将这些信息都保存到map中,nKey,Cwnd×,
然后当你单击的时通过向父窗口发送nkey过去,然后父窗口通过map得到cwnd指针,然后读取text。
Fun为消息处理函数
在头文件里加函数声明
afx_msg void Fun(UINT nID);
源文件里再将函数跟消息关联
ON_CONTROL_RANGE( 0,1,200,Fun) //1指第一个static的ID,200指第200个static的ID
注意这一句要加在BEGIN_MESSAGE_MAP(C****Dlg, CDialog)和END_MESSAGE_MAP()之间最后定义Fun,str就是要得到的文本
void C****Dlg::Fun(UINT nID)
{
CString str;
GetDlgItemText(nID,&str);
}
这个用C实现起来貌似很难的,不过我见过别人用其他语言实现的,一两句话搞定
/*使用这个CWnd::ChildWindowFromPoint()函数,在WM_LBUTTONDOWN消息中,当你点击Static控件的时候处理,得到static控件的文本以后,将该文本显示在主窗口标题栏上
*/
void CXXXDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CWnd* pWnd = ChildWindowFromPoint(point);
ScreenToClient(&point);
if(pWnd)
{
CString str;
pWnd->GetWindowText(str);
SetWindowText(str);
}
CDialog::OnLButtonDown(nFlags, point);
}
因为static是动态生成的,所以我想把这些static都绑定到一个响应函数上。现在还没有实现,有很多地方还没搞定。
1、现在能动态创建static控件,在动态创建过程中模式也加了SS_NOTIFY,我选择的是在创建static时给他们赋值为一样的id,所以创建之后就能自动绑定上相应函数。这个已经实现。
2、在点击该控件的时候,还是不能获取static控件的文本