哪位高手能帮小弟我看看,这样加载CImage,错在哪里了
谁能帮我看看,这样加载CImage,错在哪里了?
------解决方案--------------------
从CStatic派生一个新类,
WM_ERASEBKGND返回TURE
WM_PAINT中添加你的代码 并用双缓冲
------解决方案--------------------
OnInit里面不可以画图(窗口没有构造好,也就没有地方画)
放到OnPaint()里面,闪烁的话用双缓冲(这个比较麻烦,CImage没有教程)
百度——CMemDc
这个类很好用直接构造
CMemDC memdc(this->GetDC(),rect);//rect为当前窗口大小this-〉GetDC()为当前窗口DC
然后你CImage的图片就画在memdc里面
CImage img;
img.Load(某图片);
img.Draw(memdc.GetSafeHdc(),0,0,img.GetWidth(),img.GetHeight());
或者用bitblt也可以
- C/C++ code
BOOL MyDlg::OnInitDialog() { CDialog::OnInitDialog(); ……省略…… CStatic* ccs2=new CStatic(); ccs2->Create(_T("ab"), WS_CHILD|BS_DEFPUSHBUTTON|WS_VISIBLE, CRect(0, 310, 300, 450), this, 121); HWND hwnd = ccs2->GetSafeHwnd(); HDC hdc = ::GetDC(hwnd); CImage* ci2=new CImage(); HRESULT hr = ci2->Load(_T("res/abc.jpg")); if (SUCCEEDED(hr)) { ci2->Draw(hdc,0,0,100,100); } }
------解决方案--------------------
从CStatic派生一个新类,
WM_ERASEBKGND返回TURE
WM_PAINT中添加你的代码 并用双缓冲
------解决方案--------------------
OnInit里面不可以画图(窗口没有构造好,也就没有地方画)
放到OnPaint()里面,闪烁的话用双缓冲(这个比较麻烦,CImage没有教程)
百度——CMemDc
这个类很好用直接构造
CMemDC memdc(this->GetDC(),rect);//rect为当前窗口大小this-〉GetDC()为当前窗口DC
然后你CImage的图片就画在memdc里面
CImage img;
img.Load(某图片);
img.Draw(memdc.GetSafeHdc(),0,0,img.GetWidth(),img.GetHeight());
或者用bitblt也可以