4635|13

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

windML功能扩展问题 [复制链接]

鄙人第一次访问:向各位大侠问好!大家好!
  
我刚开始做windML界面开发不久,问的问题可能不太专业,各位打下不要见笑哦。大家知道用windML作界面人机交互性很差,所以我想对它的功能作一些扩展,比如:实现彩色边框,组框,文本框等功能。我在的问题是:我这些功能以源代码的形式写在应用程序中可以正确显示结果,可是如果我把这个功能源码单独写在一个C文件中,然后在一头文件的形式调用,结果发现只调用函数名,不执行函数体,结果就显示不正确啦,请问我哪里没做对阿!请予以指教!

最新回复

大侠,问题解决了,谢谢你啊!我把我的.c和.h合写在一起合成一个.h再把.h加进我的应用程序,就OK啦!  详情 回复 发表于 2007-4-10 16:12
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
不知道你说的只调用函数名,不执行函数体是什么意思?能说清楚一点么。
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
先谢谢您啦大虾!
是这样的,我把函数名放在头文件中拉,根据应用程序的执行结果,我觉得应该是应用程序只调用了函数名,因为函数定义在另一个C文件中,也就不报错,但实际并没有执行函数体,也就是该函数相应的功能实现部分。
不知道我这样说能表达清楚我的意思不,您明白没有?
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
一般不会出这种问题。你可以在你的函数体里加一条打印语句,就知道语句是否执行了。
通常出这样的问题,有可能是函数调用的时候参数出错了。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
举个例子吧:我欲实现组框功能,我就编写了groupbox.h和groupbox.c然后我把groupbox.h加进我的应用程序中,这样就显示不了组框,如果我把groupbox.c中的函数代码直接加进我的应用程序,而不是通过调用我已经封装好的函数,那就能显示组框。请问我哪里没有顾及到阿?谢谢!
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

6
 
谢谢,我在按你说的方法试试。
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

7
 
大侠,我还是没能解决问题,我把程序主要部分考下来啦,你帮我分析一下吧,谢谢!
/*下面是我写的功能函数*/
#include "color_init.h"
#include "colorfulRect.h"

void wyy_colorfulrect(UGL_GC_ID gc,int bcolor, int x, int y, int lx, int ly, int x_num, int y_num)
{
uglBatchStart(gc);
...

uglBatchEnd(gc);
}
/*头文件*/
#include
#include


#ifndef TEXTOUT_H
#define TEXTOUT_H

void wyy_colorfulrect(UGL_GC_ID gc,int bcolor, int x, int y, int lx, int ly, int x_num, int y_num);

#endif

/*这是我应用程序的一部分*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "hzk.h"
#include "colorfulRect.h" /*包含我的头文件*/

/*主程序部分*/
UGL_LOCAL int ExeRect(void)
{
        UGL_GC_ID gc;
        UGL_DEVICE_ID     devId;        /*def device's ID*/
        UGL_ORD textOrigin = UGL_FONT_TEXT_UPPER_LEFT;
        UGL_FONT_DEF systemFontDef;       /*def system's font */
        
        uglInitialize();
        。。。
        gc=uglGcCreate(devId);
        。。。
        /*调用我写的功能函数部分*/
        wyy_colorfulrect(gc, GREEN, 200,20,400,220,4,4);
        
         ExePause();
         uglGcDestroy(gc);
        uglDeinitialize();
        return(0);
}
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

8
 
这样看源代码是没有用的。
你在你的wyy_colorfulrect函数里,加几条打印信息,看执行到哪里。
一般可以单步跟踪的吧。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
好的!谢谢!
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

10
 
大侠,现在问题是这样的:我调试时,当程序执行到任务入口函数时,就跳到汇编中开始执行啦,就见不到执行主函数部分,所以也就看不到我调用的函数执行没有,设置断点也没用,汇编部分我也看不大明白,它就是主函数的汇编吗?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

11
 
不是,由于你没有把你写的.c文件加入工程,所以无法用单步跟踪。那些汇编是你写的程序的代码。
要么你可以把你源文件加入再编译,要么你在单独的C文件里加打印信息。
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

12
 
我写的.C文件加到工程中了啊,我把源文件加入再编译能通过,但我的原意是把扩展的功能模块独立出来,以打包加载模块。我在单独的C文件里加打印信息啦,但是就如我上面所说的,没用怎么办啊?
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

13
 
如果你要单步跟踪,只有加入工程一起编译。如果你单独以库的形式提供,需要重新编译一下WINDML库。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

14
 
大侠,问题解决了,谢谢你啊!我把我的.c和.h合写在一起合成一个.h再把.h加进我的应用程序,就OK啦!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表