VC++6.0里的光标文件,有什么用?怎么才能看到它的用途?最好能给个简单的程序

VC++6.0里的光标文件,有什么用?怎么才能看到它的用途?最好能给个简单的程序,第1张

VC++6.0里的光标文件,首先它是一个资源文件。和其它资源(如位图)一样,你可以在代码里面使简余薯用它,也可以不用。

光标资源文件,通常用来改变程序中,鼠标移动到某些位置后改变鼠标光标样式(如CS里面的瞄准镜毁银),最简单的,就是在OnMouseMove消息响应函数中调用SetCursor函数即可。拦者

 ::SetCursor(::LoadCursor(NULL,IDC_SIZENESW))

MFC默认的光标、图标是由MFC底层代码完成的。当然,我们是不能修改MFC的底层代码的。

创建之前

而应该:

方法1:

在PreCreateWindow函数,定义一个自己的窗口类

HINSTANCE AfxGetInstanceHandle( )这个函数返回当前应用程序实例的句柄。

DefWindowProc默认的窗口函数。注意,这里用的是全局API函数,前面要有::

菜单不是这个时候加上去的,而是在应用程序类的初始化函数加上去的,所以暂时先设置为NULL

然后注册这个窗口类

改变cs的属性类名为刚刚定义的这个类。

在框架窗口中只能修改图标等没被View覆盖的。

光标修改:应该在View类中的PreCreateWindow修改,将cs属毁戚性类名为刚刚定义的这个类。

这个方法麻烦!

方法2:

使用纤烂陵下面这个函数:

LPCTSTR AFXAPI AfxRegisterWndClass( UINT nClassStyle, HCURSOR hCursor = 0, HBRUSH hbrBackground = 0, HICON hIcon = 0 )

nClassStyle 为样式 参看 WndClass的style成员。msdn

在框架类的PreCreateWindow函数中 用它修改图标。

在视图类的PreCreateWindow函数中,用它修改背景、光历哗标、画刷。

创建之后

方法1:

SetClassLong函数

The SetClassLong function replaces the specified 32-bit (long) value at the specified offset into the extra class memory or the WNDCLASSEX structure for the class to which the specified window belongs.

DWORD SetClassLong(

HWND hWnd, // handle of window

int nIndex, // index of value to change

LONG dwNewLong // new value

)

用法查看msdn 注意类型转换。

——————————————————————————————————————————————

所以,朋友,像你说的那种情况,需要自制光标,现在网上也有很多现成的代码可以用~~自己再找找吧~~

首先要添加鼠标光标(Cursor)文件(*.cur)到工程中,然后需要为应或旦用程序添加WM_SETCURSOR消息

用::SetCursor(AfxGetApp()->LoadCursor(图标ID));函数设置就可以了,该函数可以在任意处使用,这就意味着你可以随时改变鼠标的光标

修改应用程序的图标首先要添加图标衫宽扰文件(*.ico)到工程中,然后把应用程序原有的窗口图标文件删除,将新加的图标文件的ID修改成程序原有图标的ID就可以了。

或者在窗口类或视图类的构造函数中加入如下代码:

m_hIcon = AfxGetApp()->LoadIcon(要加入巧塌的图标的ID)

以下是动态修改鼠标光标的示例代码:

BOOL CXcDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)

{

// TODO: Add your message handler code here and/or call default

CPoint pos

::GetCursorPos(&pos)

ScreenToClient(&pos)

if((pos.x>250&&pos.x<290)&&(pos.y>150&&pos.y<190))//当鼠标处在某一区域内时修改鼠标光标

{

::SetCursor(AfxGetApp()->LoadCursor(IDC_CURSOR1))

return true

}

/*else

{

SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW))

return true

}*/

return CDialog::OnSetCursor(pWnd, nHitTest, message)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12259971.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存