2012-04-21 65 views
3

大家好,我想知道在VC++中是否有像VB中的圖像控件。實際上,使用圖片框時,我面臨的問題是無法在設計時爲對話框重新調整圖片的大小。但在圖像控制這是可能的。我沒有圖像控件有沒有辦法在設計時從對話框編輯器檢查對話框的高度和寬度?在VC++ 2008中存在圖像控件

+0

哪個GUI框架,您使用的?有這麼多。 – 2012-04-21 19:43:01

+0

@David Hefferman GUI框架意味着什麼?如何檢查我正在使用哪一個?我正在使用VC++ 2008專業版對話框編輯器中的標準工具箱。 – Sreyan 2012-04-22 08:13:26

+1

好的,你使用的是原始的win32。不幸的是你!您可以在STATIC控件中顯示圖像。 – 2012-04-22 08:21:54

回答

0

如果您正在編寫一個非託管的C或C++項目,這比使用設計託管Windows窗體應用程序時可用的PictureBox控件更困難,但仍然可行。

如果您使用的是對話框資源的窗口(注意:我使用Visual Studio 2015年爲基準,而不是2008年寫了這部分,但總的過程應該是相同的):

  1. 插入圖像作爲您項目中的資源。假設我們爲簡單起見命名了位圖IDB_BITMAP1的資源。
  2. 在對話框中創建一個新的Static子窗口。
  3. 右鍵單擊新的Static窗口並選擇Properties
  4. Misc副標題爲Properties,將Type更改爲Bitmap
  5. Misc副標題爲Properties,將Image更改爲IDB_BITMAP1

如果你是手工編碼的窗口(即手工編寫調用CreateWindowCreateWindowEx創建窗口):

  1. 插入圖像作爲您的項目資源。確保將代碼行#include "resource.h"添加到您的代碼中。
  2. 使用LoadBitmap函數獲取位圖的句柄。
  3. 將靜態窗口創建爲主窗口的子窗口,並指定SS_BITMAP窗口樣式。
  4. 使用先前識別的位圖資源句柄,將STM_SETIMAGE消息發送到窗口。

示例代碼,假設你的形象是IDB_BITMAP1

#include <Windows.h> 
#include <tchar.h> 
#include "resource.h" 

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd) 
{ 
    HWND hWnd, hStcImage; 
    MSG Msg; 
    HBITMAP hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1)); 

    // ... register the window class etc 

    hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, _T("ExampleClassName"), _T("Simple Window"), WS_VISIBLE | WS_SYSMENU, 100, 100, 350, 370, NULL, NULL, hInstance, NULL); 
    hStcImage = CreateWindow(_T("Static"), NULL, WS_VISIBLE | WS_CHILD | SS_BITMAP, 10, 10, 0, 0, hWnd, NULL, hInstance, NULL); 
    SendMessage(hStcImage, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBitmap); 

    ShowWindow(hWnd, SW_SHOW); 
    UpdateWindow(hWnd); 

    while (GetMessage(&Msg, NULL, 0, 0) > 0) 
    { 
     TranslateMessage(&Msg); 
     DispatchMessage(&Msg); 
    } 
    return Msg.wParam; 
} 
相關問題