查看: 1090|回复: 15

关于用HUD输出的问题

[复制链接]

该用户从未签到

发表于 2014-5-4 08:07:29 | 显示全部楼层 |阅读模式
我想做一个程序,用HUD实时输出一组网络接收来的数据,书上的例子 都是直接setText(L"汉字"); 各位大神告诉我该怎么做

该用户从未签到

 楼主| 发表于 2014-5-4 09:25:39 | 显示全部楼层
我实现了,其实就是直接在setText(a), a就是要输出的字符变量。

该用户从未签到

 楼主| 发表于 2014-5-4 10:15:40 | 显示全部楼层
另外一个问题,如要要输出的是好几个wchar_t类型组合起来的,怎么是这些wchar_t类型的变量,连接在一起

该用户从未签到

 楼主| 发表于 2014-5-4 10:16:08 | 显示全部楼层
还有float型怎么转变没wchar_t型

该用户从未签到

发表于 2014-5-4 16:25:17 | 显示全部楼层
本帖最后由 buaahc 于 2014-5-4 21:33 编辑

wcscat(wchar_t1,wchar_t2);宽字符连接

float x = 65.1;char a[20];sprintf(a, "%g", x);float到char

MultiByteToWideChar()char到wchar_t
这些问题百度一下就解决了

该用户从未签到

 楼主| 发表于 2014-5-4 22:38:37 | 显示全部楼层
buaahc 发表于 2014-5-4 16:25
wcscat(wchar_t1,wchar_t2);宽字符连接

float x = 65.1;char a[20];sprintf(a, "%g", x);float到cha ...

谢谢你,我是用swprintf_s解决的,另外还有一个问题我想请教您一下
就是osg中输出的一段wchar_t型字符串太长了,我想按照一定长度断行
我现在是统计其中的数字和汉字,数字的个数*2+汉字的个数大于某个值是断行
但是我发现在Wchar_t中,数字不能用if(a[10]>='0'&&a[10]<='9')这个语句来判断,请问我应该怎么统计出其中数字,字母的个数

该用户从未签到

发表于 2014-5-4 22:50:20 | 显示全部楼层
。。。我这儿验证的可以使用
wchar_t a[10] = {L"212121"};
        int b = 0;
        if (a[0]>'0'&&a[0]<'3')
        {
                        b++;
        }
编译通过,运行成功。。。

该用户从未签到

 楼主| 发表于 2014-5-4 23:26:37 | 显示全部楼层
buaahc 发表于 2014-5-4 22:50
。。。我这儿验证的可以使用
wchar_t a[10] = {L"212121"};
        int b = 0;

谢谢你啊,搞好了

该用户从未签到

 楼主| 发表于 2014-5-5 19:45:22 | 显示全部楼层
buaahc 发表于 2014-5-4 22:50
。。。我这儿验证的可以使用
wchar_t a[10] = {L"212121"};
        int b = 0;

你好,还有个问题请教您
就是如果要实时更新HUD显示的文字内容,应该怎么做,settext好像只能set一次

该用户从未签到

发表于 2014-5-6 13:33:01 | 显示全部楼层
实时显示必须更新回调,接收网络数据,实时的调用setText()就行了

该用户从未签到

 楼主| 发表于 2014-5-6 16:41:19 | 显示全部楼层
buaahc 发表于 2014-5-6 13:33
实时显示必须更新回调,接收网络数据,实时的调用setText()就行了

你好,有没有简单的可以实现的例子?
我在网络上找了一些,(例如http://blog.csdn.net/tmljs1988/article/details/7563016)但是都没法编译通过
新手一个,这种太复杂了,谢谢

该用户从未签到

 楼主| 发表于 2014-5-6 16:42:46 | 显示全部楼层
buaahc 发表于 2014-5-6 13:33
实时显示必须更新回调,接收网络数据,实时的调用setText()就行了

不用socket这块,你只要帮我找个能实时变更text内容的例子,就可以,谢了哈,嘿嘿

该用户从未签到

 楼主| 发表于 2014-5-6 20:37:09 | 显示全部楼层
buaahc 发表于 2014-5-6 13:33
实时显示必须更新回调,接收网络数据,实时的调用setText()就行了

http://forum.openscenegraph.org/viewtopic.php?t=3418
类似于这样的一个回调,写好了,然后再什么地方使用呢?怎么用呢?多谢,

该用户从未签到

 楼主| 发表于 2014-5-7 16:29:14 | 显示全部楼层
buaahc 发表于 2014-5-4 22:50
。。。我这儿验证的可以使用
wchar_t a[10] = {L"212121"};
        int b = 0;

你好,我找到了一个编译成功的,但是在多视图情况下不能显示文字,你能帮我看看吗
http://www.osgchina.org/forum.ph ... id=13729&extra=

该用户从未签到

发表于 2014-5-8 23:01:04 | 显示全部楼层
http://blog.csdn.net/tmljs1988/article/details/7563016这个例子没有任何问题,能够编译通过。。你按照他例子修改就行,
至于你说的多视图,我看了一下原因是
bool CHUD_viewPoint::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter& aa)

{
        switch(ea.getEventType())
        {
        case(osgGA::GUIEventAdapter::FRAME):
                {
                        osgViewer::Viewer* viewer = dynamic_cast<osgViewer::Viewer*>(&aa);//这句话强制转换错误,应该是osgViewer::View* viewer = dynamic_cast<osgViewer::View*>(&aa);因为CompositeViewer->add(view),view不是viewer,所以你动态转换得到的是个空指针,不会看到任何东西,修改完此处后续的你再修改编译出的错应该就会看到文字了

该用户从未签到

 楼主| 发表于 2014-5-9 09:59:17 | 显示全部楼层
buaahc 发表于 2014-5-8 23:01
http://blog.csdn.net/tmljs1988/article/details/7563016这个例子没有任何问题,能够编译通过。。你按照他 ...

谢谢啊,按照你说的,我改好了。3Q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表