1:在调用oninitdialog时控件应该已经生成了,可是在onpaint 中GetDlgItem()去获取控件句柄,居然直接data abort了。代码很少
CPaintDC dc(this);
(GetDlgItem(IDC_STATIC_USER) )->SetFont(pFont);//EDIT控件,这句完就数据溢出了,注释掉正常运行还有些奇怪的问题
2:有时代码先执行OnEraseBkgnd再oninitdialog,想知道在什么情况下oninitdialog不会先执行
3:一个全局DLG指针,DOMODAL后,添加一CFONT成员变量(非指针),当此对话框enddialog后GDI资源没有被自动释放,对么
CPaintDC dc(this);
(GetDlgItem(IDC_STATIC_USER) )->SetFont(pFont);//EDIT控件,这句完就数据溢出了,注释掉正常运行还有些奇怪的问题
2:有时代码先执行OnEraseBkgnd再oninitdialog,想知道在什么情况下oninitdialog不会先执行
3:一个全局DLG指针,DOMODAL后,添加一CFONT成员变量(非指针),当此对话框enddialog后GDI资源没有被自动释放,对么
解决方案 »
- 单独写了一个CStatic的派生类,把它作为一个控件类,方便调用,要在里面加入背景,图标,动态创建了编辑框,但是放大窗口后,编辑框就看不到了
- 各位大老们!!!!CRichEdit中插入图片问题,
- 请教一个DLL中的问题
- "cannot open Debug/**.exe for writing"原因?
- HRESULT返回值为1怎么回事
- 很弱的问题:为什么在.h里不能给变量赋初值
- CToolTipCtrl 问题:如何在非客户区使用提示功能?
- 如何结束explorer进程
- 关于adsl拨号问题的请教 !
- 一个关于全屏的问题!!
- 获得bmp图片的CBitmap,怎么在这个CBitmap画字幕?
- gtk+如何实现界面中保存控件状态
(GetDlgItem(IDC_STATIC_USER) )->SetFont(pFont);
这类语句最好不要写在OnPaint中2、不是有时候,是每次创建窗口时消息的执行顺序都是那样,你可以在关心的几个函数中下断点看看执行顺序
3、没看明白你想问什么
这行不要放到paint里
(GetDlgItem(IDC_STATIC_USER) )->SetFont(pFont);
要使用的使用的话先判断一下该控件的HWND是否存在
if(GetDlgItem(IDC_STATIC_USER)->GetSafeHwnd())
{
...
}
你上的(GetDlgItem(IDC_STATIC_USER) )->SetFont(pFont);
你完全可以放到OnInitDialog函数中去做
我调试了下是oninitdialog先于OnEraseBkgnd执行的第3个问题是,假如有个对话框类ctestdlg,在oninitdialog中用一个cfont成员变量m_font去createfont,然后在析构函数中去deleteobject,现在用一个全局ctestdlg指针去domodal,请问下如果我不delete这个全局指针,字体GDI资源能自动释放么?
想在一个EDIT中调节字体大小,每调1次能立即显示出调节字体后的效果。所以在onpaint里设置了
如果你认为你的程序存在先调用OnEraseBkgnd的情况你可以在调试看看真实的过程3、当然不会,不仅GDI资源没有释放,就连ctestdlg本身都泄露了