问一个关于InputBox的问题
easyx吧
全部回复
仅看楼主
level 9
zhangjb90s 楼主
在程序中,第一次调用如下函数时,接受用户输入,但是输入完点击确定之后,接着又弹出该窗口,连续四次,窗口才会消失。以后再调用该函数时,就正常了
想问一下,为什么第一次调用需要点击四次确定,而以后只需要点击一次就行了
void SaveImg(void)
{
bool ret=false;
IMAGE save;
char name[256]="save.bmp";
ret=InputBox(name,255, "请输入文件名","保存","save.bmp",0,0,false);
if(ret)
{
getimage(&save,0,80,720,560);
saveimage(name,&save);
}
}
2013年03月30日 13点03分 1
level 9
zhangjb90s 楼主
2013年03月30日 13点03分 2
level 12
可以把完整代码贴出来看看吗?
2013年03月31日 03点03分 3
没法发链接,被吞了N次了。。。。。我把工程链接发往你的“离线消息”,不知道能不能收到
2013年03月31日 08点03分
回复 zhangjb90s :[瀑布汗~] 我什么都没收到。。。你是发的百度网盘的地址吗?里面随便加几个字,让程序无法识别处理 url 就行啦。
2013年04月02日 03点04分
回复 yangw80 :ht[顶]tp://pan.baidu.com/share/link?shareid=408171&uk=3173099694
2013年04月02日 05点04分
回复 yangw80 :用百度网盘果然能发上去,用360网盘就不行。。。
2013年04月02日 05点04分
level 12
代码看了,不是 InputBox 这部分代码的问题,我单步调试,这行代码只执行了一次。但是外面的循环执行了多次。因为“左键按下”这个事件执行了多次。可以加个判断,判断出是否第一次按下。
2013年04月06日 03点04分 8
回复 zhangjb90s :我在InputBox()操作结束后,加了个FlushMouseMsgBuffer(),问题解决了。但是有几疑问,望老大解惑: 1.为什么点击“保存”会有多个“左键按下”事件? 2.只是在程序运行后第一次点击“保存”时才会出现弹四次对话框这种情况,之后却完全正常 3.为什么每次都弹出四次对话框?
2013年04月06日 04点04分
回复 zhangjb90s : 比如我的电脑上就是 5 次。因为在新的窗口创建之前,你的循环执行了好多次。在你的电脑上,创建 InputBox 窗口的时间内,你的循环执行了四次,因此鼠标的消息队列有了四个鼠标事件,并且左键都是按下的状态。
2013年04月06日 10点04分
level 9
zhangjb90s 楼主
@yangw80 还有疑惑的地方。在我的电脑上,InputBox 窗口创建了四次,也就是说执行了四次循环, 那这四次“左键都是按下的状态”是怎么产生的呢? 在创建InputBox 窗口的过程前后貌似没有鼠标左键没有按下的
2013年04月06日 10点04分 9
好,等我回去后仔细帮你看看。
2013年04月07日 06点04分
回复 yangw80 :麻烦老大了[Love]
2013年04月07日 13点04分
level 12
刚闲下来,让你久等了。
我不知道你的需求是什么样的,因为系统的确在这个时间内产生了很多鼠标消息,而有些消息是有可能左键同时按下的,比如当消息 WM_MOUSEMOVE 发生时,的确有可能 msg.mkLButton 为真。如果有这样多个消息产生,那么你的 InpuBox 就会弹出多次。你可以不要检测 mkLButton,而检测是什么消息。例如:
//if(msg.mkLButton) // 你的做法
if (msg.uMsg == WM_LBUTTONDOWN) // 可以这样试试
{
InputBox(...);
}
2013年04月15日 02点04分 10
嗯,果然可以[Love]
2013年04月15日 04点04分
level 1
2023年06月23日 14点06分 11
1