【问题标题】:MFC CPP A problem with putting picture in picture control on loadMFC CPP 在加载时将图片置于图片控制中的问题
【发布时间】:2021-09-26 16:02:49
【问题描述】:

我有 MFC 应用程序,我想使用这 3 行上传图片:

cbitmap_.LoadBitmap(IDB_BITMAP1);
picture_control_.SetBitmap((HBITMAP)cbitmap_.Detach());
UpdateData(FALSE);

当我在主对话框上执行此操作时,它起作用了。我试图在我打开的第二个对话框上使用它,但它在加载时不起作用。如果我将它与第二个对话框上的按钮一起使用,它也可以工作...... 我应该将该代码粘贴到第二个对话框的 cpp 文件的哪个位置?

谢谢!

【问题讨论】:

  • 如果您只想呈现资源位图,请查看CAboutDlg 在打开时如何显示 MFC 图标。这一切都在资源内完成,不需要额外的代码。只需将类型更改为Bitmap。如果您想在对话框建立后更改它,那是另外一回事。但我认为打电话给UpdateData 是不好的形式。它打破了数据交换机制,使您的数据保持干净,用户可以CANCELOK

标签: c++ bitmap mfc picturebox


【解决方案1】:

对话框中控件的最终初始化通常是在响应WM_INITDIALOG 消息时完成的。它由系统在所有控件创建后但在显示对话框之前发送。 CDialog 类提供了可以在派生实现中覆盖的虚拟 OnInitDialog 成员。

无论哪种方式都不需要调用UpdateData(FALSE)。假设picture_control_CStatic 类型,并通过从DoDataExchange 实现调用DDX_Control 正确附加到控件。

【讨论】:

  • 如果没有 UpdateData,它在任何版本中都不起作用..甚至在以前可以工作的按钮中也没有..我仍然不明白什么时候放置这些行的正确位置:(
  • 此答案解释了在对话框中初始化控件的位置和时间。如果您仍有问题,您需要在问题中提供更完整的信息。单击Edit 提供更多详细信息,最好是minimal reproducible example
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-11
  • 2019-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多