CBitmap :: Setbitmap不适用于Windows XP?
CBitmap :: Setbitmap不能与Windows XP一起使用。实际上,我使用的是Windows7操作系统,我有一个对话框应用程序,使用CBitmap :: Setbitmap将位图加载到按钮上。CBitmap :: Setbitmap不适用于Windows XP?
当我在windows xp机器上运行我的应用程序时,我没有获得我在按钮上加载的位图。
这是怎么了装载和设置位图,
CButton *pMyButton = (CButton*)GetDlgItem(IDC_ADD_BTN);
BitmapStd.LoadBitmap(IDB_STANDARD_IDEAL_BMP);
HBITMAP hBitmap = (HBITMAP)BitmapStd.GetSafeHandle();
pMyButton->SetBitmap(hBitmap);
是否有任何其他的方式来实现这一目标?如果可能的话,请解释一下我用一个例子。
由于@Pierre Fournier建议修改我的加载BITMAP的代码,如下所示。
为了加载在任何操作系统上,这是一个按钮位图来完成,
CButton *pMyButton = reinterpret_cast<CButton*>GetDlgItem(IDC_MY_BUTTON);
HANDLE handle = LoadImage(GetModuleHandle(bitmpa.dll), MAKEINTRESOURCE(IDB_MY_BMP),
IMAGE_BITMAP, 64, 64, 0);
HBITMAP hBmp = static_cast<HBITMAP >(handle);
SendMessage(pMyButton->GetSafeHwnd(), BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBmp);
DeleteObject(hBmp);//Deletes the attached Windows GDI object from memory by freeing all system //storage associated with the Windows GDI object.
这是为我工作的罚款,我在几个操作系统只测试。
这是我要做的事在Win32中
HWND ctrl = GetDlgItem(m_hWnd, IDC_BUTTON_PREVIOUS);
HANDLE handle = LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_BLUELEFT),
IMAGE_ICON, 16, 16, 0);
HICON m_iconPrevious = static_cast<HICON>(handle);
SendMessage(ctrl, BM_SETIMAGE, IMAGE_ICON, (LPARAM)m_iconPrevious);
一定要调用DestroyIcon当你完成()。
我想加载一个位图不是一个图标,我明白你说的,它很不错,我的疑问是如果我加载一个位图,那么我如何销毁该对象HBITMAP在我的情况。我认为没有API可用于销毁位图。请让我知道我该怎么做。替代IMAGE_ICON,我放置了IMAGE_BITMAP,并且在HICON的位置放置了HBITMAP。因此,我的问题是如何销毁它。 – Siva 2014-10-28 13:58:07
使用'DeleteObject()'删除一个HBITMAP' – 2014-10-28 17:14:25
请显示您使用的确切代码。没有它,我们无法帮助。 – user1793036 2014-10-22 05:45:16
正如你所说我编辑了我的原始文章。请看看这个,请让我知道一个解决方案。 – Siva 2014-10-27 06:21:35