// // タイマーを使ったスクロール // // 1998/ 4/11 宍戸 輝光 // #include #include #include LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); BITMAPINFO BmInfo; BITMAPINFOHEADER BmInfoHed; BYTE* lpBit; CONST xSize=96,ySize=96; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){ MSG msg; WNDCLASSEX wndclass ; HWND hwnd; int i,j,r,g,b,x,n; srand( (unsigned)time( NULL )); wndclass.cbSize = sizeof(wndclass); wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor (NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = "Test Window"; wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION); RegisterClassEx (&wndclass); hwnd = CreateWindow ("Test Window", "スクロールテスト", WS_OVERLAPPEDWINDOW, 32,32, 256,256, NULL, NULL, hInstance, NULL); BmInfoHed.biSize=sizeof(BITMAPINFOHEADER); // 構造体の大きさ BmInfoHed.biWidth=xSize; // 横幅 BmInfoHed.biHeight=ySize; // 高さ BmInfoHed.biPlanes=1; // プレーンの数 BmInfoHed.biBitCount=24; // プレーンの色数 BmInfoHed.biCompression=BI_RGB; BmInfoHed.biSizeImage=0; BmInfoHed.biXPelsPerMeter=0; BmInfoHed.biYPelsPerMeter=0; BmInfoHed.biClrUsed=0; BmInfoHed.biClrImportant=0; BmInfo.bmiHeader=BmInfoHed; lpBit=(BYTE*)GlobalAlloc(GPTR,xSize*ySize*3); // ピクセル用のバッファ ZeroMemory(lpBit,xSize*ySize*3); if (lpBit==NULL) return FALSE; for (i=0;i