CreateDIBitmap失败!!帮帮我啊~~
我要画一个dib 到win98的window上,老是失败
我在xp下用vc7.1写的程序,win_ver定义的都是98的
然后跑到98下去运行,结果CreateDIBitmap失败,返回0
m_hDc是用GetDC(m_hWnd)得到的,其中的m_hWnd是我自己用api弄的
WNDCLASS wc;
ZeroMemory(&wc, sizeof wc);
wc.lpfnWndProc = DefWindowProc;
wc.hInstance = GetModuleHandle(NULL);
wc.lpszClassName = "_Hide!!!";
wc.lpszMenuName = NULL;
wc.hbrBackground = (HBRUSH)::GetStockObject(GRAY_BRUSH);
wc.hCursor = ::LoadCursor(NULL, IDC_ARROW);
RegisterClass(&wc);
m_hWnd = ::CreateWindow("_Hide!!!","Output Window", WS_OVERLAPPEDWINDOW | WS_CHILDWINDOW | WS_POPUPWINDOW | CS_OWNDC, CW_USEDEFAULT, CW_USEDEFAULT, 500, 400, hWndParent, 0, GetModuleHandle(NULL) , 0);
其中的hWndParent是一个mfc的对话框的m_hWnd
但是创建这个窗体的线程是我用CreateThread开的
后面的代码:
m_hDc = GetDC(m_hWnd);
HDC memDC = CreateCompatibleDC ( m_hDc );
HBITMAP memBM = CreateDIBitmap(m_hDc,&m_bmi.bmiHeader,CBM_INIT,pData,&m_bmi,DIB_RGB_COLORS);
好了,这个CreateDIBitmap返回0 !!!555~~~
m_bmi内容如下
tagBITMAPINFO
tagBITMAPINFOHEADER
biSize 44 unsigned long
biWidth 320 long
biHeight 240 long
biPlanes 1 unsigned short
biBitCount 32 unsigned short
biCompression 0 unsigned long
biSizeImage 230400 unsigned long
biXPelsPerMeter 0 long
biYPelsPerMeter 0 long
biClrUsed 0 unsigned long
biClrImportant 0 unsigned long
其中dib格式开始用RGB24也不行
GetDeviceCaps(m_hDc,RASTERCAPS);居然得到0xffffeef9
当时的屏幕是32位的(显示的至少是这么多)
如果我在xp用,什么都是好的
GetDeviceCaps(m_hDc,RASTERCAPS)得到7e99
我又写了一个小程序,代码几乎是一样的,没用mfc,结果都是对的
但是这个程序必须用mfc啊~~
那位大哥帮帮忙~~多谢多谢
问题点数:100、回复次数:5Top
1 楼Oversense(步步文)回复于 2003-05-03 06:13:39 得分 0
程序运行在windows me下的,我在xp下用vc2003最终测试版写的,然后远程调试的~Top
2 楼Oversense(步步文)回复于 2003-05-03 13:11:07 得分 0
问题解决了,谢谢Top
3 楼zhoory(●Ant_Caesar●)回复于 2003-05-03 23:11:27 得分 10
呵呵。OKTop
4 楼herrycsdn(卓一凡)回复于 2003-05-03 23:22:12 得分 10
恭喜楼主,贺喜楼主了Top
5 楼stidio_zhougang(回头是岸)回复于 2003-09-08 15:54:52 得分 80
那肯定是你那里的值赋错了!Top




