问个简单的cursor的问题,对于做过的人应该是很简单的。 在Resource下Insert Cursor,默认的Cursor是2色的,可以通过修改来建立16/256色的Cursor,问题是我该如何调用到这16/256色的Cursor? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ExampleHCURSOR hCursor; // Load a cursor resource that was originally created using // the Graphics Editor and assigned the i.d. IDC_MYCURSOR. hCursor = AfxGetApp()->LoadCursor(IDC_MYCURSOR); 把它删除掉。选择那个2色的,在菜单的Image下有个Delete Device Image 自己装载这个cursor,原来的delete掉就行了。 真彩工具条的实现 由于工具条的创建是在主框架类的OnCreate()函数中完成的,因此高彩色图像的装载和图像列表的替换工作必须也在此进行。在进行程序设计之前,需要做好各种准备工作,比如高彩色工具条位图的绘制、高彩色位图加入到资源等。绘制工具条位图时,必须控制好图像的尺寸,如需要有N个边长为 M的图标,那么需要绘制的位图尺寸为长=N*M;宽=M。真彩位图在加入到工程之后就不能再在VC的资源视图中进行编辑了。由于这个彩色位图仅起到美化界面的作用,因此具体对的事件响应等工作还要通过设置原有的Toolbar资源来完成。 准备工作就绪后,先要把工具条位图装载到图像列表,这样才能被工具条做获取。在作这一步时,必须用::LoadImage()函数去加载工具条位图,并通过宏MAKEINTRESOURCE()来指定具体要加载哪一个资源位图:HBITMAP hbm = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_TOOLBAR), //加载IDB_TOOLBARIMAGE_BITMAP, //按位图格式0,0, // cx,cyLR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS );LoadImage返回一个位图句柄HBITMAP,但在MFC下使用CBitmaps会更加方便,可创建一个CBitmap对象并用Attach()成员函数将它与位图句柄联系起来:CBitmap bm;bm.Attach(hbm); MFC加载工具栏位图时使用了一个内部函数AfxLoadSysColorBitmap()将缺省颜色设定为16色,因此为了显示16色以上的图像,必须在调用图像列表类CImageList的Create()函数创建图像列表时对图像清单做进一步的处理:m_ilToolBar.Create(32,32,ILC_COLOR8, 4, 4);m_ilToolBar.Add(&bm,(CBitmap*)NULL); 这里用ILC_COLOR8标明了创建的图像列表是256色的,在VC的commctrl.h中对其有定义,并且还提供有其他几种颜色位深度的预定义:#define ILC_COLOR4 0x0004 //16色#define ILC_COLOR8 0x0008 //256色#define ILC_COLOR16 0x0010 //16位色#define ILC_COLOR24 0x0018 //24位色#define ILC_COLOR32 0x0020 //32位色 如果使用的工具条位图只有256色(对于多数程序这样已经足够),则显然没有必要再使用更高级别的位深度定义。最后一步,也是最关键的一步,必须通过SetImageList()函数指定工具条m_wndToolBar的图标来源不再是原来缺省的图像列表而是含有高彩色位图的图像列表m_ilToolBar:m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ilToolBar); 同意!但是应该有至少2-3种的方法,在msdn or google应该可以找到 你应该建立一个现成的文件,然后Import进来,自然没有问题!! 求助,怎么得到当前路径拷贝文件? 一个简单的线程引起Kenel.dll的异常 visual studio 2008的问题 串口缓存! 怎样在控制台下调用MFC扩展DLL啊?可以调用吗? 请指教毛病在哪?? 用VC查看EXE或DLL文件中的资源 请Boxsender过来看一下。BitmapToRegion这个函数是怎么写的,我的一个程序正需要它,谢谢了。 文件读写的问题,极菜,请高手帮忙! vs2013使用调试工程时候, 出现奇怪的代码跳转 MS Sans Serif字体的问题 关于5ESS,如何进入Unix?
// Load a cursor resource that was originally created using
// the Graphics Editor and assigned the i.d. IDC_MYCURSOR.
hCursor = AfxGetApp()->LoadCursor(IDC_MYCURSOR);
MAKEINTRESOURCE(IDB_TOOLBAR), //加载IDB_TOOLBAR
IMAGE_BITMAP, //按位图格式
0,0, // cx,cy
LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS );LoadImage返回一个位图句柄HBITMAP,但在MFC下使用CBitmaps会更加方便,可创建一个
CBitmap对象并用Attach()成员函数将它与位图句柄联系起来:CBitmap bm;
bm.Attach(hbm); MFC加载工具栏位图时使用了一个内部函数AfxLoadSysColorBitmap()将缺省颜色设定为16色,因此为了显示16色以上的图像,必须在调用图像列表类CImageList的Create()函数创建图像列表时对图像清单做进一步的处理:m_ilToolBar.Create(32,32,ILC_COLOR8, 4, 4);
m_ilToolBar.Add(&bm,(CBitmap*)NULL); 这里用ILC_COLOR8标明了创建的图像列表是256色的,在VC的commctrl.h中对其有定义,并且还提供有其他几种颜色位深度的预定义:#define ILC_COLOR4 0x0004 //16色
#define ILC_COLOR8 0x0008 //256色
#define ILC_COLOR16 0x0010 //16位色
#define ILC_COLOR24 0x0018 //24位色
#define ILC_COLOR32 0x0020 //32位色 如果使用的工具条位图只有256色(对于多数程序这样已经足够),则显然没有必要再使用更高级别的位深度定义。最后一步,也是最关键的一步,必须通过SetImageList()函数指定工具条m_wndToolBar的图标来源不再是原来缺省的图像列表而是含有高彩色位图的图像列表m_ilToolBar:m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ilToolBar);
但是应该有至少2-3种的方法,
在msdn or google应该可以找到