我用VC写了个DLL,后来我想传一个句柄到DLL,让DLL发生指定的事件时,发消息到那句柄上。
我的思路是传入句柄值,用一个变量保留,之后当发生指定事件时再读取这个变量,发消息。但一开始的时候却错了.
DLL里传入的那句是:bool WINAPI SetUseWin_ON(long &pHwnd)
{
tlong = &pHwnd;
char strt[255];
memset(strt,0,255);
itoa(*tlong,strt,10);
MessageBox(0,strt,"提示",0);......这是传入句柄,在这一过程,测试的时候所弹的内容的确等于传入的值了。但是在之后事件发生的时候,再读取tlong,就读取成0蛋了。(其余的过程中我没动过那个值)怎么办?我是VC的新手...我也试过搜索VC的全局变量使用,但总测试不成功啊。到底如何使用?有谁可略略出手,帮我解决这一问题啊?感谢感谢~~
然后是你这个tlong在哪里定义的。有没有什么地方修改过。
{
tlong = pHwnd;
...
}
#include ....long *tlong;
long mylong;
long....这样行吗?是不是哪里错了?对VC的某些使用还是不熟悉,十分希望再次得到指点。
回三楼:如果我改成用bool WINAPI SetUseWin_ON(HWND pHwnd)的话,再测试弹窗,这传过来的值就就不是传过来的值了。。只有用bool WINAPI SetUseWin_ON(HWND &pHwnd)yishwnd = pHwnd;每次测试弹值才等于传入的值。。而且在这一过程中,用PostMessage测试,发送消息到这个传来的句柄,可以正常发送。就是到另一过程的时候再调用yishwnd ,就变成了0了。。yishwnd 是我新定义的值,不可能还有其它地方更改到的啊。。
回四楼:直接传值?然后强制转换?我有点笨,有点领悟不到。。
===
对于你的这段说明,我不太理解。HWND终究是个DWORD,传递不需要用引用类型的。怎么就会不是传进来的值呢????
(一):bool WINAPI SetUseWin_ON(HWND pHwnd)yishwnd = pHwnd;PostMessage yishwnd,....如果是这样子的话,句柄为pHwnd的窗口得不到PostMessage 过来的消息。
如果改成:(二):bool WINAPI SetUseWin_ON(HWND &pHwnd) //多了个&yishwnd = pHwnd;PostMessage yishwnd,....如果这样用,句柄为pHwnd的窗口就可成功收到PostMessage过来的消息了。(外部窗口也设了检测的语句,因而我可知道这样用就发送成功了。)目前所用的是第(二)种方法,但我所遇到的问题就是:在bool WINAPI SetUseWin_ON...这一过程的时候,可正常PostMessage,但到另一过程,再使用PostMessage yishwnd,....,那pHwnd句柄窗口就接受不到这消息了。改用yishwnd为long类型,用弹窗方法调试查值时,发现变成0了。yishwnd是我新定义的变量,不会有其它过程更改的。。是指针使用有问题吗?还是全局变量使用有问题..?我所说的话可能非常不专业。。十分希望楼上的前辈能理解,如果可以的话,我希望前辈可能给予我一个简单的,指针或全局变量这方面使用例子。。将会十分感激。。我会之后自己好好着磨的。。
我在EXE操作的时候是可以的,能调用,为什么用DLL就不成功了?
救救我吧!!!!!!!!!