读书人

在static绘图的疑问解决思路

发布时间: 2012-05-07 12:40:40 作者: rapoo

在static绘图的疑问

C/C++ code
//头文件中添加public成员变量    CWnd* pWnd ;    CDC* pDC ;//构造函数中没有对二者初始化,是这个问题么void CMultimeterDlg::OnPaint(){    if (IsIconic())    {        CPaintDC dc(this); // device context for painting        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);        // Center icon in client rectangle        int cxIcon = GetSystemMetrics(SM_CXICON);        int cyIcon = GetSystemMetrics(SM_CYICON);        CRect rect;        GetClientRect(&rect);        int x = (rect.Width() - cxIcon + 1) / 2;        int y = (rect.Height() - cyIcon + 1) / 2;        // Draw the icon        dc.DrawIcon(x, y, m_hIcon);    }    else    {        pWnd = GetDlgItem (IDC_STATIC) ;        pDC = pWnd ->GetDC () ;        pWnd ->Invalidate () ;        pWnd ->UpdateWindow () ;        pWnd ->ReleaseDC (pDC) ;        CDialogEx::OnPaint();    }}



运行后什么按键都点不了,而且过一段时间出现
Unhandled exception at 0x77434597 in Multimeter.exe: 0xC0150014: 激活上下文激活堆栈损坏,该堆栈用于执行运行的线程。

[解决办法]
你应该重写CStatic类,在派生类添加WM_PAINT消息,OnPaint函数中去绘制图形。
[解决办法]
更改STATIC的ID,不要用IDC_STATIC,改成IDC_MYSTATIC

读书人网 >VC/MFC

热点推荐