Sqr Опубликовано 20 сентября, 2007 Жалоба Поделиться Опубликовано 20 сентября, 2007 Подскажите кто встречался с подобной проблемой создаю поверхность(LPDIRECTDRAWSURFACE7) подключаю палитру(LPDIRECTDRAWPALETTE) блокирую поверхность записываю в видео буфер данные а изображение не выводится что может быть? Все пересмотрел и проверил Ссылка на комментарий Поделиться на другие сайты Поделиться
Sqr Опубликовано 22 сентября, 2007 Автор Жалоба Поделиться Опубликовано 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; Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти