昨天遇到这样的一个问题:我需要在窗口创建(窗口2)的时候同步更新窗口上绘制出的list控件的内容,即添加多个list控件元素的值。而需要创建的窗口则是在另一个窗口(窗口1)的按钮控件发生了点击事件时才会触发。于是,我尝试把更新list控件的代码放到过这些地方:
直接在showwindow窗口之后;这是在窗口1的消息响应函数里面
直接在create窗口之后;这也是在窗口1的消息响应函数里面
直接在OnInitDioalog函数里面;这是在窗口2的初始化函数里面
直接在OnCreate函数里面;这是在窗口2的初始化函数里面
因为是新手,只能一个个试;但是在四个地方都没法让list控件的内容显示出来,有两个地方还出现了弹出了错误提示,具体原因可以到网上自己找,跟窗口的生成顺序与控件的生成顺序有关。
那么我是如何解决的呢?
我在要生成的窗口中(即窗口2)建立了一个消息响应函数并定义了与消息宏定义进行了绑定,然后主窗口1中定义了消息以后然后在窗口生成后发送消息给窗口2,然后问题就解决了。
这里我曾经出现过的错误是将窗口2的显示用DoModal函数来生成,结果发现在DoModal函数生成了以后就直接进入了窗口2的消息循环里面去了,在关闭了窗口2以后才会回到窗口1中,后来我就用了create函数,结果最终解决了问题!现在把我犯的错误写出来,希望对同样有需求的朋友们提供帮助。