代码
//CPoperateDlg.h
#pragma once#include "resource.h"
#pragma comment(lib, "Gdiplus.lib")
#include "Gdiplus.h"
using namespace Gdiplus;// CPoperateDlg 对话框class CPoperateDlg : public CDialogEx
{
DECLARE_DYNAMIC(CPoperateDlg)public:
CPoperateDlg(CWnd* pParent = NULL);   // 标准构造函数
virtual ~CPoperateDlg();// 对话框数据
enum { IDD = IDD_PICTURE_OPERATE };public:
GdiplusStartupInput m_gdiPlusInPut;
ULONG_PTR m_gdiPlusToken;
Image* img;
CString path;protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnPaint();
afx_msg void OnBnClickedButton1();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();
};//CPoperateDlg.cpp
#include "stdafx.h"
#include "PoperateDlg.h"
#include "afxdialogex.h"IMPLEMENT_DYNAMIC(CPoperateDlg, CDialogEx)CPoperateDlg::CPoperateDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CPoperateDlg::IDD, pParent)
{

}CPoperateDlg::~CPoperateDlg()
{

}void CPoperateDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CPoperateDlg, CDialogEx)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_BUTTON1, &CPoperateDlg::OnBnClickedButton1)
ON_WM_CREATE()
ON_WM_DESTROY()
END_MESSAGE_MAP()void CPoperateDlg::OnPaint()
{
CPaintDC dc(this);
Graphics mGraphics(dc.GetSafeHdc());
mGraphics.DrawImage(img, 0, 0, img->GetWidth(), img->GetHeight());
}void CPoperateDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CFileDialog fileDlg(TRUE, NULL, NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT |OFN_ALLOWMULTISELECT|OFN_ENABLESIZING, _T("Layer Files (*.BMP;*.JPG)|*.BMP;*.JPG;)||"), NULL);
fileDlg.DoModal();
path = fileDlg.GetPathName();
img = Image::FromFile(fileDlg.GetPathName().AllocSysString(), TRUE);
Invalidate();
}int CPoperateDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialogEx::OnCreate(lpCreateStruct) == -1)
return -1; // TODO:  在此添加您专用的创建代码
GdiplusStartup(&m_gdiPlusToken,&m_gdiPlusInPut,NULL);
return 0;
}
void CPoperateDlg::OnDestroy()
{
CDialogEx::OnDestroy();
GdiplusShutdown(m_gdiPlusToken);
// TODO: 在此处添加消息处理程序代码
}当绘制图片完成之后关闭窗口弹出 Test.exe 中的 0x77ef4621 处有未经处理的异常: 0xC015000F: 正被停用的激活上下文不是最近激活的。
如何我把OnPaint函数改为:
CPaintDC dc(this);
Graphics mGraphics(dc.GetSafeHdc());
Image img(paht,TRUE);
mGraphics.DrawImage(&img, 0, 0, img.GetWidth(), img.GetHeight());
则不会出现异常.请大侠帮忙看看啊,已经几天了,解决不到啊.