VC++2008 中图像控制的存在

Posted

技术标签:

【中文标题】VC++2008 中图像控制的存在【英文标题】:Presence of image control in VC++2008 【发布时间】:2012-04-21 17:44:57 【问题描述】:

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

【问题讨论】:

您使用的是哪个 GUI 框架?有这么多。 @David Hefferman GUI 框架是什么意思?如何检查我使用的是哪一个?我正在使用 VC++2008 专业版对话框编辑器中的标准工具箱。 好的,您使用的是原始 win32。你倒霉!您可以在 STATIC 控件中显示图像。 嗯,谢谢,我想没有其他解决方案了吗? 【参考方案1】:

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

如果你为窗口使用了DialogBox资源(注意:我写这部分是参考Visual Studio 2015,不是2008,但大体流程应该是一样的):

    将图像作为资源插入到您的项目中。假设为简单起见,我们将位图的资源命名为 IDB_BITMAP1。 在对话框中新建Static子窗口。 右键单击新的Static 窗口并选择Properties。 在Properties 中的Misc 子标题下,将Type 更改为Bitmap。 在PropertiesMisc 子标题下,将Image 更改为IDB_BITMAP1

如果您正在对窗口进行手动编码(即手动编写对 CreateWindowCreateWindowEx 的调用以创建窗口):

    将图像作为资源插入到您的项目中。确保将 #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;

【讨论】:

以上是关于VC++2008 中图像控制的存在的主要内容,如果未能解决你的问题,请参考以下文章

如何修复这些约束,使文本出现在 UITableViewCell 中图像的右侧?

DL中图像数据增强

将反应项目部署到 github 页面面临公共文件夹中图像的问题

swift 移除控制器中的已经存在的VC 注意

如何获取模型中图像变体的 url(在控制器/视图之外)?主动存储

VC++如何检测文件是不是存在