gpt4 book ai didi

c++ - VC++2008中存在图像控件

转载 作者:可可西里 更新时间:2023-11-01 09:38:37 26 4
gpt4 key购买 nike

大家好, 我想知道 VC++ 中是否有像 VB 中那样的图像控件。实际上使用图片框我面临无法在设计时为我的对话框调整图像大小的问题。但在图像控制中这是可能的。我没有图像控件,有没有办法在设计时从对话框编辑器检查对话框的高度和宽度???

最佳答案

如果您正在编写一个非托管 C 或 C++ 项目,这比使用在设计托管 Windows 窗体应用程序时可用的 PictureBox 控件要困难一些,但仍然可行。

如果您使用的是窗口的 DialogBox 资源(注意:我写这部分时使用的是 Visual Studio 2015 作为引用,而不是 2008,但大体过程应该是相同的):

  1. 将图像作为资源插入您的项目中。假设为简单起见,我们将位图的资源命名为 IDB_BITMAP1
  2. 在对话框中创建一个新的 Static 子窗口。
  3. 右键单击新的 Static 窗口并选择 Properties
  4. PropertiesMisc 子标题下,将 Type 更改为 Bitmap
  5. PropertiesMisc 子标题下,将 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;
}

关于c++ - VC++2008中存在图像控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10261458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com