关于新建面板和新建控件的ID问题
一个工程有两个源文件,一个是Test.c(主函数在这个源文件中),一个是function.c(主要包括一些较通用的函数);还有一个用户头文件function.h;
uir文件尾Test.uir。
现在在Test.c中新建了一个面板panel与控件canvas,并在这个源文件的函数中使用了panel和canvas;而在function.c中也使用了panel和canvas。
如果在function.h中定义如下:
static int panel;
static int canvas;
在Test.c中可以使用它们,但使用后对其的赋值却不能在function.c中看到,比如新建一个面板和控件
panel = NewPanel ();
canvas = NewCtrl ();
经过调试,可以看到panel的值为5,canvas的值为2;
但在function.c中看到panel和canvas的值都为0;
但如果在function.h中定义如下:
int panel;
int canvas;
则在function.c中pane的值为5,canvas的值为2。
请问对于这样的面板和控件,应该怎样定位为宜? 事实上,我不明白你为什么会这样做!
“一个是function.c(主要包括一些较通用的函数);”——既然是通用的函数,你有何必在其中调用特定的资源,而且,如果这些资源是动态创建的,很容易出问题! 2# netcreature
因为我需要对这些特定的资源在function.c里进行判断,以进行相应的操作,而且这些资源并非动态创建,我的问题主要是这种资源应该是定为全局变量还是静态全局变量为宜? 1、首先,这种做法并不好。对于针对特定资源的操作应放在同一模块中(即要写成子函数的形式);
2、当你使用如:panel = NewPanel ();canvas = NewCtrl ();New关键词创建的资源,都属于动态创建;
3、静态全局变量只能在模块内部使用(在这里,指function.c中);
4、使用外部函数的一个好的习惯应该是与资源无关的算法等。
页:
[1]