2009-11-18 16 views
11

Visual C++にはWindow(win32 API)アプリケーションがあります。私はMFCを使用していません。私は自分のアプリケーションにpicutreボックスを追加し、この画像ボックスの画像を定期的に変更する必要があります。上記の作業の達成に誰かが手伝ってくれますか?前もって感謝します。Visual C++を使用してwin32 APIに画像ボックスを追加するには

答えて

8

これは、ここに完全なコードを投稿するには、非常に複雑な作業ですが、私はそれを行う方法についてのいくつかのガイドラインを与えることを試みます。

第一の方法は、画像をロードし、それを

    をペイントすることです
  1. イメージを読み込みます(残念ながら、プレーンなWin32 APIはかなりの数のイメージフォーマットBMP、ICO ...をサポートしています)。

    HBITMAP hImage = (HBITMAP)LoadImage(NULL, (LPCSTR)file, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_LOADTRANSPARENT); 
    
  2. ストアあなたがイメージをペイントする必要がありますWM_PAINTメッセージにWINPROCでは、あなたのWindowProcedure

  3. からアクセスすることができ、アプリケーション内のどこかに上記ハンドル。

    HDC hdcMem = CreateCompatibleDC(hDC); // hDC is a DC structure supplied by Win32API 
    SelectObject(hdcMem, hImage); 
    StretchBlt(
        hDC,   // destination DC 
        left,  // x upper left 
        top,   // y upper left 
        width,  // destination width 
        height,  // destination height 
        hdcMem,  // you just created this above 
        0, 
        0,   // x and y upper left 
        w,   // source bitmap width 
        h,   // source bitmap height 
        SRCCOPY); // raster operation 
    

動作するはずです:コードのようなものです。

HWNDがあなたのスタティックコントロールのハンドルです
hImage = LoadImage(NULL, file, IMAGE_BITMAP, w, h, LR_LOADFROMFILE); 
SendMessage(hwnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hImage); 

は今、それを行うための第二の方法は、型がSS_BITMAPことで、静的なコントロールを作成してその画像を設定することです。

+0

説明的なコメントをお寄せいただきありがとうございます。 –

関連する問題