3
大家好,我想知道在VC++中是否有像VB中的圖像控件。實際上,使用圖片框時,我面臨的問題是無法在設計時爲對話框重新調整圖片的大小。但在圖像控制這是可能的。我沒有圖像控件有沒有辦法在設計時從對話框編輯器檢查對話框的高度和寬度?在VC++ 2008中存在圖像控件
大家好,我想知道在VC++中是否有像VB中的圖像控件。實際上,使用圖片框時,我面臨的問題是無法在設計時爲對話框重新調整圖片的大小。但在圖像控制這是可能的。我沒有圖像控件有沒有辦法在設計時從對話框編輯器檢查對話框的高度和寬度?在VC++ 2008中存在圖像控件
如果您正在編寫一個非託管的C或C++項目,這比使用設計託管Windows窗體應用程序時可用的PictureBox控件更困難,但仍然可行。
如果您使用的是對話框資源的窗口(注意:我使用Visual Studio 2015年爲基準,而不是2008年寫了這部分,但總的過程應該是相同的):
IDB_BITMAP1
的資源。Static
子窗口。Static
窗口並選擇Properties
。Misc
副標題爲Properties
,將Type
更改爲Bitmap
。Misc
副標題爲Properties
,將Image
更改爲IDB_BITMAP1
。如果你是手工編碼的窗口(即手工編寫調用CreateWindow
和CreateWindowEx
創建窗口):
#include "resource.h"
添加到您的代碼中。LoadBitmap
函數獲取位圖的句柄。SS_BITMAP
窗口樣式。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;
}
哪個GUI框架,您使用的?有這麼多。 – 2012-04-21 19:43:01
@David Hefferman GUI框架意味着什麼?如何檢查我正在使用哪一個?我正在使用VC++ 2008專業版對話框編輯器中的標準工具箱。 – Sreyan 2012-04-22 08:13:26
好的,你使用的是原始的win32。不幸的是你!您可以在STATIC控件中顯示圖像。 – 2012-04-22 08:21:54