我个人认为原因如下:
m_hMycursor= AfxGetApp()->LoadCursor(IDC_IBEAM)
应该改为:
m_hMycursor=LoadCursor(NULL,IDC_IBEAM)
前者意思是,在当前应用程序中加载资源号为IDC_IBEAM的光标,返回它的句柄;
后者意思是,加载WINDOWS资源号为IDC_IBEAM的光标,返回它的句柄;
WINDOWS中已经定义了很多默认的资源ID(WinUser.h头文件中你可以找到IDC_IBEAM),这些资源的使用不是依赖于具体实例的,所以LoadCursor的第一个参数为NULL;而如果你在自己的应用程序中画了一个光标,资源号为IDC_CURSOR1,那么这个资源号只有你的应用程序认识,所以要用AfxGetApp()->LoadCursor函数来加载光标资源。
经典的书一般都不是最近出版的,所以推荐你基本很经典的书windows编程就是SDK程序设计,看《windows程序设计》这本书,是微软出版社出版的,作者就是微软的专家,想进阶看《windows核心编程》,和罗云彬的《windows环境下32位程序设计》,理解windows核心机制。
mfc建议你看《mfc windows 程序设计》并且一定要结合平台看,例如visual studio,进阶看《深入浅出mfc》。
MFC(Microsoft Foundation class)微软基本类(库),它是一个面向对象的应用程序架构。程序员利用它可以很方便搭建应用程序框架。
MFC结合了面向对象的编程技术和WINDOWS消息驱动的编程技术,并封装了WIN32API,其设计好处是:消除了WIN32API的复杂性,封装了WIN32API,统一了程序的概念,而且可扩展。
MFC实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎。VC++是Windows下开发人员使用的专业C++ SDK,MFC就是挂在它之上的一个辅助软件开发包。
扩展资料
MFC编程优势
面对底层程序,它能很轻松的与Windows API或驱动程序结合,就是在自己的代码中直接使用API函数,而API和驱动程序的资料都是以C语言为基础的,这使得VC程序员能够更轻松的使用Windows API。
这样造成了一个很有意思的现象,即入门时VC程序员要付出更多的努力来学习,但是一旦掌握后,开发其他领域的程序或使用第三方软件时,如工业控制类的程序,由于底层的程序都是用C语言编写,反倒是VC程序员能够更快的掌握该领域的编程技术。而很多其他的编程语言甚至找不到相关的资料。
这就说明VC(MFC)实际上是一种入门困难,但是扩展学习却很轻松的语言框架。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)