VC6里面这样加载位图有错么???

MrByte 2014-05-01 06:33:25
#include <AFXWIN.H>
#include "resource.h"
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ){
WNDCLASS wnd;
wnd.cbClsExtra=0;
wnd.cbWndExtra=0;
wnd.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wnd.hCursor=LoadCursor(hInstance,(LPCTSTR)IDC_CURSOR2);
wnd.hIcon=LoadIcon(hInstance,IDI_APPLICATION);
wnd.hInstance=hInstance;
wnd.lpfnWndProc=WndProc;
wnd.lpszClassName="window";
wnd.lpszMenuName=NULL;
wnd.style=CS_HREDRAW|CS_VREDRAW;

RegisterClass(&wnd);

HWND hwnd;
hwnd=CreateWindow("window","MyWindow",WS_OVERLAPPEDWINDOW,100,100,400,300,NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,nShowCmd);

MSG msg;
while(GetMessage(&msg,NULL,0,0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){
HDC hdc;
PAINTSTRUCT ps;
HDC MemDC;
HBITMAP bmp=LoadBitmap(NULL,(LPCSTR)IDB_BITMAP1);
RECT r={10,10,500,500};

switch(uMsg){
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);//设备描述表
MemDC=CreateCompatibleDC(hdc);//内存DC
CreateCompatibleBitmap(MemDC,500,500);
SelectObject(MemDC,bmp);//在内存DC内加载位图
BitBlt(hdc,10,10,400,400,MemDC,0,0,SRCCOPY);
DeleteDC(MemDC);
EndPaint(hwnd,&ps);
break;
}
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}

为什么总是显示不了?
...全文
224 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
MrByte 2014-05-15
  • 打赏
  • 举报
回复
解决了,LoadBitmap(HINSTANCE,LPCSTR),HINSTANCE要用GetModuleHandle(NULL)获得,不能直接写NULL
john_han 2014-05-13
  • 打赏
  • 举报
回复
bitmap有load进来吗?

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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