一个用vc6写的程序,要求可以用picture显示文字。
如果我用vb实现,代码很简单
Private Sub Command1_Click()
pic1.CurrentX = 100 '设置字的x坐标
pic1.CurrentY = 200'设置字的y坐标
pic1.Print "abcd"'写字
MsgBox "aa"
pic1.Cls'清空End Sub
如果用vc,怎样实现同样的功能?
问题非常幼稚,望各位朋友帮忙,非常感谢!
如果我用vb实现,代码很简单
Private Sub Command1_Click()
pic1.CurrentX = 100 '设置字的x坐标
pic1.CurrentY = 200'设置字的y坐标
pic1.Print "abcd"'写字
MsgBox "aa"
pic1.Cls'清空End Sub
如果用vc,怎样实现同样的功能?
问题非常幼稚,望各位朋友帮忙,非常感谢!
我刚刚查了一下,SetWindowText可以设置显示内容,但似乎不能设置显示位置。
不过我对vc不熟,也不敢说自己正确。
如果这个函数能实现我的功能,哪位朋友能否给几行示例代码?
呵呵,要求可能有些过分了,先谢了。
需要重载CStatic控件
如果你完全没基础恐怕不太容易上手
实际上,我原先想这样做的
在picture中放一edit,在edit中显示文本(或不放edit,直接在picture上写字,道理差不多)
程序启动,设置字体、字号、字色、背景色、文字内容,然后分别处理:
左右滚动:先确保显示内容宽度>显示区域宽度(不足就后补空格,直到满足条件为止),然后在ontimer不停的把显示内容的第一个字符放到最后即可;
上下滚动:
在ontimer中不停改变edit纵坐标(例如,客户要求自下向上滚动,则不断上提edit,直到整个edit都出了picture,则将edit顶点纵坐标置为Picture下边界)。
但因为我对vc不熟,有些代码不知怎样实现。
如果能有更好的思路或已经实现的代码可以分享,我将非常感谢!
[email protected]
再次感谢!
http://www.vckbase.com/code/viewcode.asp?id=1820
{
hDC = BeginPaint(hWnd,&stPs);
hFont = CreateFont(24,16,0,0,400,0,0,0,OEM_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_SCRIPT,FontName); hOldFont = (HFONT)SelectObject(hDC,hFont);
SetTextColor(hDC,RGB(200,200,50));
SetBkColor(hDC,RGB(0,0,255));
TextOut(hDC,0,0,szText,sizeof(szText));
SelectObject(hDC,hOldFont);
EndPaint(hWnd,&stPs);
}
break;
这是窗口重绘消息里的一段代码,包括字体设置,字体颜色,背景色,输出字体的位置控制
根据客户显示区域划分,每区域动态生成一组控件(1picture+1edit,edit生成在picture中,用Picture的目的就是当edit出了picture边界时,出界部分自动不可见,picture的大小和坐标为区域大小和坐标)
程序启动,设置字体、字号、字色、背景色、文字内容,然后分别处理:
左右滚动:启动时按照客户设置的区域坐标,放好picture和edit(edit大小和坐标=picture,其实左右滚动不需picture), 先确保显示内容宽度>显示区域宽度(不足就后补空格,直到满足条件为止),然后在ontimer不停的把edit显示内容的第一个字符放到最后即可;
上下滚动:
将动态生成的edit设成自动换行,启动时edit大小=picture,edit初始坐标的上边界=picture的下边界,在ontimer中让edit的top不断减小,但bottom不变,直到所有文字都显示出来(这里有些计算),再设edit大小=picture,edit初始坐标的上边界=picture的下边界。
代码的主要部分已经实现,但还有几个问题需要请教:
1.如何设置这种动态生成的picture的背景色?edit的背景色及字色?
2.为了计算显示文字所占区域我需要调用GetTextExtent函数
CSize txtsize;
CDC *dc=edit_array[screenid]->GetDC();//edit_array可以看作是edit的数组
edit_array[screenid]->SetFont(m_Font[screenid]);//m_Font[screenid]是一个cfont
txtsize=dc->GetTextExtent(txt);//txt是要显示的文本
但是当我设置cfont的字大小不同(显示出来的效果也确实不同)时,txtsize得到的结果没有变化(似乎就是默认字体字号),应如何解决?
呵呵,自己啰嗦了很多,就为了把问题说清楚,再次感谢
你自己自定义一个控件吧
我做过一个绘制坐标系的例子
你可以参考一下
原理都是一样的
而且你需要的应该更简单些吧
希望对你有帮助吧
http://download.csdn.net/source/2308688
例如代码:
CStatic p1;
CEdit t1;
运行某事件时
p1.Create(NULL,WS_VISIBLE,CRect(100,100,250,250),this,0);
t1.Create(WS_VISIBLE,CRect(0,-50,150,100),&p1,0);
问题:
1.如何设置这种动态生成的picture的背景色?edit的背景色及字色?(也就是上面示例代码提到的p1,t1)
2.为了计算显示文字所占区域我需要调用GetTextExtent函数
CSize txtsize;
CDC *dc=edit_array[screenid]->GetDC();//edit_array可以看作是edit的数组
edit_array[screenid]->SetFont(m_Font[screenid]);//m_Font[screenid]是一个cfont
txtsize=dc->GetTextExtent(txt);//txt是要显示的文本
但是当我设置cfont的字大小不同(显示出来的效果也确实不同)时,txtsize得到的结果没有变化(似乎就是按照默认字体字号计算的,没有更新),应如何解决?
多谢!
在线等,急!!!!
望高手帮忙,多谢!