Sqr Posted September 20, 2007 Report Share Posted September 20, 2007 Подскажите кто встречался с подобной проблемой создаю поверхность(LPDIRECTDRAWSURFACE7) подключаю палитру(LPDIRECTDRAWPALETTE) блокирую поверхность записываю в видео буфер данные а изображение не выводится что может быть? Все пересмотрел и проверил Link to comment Share on other sites More sharing options...
Sqr Posted September 22, 2007 Author Report Share Posted September 22, 2007 вот кодучастка программы где должны выводится пиксели со случайными координаты int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX win; MSG msg; win.cbSize=sizeof(WNDCLASSEX); win.style=CS_VREDRAW|CS_HREDRAW|CS_OWNDC|CS_DBLCLKS; win.lpfnWndProc=proc; win.cbClsExtra=0; win.cbWndExtra=0; win.hInstance=hInstance; win.hIcon=LoadIcon(hInstance,(LPCTSTR)ICON1); win.hCursor=NULL; win.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH); win.lpszMenuName=NULL; win.lpszClassName="WINCLASS1"; win.hIconSm=NULL; HWND hwnd,h1; RegisterClassEx(&win); if(!(hwnd=CreateWindowEx(NULL,"WINCLASS1","Мое Окно", //WS_OVERLAPPEDWINDOW| WS_POPUP|WS_VISIBLE ,0,0,400,400,NULL,NULL, hInstance,NULL))) return 0; ShowWindow(hwnd,nCmdShow); h1=CreateWindowEx(NULL,"button","Мое Окно", WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE, 15,10,150,24,hwnd,(HMENU)100,hInstance,NULL); DirectDrawCreateEx(NULL,(void**)&lpdd7,IID_IDirectDraw7,NULL); // DirectDrawCreate(NULL,&lpdd,NULL); lpdd7->SetCooperativeLevel(hwnd,DDSCL_FULLSCREEN|DDSCL_ALLOWMODEX |DDSCL_EXCLUSIVE|DDSCL_ALLOWREBOOT ); lpdd7->SetDisplayMode(SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_BPP,0,0); memset(&ddsd,0,sizeof(ddsd)); ddsd.dwSize=sizeof(ddsd); ddsd.dwFlags=DDSD_CAPS; ddsd.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE; lpdd7->CreateSurface(&ddsd,&lpsprimary,NULL); for(int color=1;color<255;color++) { palette.peRed=rand()%255; palette.peGreen=rand()%255; palette.peBlue=rand()%255; palette.peFlags=PC_NOCOLLAPSE; } palette[0].peRed=0; palette[0].peGreen=0; palette[0].peBlue=0; palette[0].peFlags=PC_NOCOLLAPSE; palette[255].peRed=255; palette[255].peGreen=255; palette[255].peBlue=255; palette[255].peFlags=PC_NOCOLLAPSE; if(FAILED(lpdd7->CreatePalette(DDPCAPS_8BIT|DDPCAPS_ALLOW256 |DDPCAPS_INITIALIZE,palette,&lpddpal,NULL))){ wsprintf(szc,"%d%",45 ); MessageBox(NULL,"OK","no bonus",MB_OK); } if(FAILED(lpsprimary->SetPalette(lpddpal))){wsprintf(szc,"%d%",45 );} memset(&ddsd,0,sizeof(ddsd)); ddsd.dwSize=sizeof(ddsd); if(FAILED(lpsprimary->Lock(NULL,&ddsd,DDLOCK_SURFACEMEMORYPTR|DDLOCK_WAIT ,NULL))) {wsprintf(szc,"%d%",45 ); MessageBox(NULL,"OK","no bonus",MB_OK);} int mempitch =ddsd.lPitch; UCHAR* video_buffer =(UCHAR *)ddsd.lpSurface; for(int index=0;index<1000;index++){ UCHAR color=rand()%255; int x=rand()%SCREEN_WIDTH; int y=rand()%SCREEN_HEIGHT; video_buffer[x+y*mempitch]=color; } //wsprintf(szc,"%d%",mempitch); // video_buffer+=mempitch; //video_buffer[8]=happy_bitmap; Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now