总是不注意细节!终于把位图显示出来了,昨天困扰了我1个多小时的问题,今天用了20分钟终于查出来了,还是细节的问题.
测试我写的类,在窗体消息处理函数WndProc里面定义:
bool flag=false;
CMyBitMapFile file1;
然后响应加速键弹出通用对话框选择要打开的文件,然后把flag=true,再调用 InvalidRect来呼叫WM_PAINT,然后响应PAINT里面if(flag){//显示位图},一开始什么反应都没有,我广设MessagBox发现没有进入if(flag)块,这个就让我想了很长时间,最后才想到,每发一次消息就调用一次WndProc,InvalidRect呼叫了WM_PAINT后,flag又被设置成false了,改正之后,又发现我类里的数据成员的指针变成NULL了,一开始我还觉得很奇怪,还好有了flag的警示,很快就想到了我的file1也是局部变量.
唉,当时看书的时候就很奇怪WndProc里很多变量都声明成static,不得其解,现在教训让我明白了这个道理.