1、这是一个设置ip地址的程序,第一次运行该窗口时,能把ip设置成功,然后点击Form11->Close();退出。后来又运行该窗口,设置相同的ip,竟然会失败。而且地址控件输入框中的值,点一下框就会显示出框中的值。而且获取的地址框中的地址值为0.0.0.0
2、我觉得可能是第一次运行该窗口程序后,由于没有退出程序,便没有关闭对应的地址控件窗口。然后第二次运行该窗口程序后,执行到FormShow方法时,又一次createwindow新建了同一类窗口。直接导致系统混淆了这些窗口。
3、然后我在Form11->Close();的同时,添加了
if(!CloseWindow(hClientIpEdit)){
WriteLog("Close hClientIpEdit failed,error:%lu",GetLastError());
}
4、在退出那个窗口又重新打开时,结果竟在该窗口的下方多出了两个堆着的地址框,内容为0.0.0.0,看来系统默认读的是它的内容。而且,我关闭又重新打开很多次,竟然有规律地增加了很多地址窗口。
5、一查资料,才发现CloseWindow只最小化窗口,不销毁窗口,才会出现我刚刚的那种情景。
6、然后我把CloseWindow改成DestroyWindow,就一切正常了。看来真得注意这一点了。