2024年10月loadcursor(如何把一个资源文件一起包含到dll文件中去)
⑴loadcursor(如何把一个资源文件一起包含到dll文件中去
⑵如何把一个资源文件一起包含到dll文件中去
⑶找一个资源器RC文件。把资源全部放到dll里面然后用loadlibraryloadbitmaploadcursorloadiconloadstring加载这些资源
⑷C#中如何更改鼠标指针
⑸更改鼠标指针,需要使用到?Windows?API:
⑹?添加命名空间的引用:
⑺usingSystem.Runtime.InteropServices;usingSystem.Reflection;
⑻?声明?API?函数
⑼staticexternIntPtrLoadCursorFromFile(stringfileName);
⑽?在Form_Load?事件中,加载自定义光标
⑾privatevoidForm_Load(objectsender,EventArgse){CursorcustomCursor=newCursor(Cursor.Current.Handle);IntPtrcustomCursorHandle=LoadCursorFromFile(“你的自定义鼠标指针的路径“);customCursor.GetType().InvokeMember(“handle“,BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.SetField,null,customCursor,newobject{customCursorHandle});this.Cursor=customCursor;}
⑿空窗口:#include《windows.h》/*所有的窗口输出到这里去*/LRESULTCALLBACKWndProc(HWNDhwnd,UINTMessage,WPARAMwParam,LPARAMlParam){switch(Message){/*停止后,告诉主线程停止*/caseWM_DESTROY:{PostQuitMessage();break;}/*所有其他消息(很多人都使用默认程序处理*/default:returnDefWindowProc(hwnd,Message,wParam,lParam);}return;}/*WinGUI程序的主要功能:执行从这里开始*/intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow){WNDCLASSEXwc;/*窗口的属性结构*/HWNDhwnd;/*“句柄“一个窗口的标识符*/MSGMsg;/*所有消息的临时位置*//*修改结构和设置的东西*/memset(&wc,,sizeof(wc));wc.cbSize=sizeof(WNDCLASSEX);wc.lpfnWndProc=WndProc;/*将发送消息的地方*/wc.hInstance=hInstance;wc.hCursor=LoadCursor(NULL,IDC_ARROW);/*白色,COLOR_WINDOW是系统定义的颜色值,其数值是*/wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+);wc.lpszClassName=“WindowClass“;wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);/*载入一个标准图标*/wc.hIconSm=LoadIcon(NULL,IDI_APPLICATION);/*使用名称“A”来作为该项目图标*/if(!RegisterClassEx(&wc)){MessageBox(NULL,“WindowRegistrationFailed!“,“Error!“,MB_ICONEXCLAMATION|MB_OK);return;}hwnd=CreateWindowEx(WS_EX_CLIENTEDGE,“WindowClass“,“Caption“,WS_VISIBLE|WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,/*x*/CW_USEDEFAULT,/*y*/,/*宽度*/,/*高度*/NULL,NULL,hInstance,NULL);if(hwnd==NULL){MessageBox(NULL,“WindowCreationFailed!“,“Error!“,MB_ICONEXCLAMATION|MB_OK);return;}/*所有的输入处理和发送到窗口过程。注意,这个块代码流,直到它接收到的东西,所以回路不会产生不合理的高CPU使用率。*/while(GetMessage(&Msg,NULL,,)》)/*如果没有收到任何错误…*/{TranslateMessage(&Msg);/*如果存在翻译关键码字符*/DispatchMessage(&Msg);/*发送它到WndProc*/}returnMsg.wParam;}
⒀VC里面怎样做到鼠标指到按钮上变成手型
⒁两种方法:、派生一个cbutton类,然后重载onsetcursor函数,在里面使用setcursor函数设置鼠标指针。然后删除returncbutton::onsetcursor(pwnd,nhittest,message);改成returntrue;例如:boolcmybutton::onsetcursor(cwnd*pwnd,uintnhittest,uintmessage){::setcursor(::loadcursor(null,makeintresource(idc_hand)));returntrue;}、直接在程序里,响应wm_mousemove消息,在里面判断鼠标指针是否指到了按钮上,是的话就用setcursor函数设置鼠标指针,离开再设回以前的指针
⒂VB.改变系统鼠标图标
⒃DeclareFunctionLoadCursorFromFileLib“user“Alias“LoadCursorFromFileA“(ByVallpFileNameAsString)AsLongDeclareFunctionSetSystemCursorLib“user“Alias“SetSystemCursor“(ByValhCurAsLong,ByValidAsLong)AsLong’关于SetSystemCursorhCur:光标的句柄,该函数hCur标识的光标的内容代替id定义的系统光标内容。系统通过调用DestroyCursor函数销毁hCur。因此hCur不能是由LoadCursor函数载入的光标。要指定一个从资源载入的光标,先用CopyCursor函数复制该光标,然后把该副本传送给SetSystemCursor函数。id:指定由hour的内容替换系统光标。下面是一系列的系统光标标识符:OCR_APPSTARTING:标准箭头和小的沙漏OCR_NORMAL:标准箭头OCR_CROSS:交叉十字线光标OCR_HAND:手的形状(WindowsNT.和以后版本OCR_HELP:箭头和向东标记OCR_IBEAM:I形梁OCR_NO:斜的圆OCR_SIZEALL:四个方位的箭头分别指向北、南、东、西OCR_SIZENESEW:双箭头分别指向东北和西南OCR_SIZENS:双箭头,分别指向北和南OCR_SIZENWSE:双箭头分别指向西北和东南OCR_SIZEWE:双箭头分别指向西和东OCR_UP:垂直箭头OCR_WAIT:沙漏然后SetSystemCursorLoadCursorFromFile(“D:.ani“),OCR_NORMAL即可。系统会自动调用DestroyCursor来销毁。OptionExplicitPrivateDeclareFunctionLoadCursorFromFileLib“user“Alias“LoadCursorFromFileA“(ByVallpFileNameAsString)AsLongPrivateDeclareFunctionSetSystemCursorLib“user“(ByValhCurAsLong,ByValidAsLong)AsLongPrivateDeclareFunctionDestroyCursorLib“user“(ByValhCurAsLong)AsLongPrivateConstOCR_NORMAL=DimlRetAsLongPrivateSubForm_Load()lRet=LoadCursorFromFile(“D:IconsStandardHand.cur“)’我的图标路径SetSystemCursorlRet,OCR_NORMALEndSubPrivateSubmand_Click()DestroyCursor(lRet)EndSub惨了……变不回去……必须要重设光标了。
⒄c语言怎么样编写一个时钟程序
⒅c语言时钟程序代码如下:
⒆#include《windows.h》
⒇#include《math.h》
⒈#defineID_TIMER//计时器ID
⒉#defiWOPI(*.)
⒊LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);
⒋intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRszCmdLine,intiCmdShow)
⒌staticTCHARszAppName=TEXT(“Clock“);
⒍WNDCLASSwndclass;
⒎wndclass.cbClsExtra=;
⒏wndclass.cbWndExtra=;
⒐wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
⒑wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
⒒wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
⒓wndclass.hInstance=hInstance;
⒔wndclass.lpfnWndProc=WndProc;
⒕wndclass.lpszClassName=szAppName;
⒖wndclass.lpszMenuName=NULL;
⒗wndclass.style=CS_HREDRAW|CS_VREDRAW;
⒘if(!RegisterClass(&wndclass))
⒙MessageBox(NULL,TEXT(“ThisprogramrequiresWindows
⒚T“),szAppName,MB_ICONERROR);
⒛hwnd=CreateWindow(szAppName,TEXT(“AnalogClock“),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,,))
TranslateMessage(&msg);
DispatchMessage(&msg);
returnmsg.wParam;
voidSetsotropic(HDChdc,intcxClient,intcyClient)
SetMapMode(hdc,MM_ISOTROPIC);
SetWindowExtEx(hdc,,,NULL);
SetViewportExtEx(hdc,cxClient/,-cyClient/,NULL);
SetViewportEx(hdc,cxClient/,cyClient/,NULL);
voidRotatePoint(POINTpt,intiNum,intiAngle)
POINTptTemp;
for(i=;i《iNum;i++)
ptTemp.x=(int)(pt.y*sin(TWOPI*iAngle/));
ptTemp.y=(int)(pt.x*sin(TWOPI*iAngle/));
pt=ptTemp;
voidDrawClock(HDChdc)
intiAngle;
for(iAngle=;iAngle《;iAngle+=)
RotatePoint(pt,,iAngle);
pt.y=iAngle%?:;
SelectObject(hdc,GetStockObject(BLACK_BRUSH));
Ellipse(hdc,pt.y);
voidDrawHands(HDChdc,SYSTEMTIME*pst,BOOLfChange)
staticPOINTpt={,-,,,,,-,,,-,,-,,,,,-,,,-,,,,,,,,,,};
inti,iAngle;
POINTptTemp;
iAngle=(pst-》wHour*)%+pst-》wMinute/;
iAngle=pst-》wMinute*;
iAngle=pst-》wSecond*;
memcpy(ptTemp,pt,sizeof(pt));
for(i=fChange?:;i《;i++)
RotatePoint(ptTemp);
Polyline(hdc,ptTemp,);
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)
staticintcxClient,cyClient;
staticSYSTEMTIMEstPrevious;
BOOLfChange;
PAINTSTRUCTps;
SYSTEMTIMEst;
switch(message)
caseWM_CREATE:
SetTimer(hwnd,ID_TIMER,,NULL);
GetLocalTime(&st);
stPrevious=st;
caseWM_SIZE:
cxClient=LOWORD(lParam);
cyClient=HIWORD(lParam);
caseWM_TIMER:
GetLocalTime(&st);
fChange=st.wHour!=stPrevious.wHour||st.wMinute!=stPrevious.wMinute;
hdc=GetDC(hwnd);
Setsotropic(hdc,cxClient,cyClient);
SelectObject(hdc,GetStockObject(WHITE_PEN));
DrawHands(hdc,&stPrevious,fChange);
SelectObject(hdc,GetStockObject(BLACK_PEN));
DrawHands(hdc,&st,TRUE);
stPrevious=st;
caseWM_PAINT:
hdc=BeginPaint(hwnd,&ps);
Setsotropic(hdc,cxClient,cyClient);
DrawClock(hdc);
DrawHands(hdc,&stPrevious,TRUE);
EndPaint(hwnd,&ps);
caseWM_DESTROY:
KillTimer(hwnd,ID_TIMER);
PostQuitMessage();
returnDefWindowProc(hwnd,message,wParam,lParam);
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU以及超级电脑等作业平台。
C语言是由UNIX的研制者丹尼斯·里奇(DennisRitchie于年由肯·汤普逊(KenThompson所研制出的B语言的基础上发展和完善起来的。目前,C语言编译器普遍存在于各种不同的操作系统中,例如UNIX、MS-DOS、MicrosoftWindows及Linux等。C语言的设计影响了许多后来的编程语言,例如C++、Objective-C、Java、C#等。
PrivateDeclareFunctionalxSetCursorLib“user“Alias“SetCursor“(ByValhCursorAsLong)AsLong#将指定的鼠标指针设为当前指针PrivateDeclareFunctionalxGetCursorLib“user“Alias“GetCursor“()AsLong#获取目前选择的鼠标指针的句柄PrivateSubMouseType()#取得左右形光标的值Screen.MousePointer=#设屏幕鼠标为(左右型鼠标。lngMouseOne=alxGetCursor()#返回左右型鼠标在WINDOWS(\\XP)的值。Screen.MousePointer=#设屏幕鼠标为(沙漏。lngMouseTwo=alxGetCursor()#返回左右型鼠标在WINDOWS(\\XP)的值。Screen.MousePointer=#重设屏幕鼠标为(AESS自确定。blTextout=FalseblTextlook=FalseEndSub方法二:随便找一个.cur文件copy到mdb文件相同的目录PrivateDeclareFunctionCopyCursorLib“user“Alias“CopyIcon“(ByValhcurAsLong)AsLongPrivateDeclareFunctionLoadCursorFromFileLib“user“Alias“LoadCursorFromFileA“(ByVallpstrCurFileAsString)AsLongPrivateDeclareFunctionGetCursorLib“user“()AsLongPrivateDeclareFunctionSetSystemCursorLib“user“(ByValhcurAsLong,ByValidAsLong)AsLongPrivateConstOCR_NORMAL=DimlngMyCursorAsLongDimlngSystemCursorAsLongPrivateSubcmdMyCursor_Click()#更改指针样式DimstrCurFileAsStringstrCurFile=CurrentProject.Path+“\Cursor.cur“#可随意调用其他的.cur鼠标样式文件,以达到显示各种指针的目的lngMyCursor=LoadCursorFromFile(strCurFile)lngSystemCursor=GetCursor()lngSystemCursor=CopyCursor(lngSystemCursor)SetSystemCursorlngMyCursor,OCR_NORMALText.SetFocusText.Text=“鼠标指针已经设定为您要的状态“cmdMyCursor.Enabled=FalsecmdSystemCursor.Enabled=TrueEndSubPrivateSubcmdSystemCursor_Click()#恢复系统指针样式SetSystemCursorlngSystemCursor,OCR_NORMALText.SetFocusText.Text=“鼠标指针已经恢复为系统状态“cmdMyCursor.Enabled=TruecmdSystemCursor.Enabled=FalselngSystemCursor=EndSubPrivateSubForm_Close()IflngSystemCursor《》ThenSetSystemCursorlngSystemCursor,OCR_NORMALEndSubPrivateSubForm_Unload(CancelAsInteger)IflngSystemCursor《》ThenSetSystemCursorlngSystemCursor,OCR_NORMALEndSub
vb如何实现:经过图片时,指针变成手指
vb中鼠标指针样式没有手指型的鼠标,但是可以调用系统API来实现你可以使用API函数SetCursor和LoadCursor实现’新建一个标准模块,定义函数PublicDeclareFunctionSetCursorLib“user“(ByValhCursorAsLong)AsLongPublicDeclareFunctionLoadCursorLib“user“Alias“LoadCursorA“(ByValhInstanceAsLong,ByVallpCursorNameAsString)AsLong’常量PublionstIDC_HAND=“#“’定义一个手指型鼠标保存的变量PublichHandCursorAsLong在Form_Load事件中hHandCursor=LoadCursor(,IDC_HAND)在图片的mousemove事件中SetCursorhHandCursor
WinProc是窗口消息处理的回调函数,所谓回调函数就是系统约定好了函数形式供系统调用函数,LRESULTCALLBACKWindowProc(HWNDhwnd,//handletowindowUINTuMsg,//messageidentifierWPARAMwParam,//firstmessageparameterLPARAMlParam//secondmessageparameter)其实这个WinProc你可以取任何名字,只要函数定义这个形式就可以了。
VB怎么更改鼠标指针样式
VB设置鼠标的指针样式,可设置窗口中的鼠标样式和系统中的鼠标指针样式,通过操作窗口中的菜单,你就可以很方便的改变鼠标样式,下面是我给大家整理的一些相关解决方法步骤,希望对大家有帮助!
VB怎么更改鼠标指针样式
Object=“{FC-FF-A-AC-BFFB}#.#“;“dlg.ocx“
BeginVB.FormForm
Caption=“鼠标样式设置器“
ClientHeight=
ClientLeft=
ClientTop=
ClientWidth=
LinkTopic=“Form“
ScaleHeight=
ScaleWidth=
StartUpPosition=’窗口缺省
BeginMSDlg.monDialogmonDialog
BeginVB.MenuSetMouse
Caption=“设置鼠标样式“
BeginVB.MenuSetSysMouse
Caption=“设置系统鼠标样式“
BeginVB.MenuBackSysMouse
Caption=“恢复系统鼠标样式“
BeginVB.MenuSetFormMouse
Caption=“设置窗体鼠标样式“
BeginVB.MenuBackFormMouse
Caption=“恢复窗体鼠标样式“
AttributeVB_Name=“Form“
AttributeVB_GlobalNameSpace=False
AttributeVB_Creatable=False
AttributeVB_PredeclaredId=True
AttributeVB_Exposed=False
OptionExplicit
ConstOCR_NORMAL=
ConstIDC_ARROW=&
ConstSPI_SETCURSORS=
ConstSPIF_SENDWININICHANGE=&H
ConstOCR_NORAAC=’标准
ConstGCL_HCURSOR=(-)
’constOCR_APPSTARTING=’小的沙漏
’constOCR_HAND=’手
’constOCR_NO=’圆
’constOCR_SIZEALL=’十
’constOCR_WAIT=’沙漏
PrivateDeclareFunctionLoadCursorFromFileLib“user“Alias“LoadCursorFromFileA“(ByVallpFileNameAsString)AsLong
PrivateDeclareFunctionSetSystemCursorLib“user“(ByValhcurAsLong,_
ByValidAsLong)AsLong
PrivateDeclareFunctionSystemParametersInfoLib“user“Alias“SystemParametersInfoA“(ByValuActionAsLong,_
ByValuParamAsLong,_
ByReflpvParamAsAny,_
ByValfuWinIniAsLong_
PrivateDeclareFunctionSetClassLongLib“user“Alias“SetClassLongA“(ByValhwndAsLong,_
ByValnIndexAsLong,_
ByValdwNewLongAsLong_
PrivateDeclareFunctionGetSystemDirectoryLib“kernel“Alias“GetSystemDirectoryA“(ByVallpBufferAsString,_
ByValnSizeAsLong_
DimhCursorAsLong
PrivateSubBackFormMouse_Click()’恢复窗体鼠标的样式
DimsPathAsString*’定义路径
GetSystemDirectorysPath,Len(sPath)
hCursor=LoadCursorFromFile(sPath)
SetClassLongMe.hwnd,GCL_HCURSOR,hCursor
PrivateSubBackSysMouse_Click()’恢复系统鼠标的样式
SystemParametersInfoSPI_SETCURSORS,,,SPIF_SENDWININICHANGE
PrivateSubSetFormMouse_Click()’设置窗体的鼠标样式
monDialog.Filter=“CUR文件(*.cur)|*.cur|ANI文件(*.ani)|*.ani|所有文件|(*.*)“
monDialog.ShowOpen
monDialog.CancelError=False
IfmonDialog.FileName《》““Then
hCursor=LoadCursorFromFile(monDialog.FileName)
SetClassLongMe.hwnd,GCL_HCURSOR,hCursor
PrivateSubSetSysMouse_Click()’设置系统鼠标样式
monDialog.Filter=“CUR文件(*.cur)|*.cur|ANI文件(*.ani)|*.ani|所有文件|(*.*)“
monDialog.ShowOpen
monDialog.CancelError=False
IfmonDialog.FileName《》““Then
hCursor=LoadCursorFromFile(monDialog.FileName)
CallSetSystemCursor(hCursor,OCR_NORMAL)
程序运行截图如下图所示:
相关拓展:vb如何控制鼠标
主要是要通过两个方面:
对鼠标的停留位置做出判断,也就是得到鼠标在屏幕上停留的位置。
将鼠标的移动到所确定的位置上。而实现这个功能则要使用到SetCursorPos这个函数,此函数的功能是设定鼠标位置。
这个函数的声明如下:
PublicDeclareFunctionSetCursorPosLib“user“(ByValxAsLong,ByValyAsLong)AsLong
而仅仅有这个函数是不够的,还需要定义一个type格式的自定义变量。定义为:
PublicTypePOINTAPI
它用于存放鼠标的位置(屏幕上的位置)。
但是一个新的问题又出现了:鼠标到底放在哪里呢?也就是如何获得屏幕上的位置。
这个问题就要用到另一个函数:GetCursorPos,它的功能是获得屏幕上鼠标的坐标。
PublicDeclareFunctionGetCursorPosLib“user“(lpPointAsPOINTAPI)AsLong
这样就可以通过GetCursorPos函数获得鼠标的位置,存放到一个POINTAPI变量中,再通过SetCursorPos函数来设置鼠标的位置。
这样就可以十分顺利的来控制鼠标了!