| 1 | ファイル構造とアルゴリズムを学習し、自分で展開ルーチンを組む。 |
| 2 | どっかからライブラリを持ってきて、使用。 |
| 3 | APIで一発変換 |
| 手順 | やること | 関数、変数(例) |
| @ | (JPG)ファイルを開く | hFile = CreateFile("gw2.jpg", GENERIC_READ, 0, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); |
| A | ファイルサイズ取得 | nFileSize = GetFileSize(hFile, NULL); |
| B | バッファの確保、データ読み込み | hGlobal = GlobalAlloc(GPTR, nFileSize); ReadFile(hFile, hGlobal, nFileSize, &nReadByte, NULL); |
| C | データストリームの作成 | CreateStreamOnHGlobal(hGlobal, TRUE, &iStream); |
| D | ストリームから画像データの読み込み | OleLoadPicture(iStream, nFileSize, TRUE, &IID_IPicture, (LPVOID*)&iPicture); |
| E | 画像サイズを保存 | iPicture->lpVtbl->get_Width(iPicture,&lWidth); iPicture->lpVtbl->get_Height(iPicture,&lHeight); |
| F | DCに描画 | hDC = GetDC(hWnd); iPicture->lpVtbl->Render(iPicture,hDC, 0, 0, lWidth/32, lHeight/32, 0, lHeight, lWidth, -lHeight, NULL); ReleaseDC(hWnd,hDC); |
| G | 後処理 |
CloseHandle(hFile) iPicture->lpVtbl->Release(iPicture); GlobalFree(hGlobal); |