我建了一个基于对话框的工程,并为该工程添加了一个菜单,在该菜单的弹出菜单下有两个子菜单位图1和位图2,我的目的是通过点击子菜单来显示相应的位图,故在每个子菜单的消息映射里调用函数自己写的函数OnRun(UINT nBitmapID,UINT nMenuID),OnRun()函数里也用了loadBitmap(nBitmapID)以装载位图,执行后无错误,但是点击子菜单时并不显示位图图象,请问各位高手是什么原因?
是不是要用个类似Invalidate()更新一下什么的?
是不是要用个类似Invalidate()更新一下什么的?
在你的子菜单上面添家 判断啊
简单的运用if()语句
开始的时候FALSE
点击就TRUE 载入
不就可以了吗
你必须在 OnPaint 中将 HBITMAP 选入到 DC 中并使用 BitBlt 来绘制
//先定义两个DC,一个是显示设备的DC,一个适合显示设备兼容的内存DC;
CClientDC dc(this);//显示设备
CDC memDC;//内存DC
memDC.CreateCompatibleDC(&dc);//把内存DC设定为和显示设备兼容
CBitmap *poldbmp=NULL;//定义一个旧BMP指针用以恢复
poldbmp=memDC.SelectObject(&your_bmp);//把你的位图装入内存DC,并保留原指针
dc.BitBlt(//把内存DC的矩阵传送到显示设备,即显示位图,具体参数看msdn吧!
OFFSET_X,
OFFSET_Y,
bmWidth,
bmHeight,
&memDC,
0,
0,
SRCCOPY
);
memDC.SelectObject(poldbmp);//恢复内存指针,不要忘了