主题:  [求助}請問製作互動式繪圖中,如何實現繪製Polygon功能

davichiu

职务:普通成员
等级:1
金币:0.0
发贴:21
#312002/8/30 10:30:23
在有一個主题: 填充功能的实现,是由idea版主所發的的例子
它也用到了memtools來做為指针传递,在win2000下也是不能運行
只能用在98上哦????



davichiu

职务:普通成员
等级:1
金币:0.0
发贴:21
#322002/8/30 10:30:41
在有一個主题: 填充功能的实现,是由idea版主所發的的例子
它也用到了memtools來做為指针传递,在win2000下也是不能運行
只能用在98上哦????



与人同乐

职务:管理员
等级:6
金币:18.0
发贴:3928
#332002/8/30 19:00:18
毁了!我安装了IE5.5,现在连AAM也看不成了。IE6下也是。



idea

职务:普通成员
等级:1
金币:1.0
发贴:289
#342002/9/2 8:15:01
为什么?



魔岩

职务:版主
等级:6
金币:34.0
发贴:4453
#352002/9/2 8:36:59
大清早上来以为idea有什么关于memtools.u32的进展啊。。原来是三个字:为什么。。。



syzy

职务:普通成员
等级:1
金币:4.0
发贴:131
#362002/9/2 20:24:37
以前我也遇到过在win98下引入的api函数,在2000下失效的问题,是通过在2000下重新引入函数来解决的。今天在单位找了一台98和2000双系统的机器试了一下Y的例子,把结果告诉大家。
1.AW带的winapi.u32可能存在一些问题。Y的例子在2000下不能显示,问题出在GetDC这个函数上。解决方法是不用winapi.u32,在98下将GetDC这个函数从user32.dll重新导入,这样在2000下运行,未打包之前会报错,但打包后可正常显示。
2.如果在2000下重新从user32.dll(是2000下的)引入函数,则在2000下无论打包前还是打包后都无问题,但是未打包的文件在98下会报错,打包后的文件正常。
3.对于AW来说,98和2000下的dll文件应该有较大的区别,在98下AW无法从2000的DLL文件加载函数,同样在2000下也无法从98的DLL文件加载函数。
4.从我遇到的情况来看,已经有多个常用的函数出现了类似问题,看来这种现象并不是少数。

编辑历史:[这消息被syzy编辑过(编辑时间2002-09-02 20:27:48)]
[这消息被syzy编辑过(编辑时间2002-09-02 20:29:58)]


魔岩

职务:版主
等级:6
金币:34.0
发贴:4453
#372002/9/2 20:39:09
关于你说的问题。。加入用DLL的函数。。也许可以这样的办法:

在2K下调试导入函数,在98里面打包,不管什么系统都正常(XP就不知道拉。。。昨天刚和虚竹做过这样的试验!!)



魔岩

职务:版主
等级:6
金币:34.0
发贴:4453
#382002/9/2 20:45:57
我早上在http://webforums.macromedia.com/authorware/问的问题:

Question of MEMTOOLS.U32

i use function polygon (Winapi.u32 include) to draw and fill a quadrangle.
Winapi.u32 describe: BOOL=Polygon(HDC,CONST POINT*,int)

CONST POINT* Declare :
typedef struct tagPOINT {
LONG x;
LONG y;
}POINT;

But authorware don't support CONST POINT*,so i use memtools.u32 to create,following code
is well done in win98,but when it run in win2000,it don't work(nothing happens).
anybody who can tell me the reason and the difference use of memtools.u32 between win98
and win2000? thanks!

following is the calculate icon code:

HDC:=GetDC( WindowHandle)
pointer:=AllocMem(32)
--draw a quadrangle:(150,30),(100,175),(200,90),(70,90)
PokeULong(pointer,0,150)
PokeULong(pointer,4,30)
PokeULong(pointer,8,100)
PokeULong(pointer,12,175)
PokeULong(pointer,16,200)
PokeULong(pointer,20,90)
PokeULong(pointer,24,70)
PokeULong(pointer,28,90)
--set fill mode
SetPolyFillMode(HDC,1)
HBRUSH:=CreateHatchBrush(5, 128)
oldbursh:=SelectObject(HDC,HBRUSH)
--Do it!
result:=Polygon(HDC, pointer,4)
FreeMem(pointer)


回答这样写的:
would have expected this to work using W2K. However, there's little point
in attempting to draw on the presentation window in this way since there's
no mechanism by which the window can be repainted (e.g. when another window
is moved on top of it). Perhaps your code is incomplete, but it also needs
to tidy up properly at the end.

Chris Forecast



魔岩

职务:版主
等级:6
金币:34.0
发贴:4453
#392002/9/2 21:38:34
验证了张岩老师的话。。正确。。呵呵



与人同乐

职务:管理员
等级:6
金币:18.0
发贴:3928
#402002/9/3 6:30:57
Rock在上个帖子中说
引用:
关于你说的问题。。加入用DLL的函数。。也许可以这样的办法:

在2K下调试导入函数,在98里面打包,不管什么系统都正常(XP就不知道拉。。。昨天刚和虚竹做过这样的试验!!)

似乎真是WINAPI.U32的问题。那个老外说的是AW演示窗口的重绘机制有问题,当其它窗口覆盖过AW窗口后,图形会消失。



魔岩

职务:版主
等级:6
金币:34.0
发贴:4453
#412002/9/3 8:30:30
对。。。老外说的是一种情况,呵呵。。

我已经在我的2K机器上面测试成功了!



与人同乐

职务:管理员
等级:6
金币:18.0
发贴:3928
#422002/9/3 13:57:24
Rock在上个帖子中说
引用:
关于你说的问题。。加入用DLL的函数。。也许可以这样的办法:

在2K下调试导入函数,在98里面打包,不管什么系统都正常(XP就不知道拉。。。昨天刚和虚竹做过这样的试验!!)

XP下面不行。



davichiu

职务:普通成员
等级:1
金币:0.0
发贴:21
#432002/9/3 23:26:50


最近為了交作業,身體變差了,一段時間沒有上來了,
發現關於這個問題還有這麼多人在關心,有Rock版主
Y版主.syzy老師與idea版主,你們實在是太專業了,

還有發現Y版主的身份是袁海东老师,我不認識這個人
但是我在3個星期前在當當書局有郵購了authorware6.0
经典范例教程,還沒有寄來,由你們回答與研究問題熱誠
,肯定是一本好書,初學者的我應會有很大幫助

Rock版主介紹了一個alPicView.ocx,不知它是不是一種
用開發gdi32.dll功能,由介紹它好像具有繪製簡單圖形的
功能,我會研究研究

張岩老師是我第一個問這個問題,並且很熱心以eamil回答
我,並介紹我一些AW論壇,對我幫助很大,謝謝你們






魔岩

职务:版主
等级:6
金币:34.0
发贴:4453
#442002/9/3 23:55:51
常来5D作客。。。台湾的兄弟!