Graphics不能正常构造的奇怪问题

aimeast 2009-05-21 11:03:58
下面的代码GetLastError都是返回0,
到了pGraphics=new Graphics(hWnd)这里,pGraphics就变成了NULL。
我用的是vs2008,非托管程序。
	DWORD e=GetLastError();
HWND hWnd=GetDesktopWindow();e=GetLastError();
hDesktop=GetDC(hWnd);e=GetLastError();
//hDesktop=GetDC(0);
pGraphics=new Graphics(hWnd);e=GetLastError();
Status s=pGraphics->GetLastStatus();
Color c(200,200,200);
Pen p(c);
pGraphics->DrawRectangle(&p,10,10,100,100);
pGraphics->ReleaseHDC(hDesktop);
delete pGraphics;
ReleaseDC(NULL,hDesktop);
...全文
84 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wencan2010 2011-04-27
  • 打赏
  • 举报
回复
我也遇到这种情况
求解
光宇广贞 2009-05-22
  • 打赏
  • 举报
回复
Graphics::Graphics(Image*) Creates a Graphics object that is associated with an Image object.
Graphics::Graphics(HDC) Creates a Graphics object that is associated with a specified device context.
Graphics::Graphics(HDC,HANDLE) Creates a Graphics object that is associated with a specified device context and a specified device.
Graphics::Graphics(HWND,BOOL) Creates a Graphics object that is associated with a specified window.

此四种重载。你挑一个吧……不存在的重载法你调用的话会出问题的。比如你现在所做的那样……
biweilun 2009-05-22
  • 打赏
  • 举报
回复
GdiplusStartup,LZ没有初始化吧
cnzdgs 2009-05-22
  • 打赏
  • 举报
回复
    DWORD e=GetLastError();
//HWND hWnd=GetDesktopWindow();e=GetLastError();
//hDesktop=GetDC(hWnd);e=GetLastError();
hDesktop=GetDC(0);
pGraphics=new Graphics(hWnd);e=GetLastError();
Status s=pGraphics->GetLastStatus();
Color c(200,200,200);
Pen p(c);
pGraphics->DrawRectangle(&p,10,10,100,100);
pGraphics->ReleaseHDC(hDesktop);
delete pGraphics;
ReleaseDC(NULL,hDesktop);

另外初始化时要执行GdiplusStartup。
TianChong 2009-05-22
  • 打赏
  • 举报
回复
1.楼主初始化了没有啊?
CWinApp::InitInstance方法之前,初始化GDI+库,添加两条语句:
GdiplusStartupInput m_gdiplusStartupInput;
GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL);
// 或者在构造函数中添加。

2.使用以下方法而非NEW方法看看?
Graphics graphics( pDC->m_hDC ); //或你的hDesktop 又或直接使用窗口句柄作为参数也是可行的,
如:Graphics graphics(hWnd);
aimeast 2009-05-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 greatws 的回复:]
如果参数是HWND要2个参数吧?1个参数是HDC
Graphics(HWND hwnd,BOOL icm);

[/Quote]
忘了说了,用pGraphics=new Graphics(hDesktop);也不行
greatws 2009-05-21
  • 打赏
  • 举报
回复
如果参数是HWND要2个参数吧?1个参数是HDC
Graphics(HWND hwnd,BOOL icm);

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧