您的位置:程序门 -> vc/mfc -> 界面



textout函数问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


textout函数问题
发表于:2007-05-21 11:42:50 楼主
cclientdc   dc(this);
dc.setbkmode(transparent);  
dc.textout(0,0, "hello   world!!!! ");  
mfc的dlg工程,代码放在oninitdialog()函数中,界面不显示。为什么啊

我另外又建了个static的控件
static   cdc   memdc;
memdc.createcompatibledc(getdlgitem(idc_bitmap_static)-> getdc());
                  memdc.setbkmode(transparent);  
memdc.textout(0,0, "hello   world!!!! ");  
我想显示在static空间中,还是不行呢?
差点什么东西吗
发表于:2007-05-21 11:46:381楼 得分:0
把这三句写进onpaint()
cclientdc   dc(this);
dc.setbkmode(transparent);  
dc.textout(0,0, "hello   world!!!! ");
发表于:2007-05-21 11:47:342楼 得分:0
mfc的dlg工程,代码放在oninitdialog()函数中,界面不显示。为什么啊
=========================================
oninitdialog时窗口还没有显示好呢,当然没办法显示了,加在onpaint中.
发表于:2007-05-21 11:56:013楼 得分:0
{
cclientdc   dc(this);
dc.setbkmode(transparent);
dc.textout(0,0, "hello   world!!!! ");  
}
{
cdc   memdc;
memdc.createcompatibledc(getdlgitem(idc_bitmap_static)-> getdc());
memdc.setbkmode(transparent);
string   text= "haha ";
memdc.textout(0,0,text.c_str(),text.size());
}
放在onpaint()中,上面那段代码在client要显示,但我想在static控件中显示就不行了,为什么?
下面那段代码,在static中显示不出来
发表于:2007-05-21 12:05:464楼 得分:0
static中也要使用onpaint
代码也是
cclientdc   dc(this);
dc.setbkmode(transparent);
dc.textout(0,0, "hello   world!!!! ");  
不是
memdc
发表于:2007-05-21 12:32:175楼 得分:0
还是这样的话,如何让文字显示在static控件中?那样写没有和该控件联系上啊
发表于:2007-05-21 12:37:106楼 得分:0
控件本身也有onpaint的,控件本身也是一个子窗口
发表于:2007-05-21 12:38:567楼 得分:0
可以把static控件id改掉,然后用setdlgitemtext(...)改文字
发表于:2007-05-21 12:49:578楼 得分:0
cclientdc   dc(this);
dc.setbkmode(transparent);
dc.textout(0,0, "hello   world!!!! ");  
只能显示在client窗口上,我想显示在static控件中啊
发表于:2007-05-21 13:03:219楼 得分:0
第一,只是想在static控件里显示的话,用getdlgitem(idc_xxx)-> setwindowtext( "123 ");
idc_xxx为控件的坐标;
第二,如果还想在static里成画图什么的```派生个子类mystatic,里面的onpaint里画好你的东西,当然,textout是可以用的``````
发表于:2007-05-21 13:10:2210楼 得分:0

从   cstatic   派生   cyourstatic
void   cyourstatic::onpaint()  
{
        cpaintdc   dc(this);  
        dc.setbkmode(transparent);
        dc.textout(0,0, "hello   world!!!! ");  
}

在界面窗口所在类的头文件里#include   yourstatic.h
在界面设计器上放一个静态文本框
将静态文本框的id由idc_static改成任何其它的内容
在界面设计器上按下ctrl键不放的同时按下 "w "键
在弹出的classwizard中选择第二个page
为该静态文本框添加控件成员变量
将该控件成员变量的基类由cstatic改为cyourstatic
点ok
发表于:2007-05-21 13:36:4811楼 得分:0
我是在codeproject里找的一个位图显示的类cdibsectionlite。
cdibsectionlite   gdibmgr;
cbitmap   bitmap;
bitmap.loadbitmap(idb_bitmap1);
gdibmgr.setbitmap((hbitmap)bitmap);   //oninitdialog()函数中

                  gdibmgr.draw(getdlgitem(idc_bitmap_static)-> getdc(),cpoint(0,0));//onpaint()函数中
这样,能马上将图显示在static控件中。(证明这样写可以在static控件中显示位图)
但我写成:
cclientdc   dc(this);
dc.setbkmode(transparent);
dc.textout(0,0, "hello   world!!!! ");
hbitmap   hbitmap   =   (hbitmap*dc.getcurrentbitmap();
gdibmgr.setbitmap(hbitmap);                  
                                    gdibmgr.setbitmap((hbitmap)bitmap);   //oninitdialog()函数中
textout()中内容,在client窗口中有显示,但static控件中就不能显示了。中间就有个getcurrentbitmap()函数,是不是这个函数的用法不对。


快速检索

最新资讯
热门点击