对话框重绘有时会出现问题? 我做了一个对话框程序,重写了OnCtlColor消息,把背景和Static颜色变了,没有写Onpaint消息,但有时过一段时间就会出现白屏,对话框和控件重绘就会出现问题,不知道哪位大虾能帮小弟这个忙,我把能贡献的分数都拿出来了!求救!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CDialog::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 AfxGetMainWnd()->SendMessage(WM_SETICON,TRUE,(LPARAM)&m_hIcon); SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 m_hAccel = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR_SAVE)); SetCaption(); // zhaoyj m_pMenu = new CMenu(); m_pMenu->LoadMenu(IDR_MENU); SetMenu(m_pMenu); InitAllStatic(); m_ScrList.SetExtendedStyle(m_ScrList.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT ); m_ScrList.Init(&m_ObjVector); m_View.Init(&m_param); SetDlgEnable(FALSE); // set menu enabl false SetSubMenuEnable(); INIT_EASYSIZE; return TRUE; // 除非将焦点设置到控件,否则返回 TRUE} HBRUSH CCatScriptDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性 if (nCtlColor == CTLCOLOR_STATIC || nCtlColor == CTLCOLOR_DLG)//这里不同 { pDC->SetBkColor(RGB(192,192,192)); HBRUSH B = CreateSolidBrush(RGB(192,192,192)); //创建画刷 return (HBRUSH) B; //返回画刷句柄 } if (nCtlColor == CTLCOLOR_BTN)//这里不同 { pDC->SetBkColor(RGB(100,100,100)); HBRUSH B = CreateSolidBrush(RGB(100,100,100)); return (HBRUSH) B; } return hbr;} InitAllStatic();m_ScrList.SetExtendedStyle(m_ScrList.GetExtendedStyle() | LVS_EX_GRIDLINES|_EX_FULLROWSELECT );m_ScrList.Init(&m_ObjVector);m_View.Init(&m_param);SetDlgEnable(FALSE);SetSubMenuEnable();画面上控件特别多,上面都是一些设置控件属性,文字的函数,不知道是哪方面的问题? 可能是资源泄漏的问题HBRUSH B1(B2) = CreateSolidBrush(RGB(...));删除把HBRUSH B1(B2) 作为成员变量B1(B2) = CreateSolidBrush(RGB(...)); 放到OnInitDialog()里最后窗体销毁时DeleteObject(B); HBRUSH B = CreateSolidBrush(RGB(192,192,192)); //创建画刷 return (HBRUSH) B; //返回画刷句柄同意b作为成员变量 可能是背景吧BOOL CMy123333333Dlg::OnEraseBkgnd(CDC* pDC) { // TODO: Add your message handler code here and/or call default return TRUE;//CDialog::OnEraseBkgnd(pDC);} FreeLibrary不能释放dll中内存 关于socket发送数据问题 高分请问:使用什么样的加密算法可以保证加密后的长度和加密前一样? 将HTML文件显示在EDIT控件中为何就出现怪吗?代码是。。 UDP服务器做广播的时候,必须指定客户端的端口号吗? 谁来讲讲__based关键字 VC,入门级程序,可就是早不到错,请帮忙: 如何使用SAFEARRAY? 请问出错原因。 快来帮帮我这只菜聊!为什么CMyPenApp theApp;回出错!? 图象表格框架提取 最大化后界面上的东西却没有按比例相应显示
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
} // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
AfxGetMainWnd()->SendMessage(WM_SETICON,TRUE,(LPARAM)&m_hIcon); SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标 m_hAccel = LoadAccelerators(AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDR_ACCELERATOR_SAVE));
SetCaption();
// zhaoyj
m_pMenu = new CMenu();
m_pMenu->LoadMenu(IDR_MENU);
SetMenu(m_pMenu);
InitAllStatic();
m_ScrList.SetExtendedStyle(m_ScrList.GetExtendedStyle()
| LVS_EX_GRIDLINES
| LVS_EX_FULLROWSELECT ); m_ScrList.Init(&m_ObjVector);
m_View.Init(&m_param);
SetDlgEnable(FALSE);
// set menu enabl false
SetSubMenuEnable();
INIT_EASYSIZE;
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性
if (nCtlColor == CTLCOLOR_STATIC || nCtlColor == CTLCOLOR_DLG)//这里不同
{
pDC->SetBkColor(RGB(192,192,192)); HBRUSH B = CreateSolidBrush(RGB(192,192,192));
//创建画刷
return (HBRUSH) B; //返回画刷句柄
}
if (nCtlColor == CTLCOLOR_BTN)//这里不同
{
pDC->SetBkColor(RGB(100,100,100));
HBRUSH B = CreateSolidBrush(RGB(100,100,100));
return (HBRUSH) B;
}
return hbr;
}
m_ScrList.SetExtendedStyle(m_ScrList.GetExtendedStyle()
| LVS_EX_GRIDLINES|_EX_FULLROWSELECT );
m_ScrList.Init(&m_ObjVector);
m_View.Init(&m_param);
SetDlgEnable(FALSE);
SetSubMenuEnable();
画面上控件特别多,上面都是一些设置控件属性,文字的函数,不知道是哪方面的问题?
HBRUSH B1(B2) = CreateSolidBrush(RGB(...));删除把HBRUSH B1(B2) 作为成员变量
B1(B2) = CreateSolidBrush(RGB(...)); 放到OnInitDialog()里
最后窗体销毁时DeleteObject(B);
//创建画刷
return (HBRUSH) B; //返回画刷句柄
同意b作为成员变量
BOOL CMy123333333Dlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
return TRUE;//CDialog::OnEraseBkgnd(pDC);
}