📄 如何让静态文本框动态地显示文字.txt
字号:
如何让静态文本框动态地显示文字?楼主sslnyb(为人民服务)2004-07-08 11:54:28 在 VC/MFC / 界面 提问
比如刚开始静态文本框的显示的是"true",我按下一个按钮后就变为"false",
这应该怎么实现,要不要给静态文本框加变量?
问题点数:0、回复次数:14
Top
1 楼lhj0532(klinsmann)回复于 2004-07-08 11:56:41 得分 0 加变量可以,也可以(CEdit *)GetDlgItem(EDITID)->
Top
2 楼huaboy408(Thinking...)回复于 2004-07-08 12:00:03 得分 0 GetDlgItem(IDC_STATIC)->SetWindowText(str);
用控件变量也可以
m_static.SetWindowText(str);
Top
3 楼auly403(卡西*丁布)回复于 2004-07-08 12:00:59 得分 0 BOOL SetWindowText(
HWND hWnd, // handle to window or control
LPCTSTR lpString // address of string
);
hwnd可以用GetDlgItem(控件ID)获取
Top
4 楼zhangnanonnet(鱼欢)回复于 2004-07-08 12:02:58 得分 0 把静态文本框的名称该成不是IDC_STATIC,然后就和EDIT一样了,定义CString变量也行,setwindowtext()也行
Top
5 楼zhangnanonnet(鱼欢)回复于 2004-07-08 12:07:27 得分 0 把静态文本框的名称该成不是IDC_STATIC,然后就和EDIT一样了,定义CString变量也行,setwindowtext()也行
Top
6 楼bohut(●伯虎● )回复于 2004-07-08 12:11:57 得分 0 SetDlgItemText(IDC_STATIC,"你要显示的内容");
Top
7 楼lixiaosan(小三)回复于 2004-07-08 12:13:14 得分 0 void CTest6Dlg::OnButton1()
{
GetDlgItem(IDC_STATIC1)->SetWindowText("false");
}
Top
8 楼OriesMap()回复于 2004-07-09 10:23:18 得分 0 没试过,不过我觉得大概zhangnanonnet(鱼欢) 的方法才能保证它改变。因为静态文本的ID都是一样的。肯定要有些区别才行的。
Top
9 楼Leanderhe(家俊)回复于 2004-07-09 11:39:43 得分 0 是啊,如果不改变ID :IDC_STATIC就根本加不了变量。
Top
10 楼huaboy408(Thinking...)回复于 2004-07-09 11:44:33 得分 0 如果对静态文本控件操作的话,一般都要改ID
Top
11 楼aoosang(智慧的鱼)回复于 2004-07-09 13:02:38 得分 0 用小三的吧
Top
12 楼csyw(梦幻之旅)回复于 2004-07-10 17:27:33 得分 0 mark
Top
13 楼laiyiling(陌生人[MVP])回复于 2004-07-10 17:32:21 得分 0 如果不改变ID :IDC_STATIC就根本加不了变量,强烈要改!!!
Top
14 楼stormding(阿丁)回复于 2004-07-10 18:00:00 得分 0 void CTest6Dlg::OnButton1()
{
if(GetDlgItem(IDC_STATIC1)->GetWindowText()=="true")
GetDlgItem(IDC_STATIC1)->SetWindowText("false");
else
..
}
==========================================================================================
如何动态控制静态文本框?楼主vc_dwj(深蓝)2002-12-20 11:41:43 在 VC/MFC / 基础类 提问
对于formview中的对话框中的静态文本框,现在判断鼠标是否选中和动态的设置其显示字符已实现了。但是如何动态控制静态文本框背景色改变呢?
问题点数:100、回复次数:7
Top
1 楼LIFEForSoft(北京原来叫“阉”京)回复于 2002-12-20 11:51:42 得分 20好像在WM_CTLCOLOR里改
Top
2 楼foxmail(萧遥 www.LoveSnow.com)回复于 2002-12-20 11:57:22 得分 20HBRUSH CServer2Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(nCtlColor== CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,255,0));
//pDC->SetBkColor(RGB(200,150,235));
//此处设置字体的颜色
return (HBRUSH)m_brush.GetSafeHandle();
//return hbr;
}
else
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Return a different brush if the default is not desired
//return hbr;
}
Top
3 楼vc_dwj(深蓝)回复于 2002-12-20 12:16:11 得分 0 我的意思是当鼠标点中它时,其背景色改变,当鼠标点中其他项时,其背景色又变回来,这个样子的?
现在已能判断是否被鼠标点中。
Top
4 楼zswzwy(酒是穿肠毒药 @ 色是刮骨钢刀)回复于 2002-12-20 12:22:47 得分 50继承一个它的类,调用OnCtlColor函数。
Top
5 楼vc_dwj(深蓝)回复于 2002-12-20 12:29:03 得分 0 zswzwy(←圣骑士!帕迪拉斯!)您好,能具体说说吗?非常感谢!!!
Top
6 楼speakboy(一个菜鸟的自白---我想变成高手!)回复于 2002-12-20 12:50:17 得分 0 对同意 zswzwy(←圣骑士!帕迪拉斯!)的
Top
7 楼wanglh(宏)回复于 2002-12-20 12:52:12 得分 10需要修改MOUSEMOVE和ONCTLCOLOR函数
=======================================================================================
动态生成控件问题!楼主spritegg(彩旗飘飘)2002-11-07 21:43:29 在 VC/MFC / 界面 提问
我给一个属性页动态添加了很多edit box,请问我该如何给这些控件添加关连变量????
我采用的是和静态一样的添加方法可是老是提示系统不支持视图操作!
补充一下我的动态生成控件函数放在oninitidlg中。
问题点数:100、回复次数:10
Top
1 楼xiaolele(愿有情人终成眷属! 愿有缘人他日重逢)回复于 2002-11-07 22:04:31 得分 10up
======================================================
红旗不到,彩旗飘飘!
Top
2 楼52001314(不当程序员了)回复于 2002-11-07 22:19:40 得分 0 为什么要用动态的啊?可以先静态加好,再动态地移动,隐藏或显示,这样比较方便。
Top
3 楼spritegg(彩旗飘飘)回复于 2002-11-08 14:21:59 得分 0 edit box太多了阿,有320个,静态加好太费时了吧?
Top
4 楼nicolas2001(nick)回复于 2002-11-08 16:58:47 得分 10gz
Top
5 楼andy_lau(天行键,君子当自强不息!)回复于 2002-11-08 17:20:55 得分 20可以通过动态进行创建具体如下:
在.h文件中声名 CEdit edit[320];
并在.cpp中的OnInitDialg()中写如下代码
for(int i=1;i<=320;i++)
{
edit[i-1].Create(....,WM_UER+i);//其中WM_UER+i为editbox的id
edit[i-1].ShowWindow(...);
}
UpdateWindow(..);
Top
6 楼JennyVenus()回复于 2002-11-08 17:29:14 得分 10这个问题我来回答,和你的做法不一样的
这种做法是手工在窗体上创建了很多个实际的控件,然后声明相应的变量
调用
BOOL SubclassDlgItem(
UINT nID,
CWnd* pParent
);
示例
in .h
CButton m_button[ 10 ];
BOOL CYourDlg::OnInitDialog()
{
CDialog::OnInitDialog();
for( int i = 0; i < 10; i++ )
m_button.SubclassDlgItem( IDC_BUTTON1 + i, this);
//IDC_BUTTON1-IDC_BUTTON10要连续,如果不连续,只好一个个的写了
return TRUE;
}
Top
7 楼JennyVenus()回复于 2002-11-08 17:30:26 得分 10采用的是和静态一样的添加方法可是老是提示系统不支持视图操作!???
没看清这个
上面的不合适了,抱歉
Top
8 楼andy_lau(天行键,君子当自强不息!)回复于 2002-11-08 17:42:26 得分 20可以自己通过GetDlgItem(id)->GetWindowText(...)来得到数据
Top
9 楼billik(billik)回复于 2002-11-08 22:25:19 得分 10动态生成的,原来消息映射的函数可以用吗?比如说双击事件
Top
10 楼jiangsheng(蒋晟.Net[MVP])回复于 2002-11-08 22:52:39 得分 10自己写DDX了
in DoDataExchange
for(int i=0;i<m_arwndEdit.GetSize(),i++){
DDX_Control(pDX,arwndID[i],m_arwndEdit[i]);
DDX_Text(pDX,arwndID[i],arString[i]);
}
==============================================================================
给个好点的算法你
int L_lb = 0 ;
int R_lb = 0 ;
for(int i = 1 ; i < = 10 ; i ++ )
{
TLabel *lb = new TLabel(NULL);
lb->Parent = Panel1;//
lb->Left = L_lb;
lb->Top = R_lb;
if(i % 5 == 0)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -