关于DialogBox的OwnerDraw风格子控件资源加载及窗口居中
c++吧
全部回复
仅看楼主
level 11
gameloftyou 楼主
我发现每次调用DialogBox显示
模态对话框都会有
WM_INITDIALOG消息产生,这样一来
WM_INITDIALOG处理时所作的资源加载岂不是每次都会执行,这是不是意味着结束对话框时必须要删除资源
(否则内存泄露?)
另外对话框窗口
相对于父窗口居中,有没有简便函数可用,我现在是用GetParent,GetWindowRect,MoveWindow组合起来使其居中的。[揉脸]

2012年10月26日 03点10分 1
level 11
gameloftyou 楼主
[吐舌]我还有个问题,比如要封装自己的控件,那么自己的控件如何和父窗口进行消息传递,比如是不是鼠标移动到自己的控件上时父窗口会向自己的控件发送消息?如果是这个消息是什么?
2012年10月26日 03点10分 2
感觉不应该是自己做命中测试吧。
2012年10月26日 03点10分
WM_MOUSEHOVER?
2012年10月26日 04点10分
系统只发消息到子窗口吧
2012年10月26日 04点10分
@itianda 简单来说,我就是想问,如果自己封了个控件,并且拥有自己的消息和类别(废话),那么自己的控件如何和它的父窗口进行消息通信
2012年10月26日 04点10分
level 11
gameloftyou 楼主
[揉脸]好吧,
第一个问题是不是通常把资源设成静态的然后,
if(资源==NULL)加载;这样?
然后,程序中的资源如果程序运行时一直存在的话,程序结束时可以不用手动删除,然后交给系统来删除?大丈夫?
2012年10月26日 04点10分 3
方法很多。可以设置一个资源计数。每用个+1, 然后再析构里面判断 ==1? ,等于就释放,不等就-1;
2012年10月26日 07点10分
level 12
居中的问题:DS_CENTER
至于资源的销毁为什么不响应 WM_DESTROY?
2012年10月26日 09点10分 4
DS_CENTER是屏幕居中,而不是相对于父窗口居中, 资源的话,如果程序运行时一直存在,而又不需重复创建,感觉程序结束后留给系统来销毁,也没多大问题吧。[揉脸]
2012年10月26日 09点10分
回复 gameloftyou :去掉 DS_ABSALIGN 即可。
2012年10月26日 12点10分
回复 gameloftyou :另外,资源中 ICON 和 RCDATA 加载是不需要释放的,MENu 和 ACCELERATOR 是需要的。
2012年10月26日 12点10分
1