【问题标题】:Cant add bmp file to picture control无法将bmp文件添加到图片控件
【发布时间】:2013-12-05 19:52:33
【问题描述】:

我正在尝试在基于对话框的应用程序中的图片控件中添加 bmp 图片。 所以基本上我在对话框中添加了图片控件,并将图片控件类型从帧更改为位图。图片控件ID为IDC_STATIC 之后我在标题中添加了这段代码: CStatic* m_picture;

在 OnInitDialog 下的项目文件中我添加了这个:

m_picture = (CStatic *)GetDlgItem(IDC_STATIC);

HITMAP hb = (HBITMAP)::LoadImage(NULL, L"C:\1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

m_picture->ModifyStyle(0xF, SS_BITMAP, SWP_NOSIZE);

m_picture->SetBitmap(hb);

我没有收到任何错误,但是该应用程序无法运行,它不显示任何内容... 我错过了什么吗?

【问题讨论】:

  • IDC_STATIC 通常分配给所有静态控件。您拨打GetDlgItem 可能无法检索到正确的电话。您应该分配一个不同的 ID。您对ModifyStyle 的调用中的0xF 也很尴尬。您应该考虑改用符号常量。
  • 此外,您必须在带引号的文字字符串中加倍反斜杠:L"C:\\1.bmp"
  • 更改 ID 很有帮助,就像魅力一样。谢谢你们。
  • @AndrijaGlavas,尝试查看我的答案,如果正确,请给 +1,以便用户在真正需要时可以轻松获取这些答案

标签: image mfc controls


【解决方案1】:

我认为你的路径不相关

将图像添加到优化校准

// Declare  CStatic Object
CStatic aDummyImageName;

//On InitFunction

BOOL YourClassName::OnInitDialog()
{ 
aDummyImageName= (CStatic*)GetDlgItem(ID of Your Picture Control);
        HBITMAP dateImage = (HBITMAP)LoadImage(NULL, L"Path of the Image",  IMAGE_BITMAP, 225, 170, LR_LOADFROMFILE);
        aDummyImageName->SetBitmap(dateImage);

return TRUE;
}

试试这个,它会工作的

【讨论】:

    【解决方案2】:

    IDC_STATIC 用于所有不变的事物。该程序无法找到它。但是一旦你解决了你可能会遇到我的问题,那就是 Visual Studio 不断修改我在 *.rc 中的图片控件,使其不再是“静态的”,然后它就不会构建。 :(

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      相关资源
      最近更新 更多