Win32 Application
在编译RC文件时老是出错
不明白是该方法不对,还是代码细节出了问题,仅仅想实现自己的光标在窗口上显示
另外,上贴中前辈们给的方法,如使用SetCursor/LoadCursor的方法已经学会,就是想把这种方法学学,请前辈们给解释一下,谢谢了
窗口已经实现,但是光标就没有出现,仍然是WINDOWS的默认光标分别创建:CURSOR.cpp //cpp编译通过
CURSOR.h
CURSOR.rc(使用Resource Script创建,对否?)
并使用资源编辑器画好图标(ID=IDC_CURSOR1,filename=hand.cur)
.cpp代码如下:
----------------------------
#define WIN32_LEAN_MEAN#include<windows.h>
#include<windowsx.h>
#include"CURSOR.h"
#define WINDOW_CLASS_NAME "GOT_ME"LRESULT CALLBACK WinProc(HWND hwnd,UINT msg,WPARAM wparam ,LPARAM lparam)
{ PAINTSTRUCT ps;
HDC hdc; switch(msg)
{
case WM_CREATE:
{
return 0;
}
break; case WM_PAINT:
{
hdc=BeginPaint(hwnd,&ps); EndPaint(hwnd,&ps);
return 0;
}
break; case WM_DESTROY:
{
PostQuitMessage(0);
}
break;
} return DefWindowProc(hwnd,msg,wparam,lparam);
}int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinstace,LPSTR lpCmdLine,int nShowCmd)
{ WNDCLASSEX wcs; MSG msg; HWND hwnd; wcs.cbSize=sizeof(WNDCLASSEX);
wcs.style=CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
wcs.lpfnWndProc=WinProc;
wcs.cbClsExtra=0;
wcs.cbWndExtra=0;
wcs.hCursor=LoadCursor(hinstance,MAKEINTRESOURCE(IDC_CURSOR1));
wcs.hIcon=NULL;
wcs.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wcs.hInstance=hinstance;
wcs.lpszClassName=WINDOW_CLASS_NAME;
wcs.lpszMenuName=NULL;
wcs.hIconSm=NULL;
if(!RegisterClassEx(&wcs))
return 0;
if(!(hwnd=CreateWindowEx(NULL,WINDOW_CLASS_NAME,"I LOVE YOU",
WS_OVERLAPPEDWINDOW|WS_VISIBLE,0,0,500,500,NULL,NULL,hinstance,NULL)))
return 0; while(GetMessage(&msg,NULL,NULL,NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg); }
return msg.wParam;
}
-----------------------------------
.h代码如下:
-----------------
#define IDC_CURSOR1 200
--------------------------
.rc代码
我的做法是,先用记事本把RC文件打开
然后在里面添加代码:
#include"CURSOR.h"
IDC_CURSOR1 CURSOR hand.cur
或者为 200 CURSOR hand.cur由于编辑器自行添加了许多其他的代码,也不知道自己的代码添加的位置是否恰当
------------------------------------------------
在编译RC文件时老是出错
不明白是该方法不对,还是代码细节出了问题,仅仅想实现自己的光标在窗口上显示
另外,上贴中前辈们给的方法,如使用SetCursor/LoadCursor的方法已经学会,就是想把这种方法学学,请前辈们给解释一下,谢谢了
窗口已经实现,但是光标就没有出现,仍然是WINDOWS的默认光标分别创建:CURSOR.cpp //cpp编译通过
CURSOR.h
CURSOR.rc(使用Resource Script创建,对否?)
并使用资源编辑器画好图标(ID=IDC_CURSOR1,filename=hand.cur)
.cpp代码如下:
----------------------------
#define WIN32_LEAN_MEAN#include<windows.h>
#include<windowsx.h>
#include"CURSOR.h"
#define WINDOW_CLASS_NAME "GOT_ME"LRESULT CALLBACK WinProc(HWND hwnd,UINT msg,WPARAM wparam ,LPARAM lparam)
{ PAINTSTRUCT ps;
HDC hdc; switch(msg)
{
case WM_CREATE:
{
return 0;
}
break; case WM_PAINT:
{
hdc=BeginPaint(hwnd,&ps); EndPaint(hwnd,&ps);
return 0;
}
break; case WM_DESTROY:
{
PostQuitMessage(0);
}
break;
} return DefWindowProc(hwnd,msg,wparam,lparam);
}int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinstace,LPSTR lpCmdLine,int nShowCmd)
{ WNDCLASSEX wcs; MSG msg; HWND hwnd; wcs.cbSize=sizeof(WNDCLASSEX);
wcs.style=CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
wcs.lpfnWndProc=WinProc;
wcs.cbClsExtra=0;
wcs.cbWndExtra=0;
wcs.hCursor=LoadCursor(hinstance,MAKEINTRESOURCE(IDC_CURSOR1));
wcs.hIcon=NULL;
wcs.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wcs.hInstance=hinstance;
wcs.lpszClassName=WINDOW_CLASS_NAME;
wcs.lpszMenuName=NULL;
wcs.hIconSm=NULL;
if(!RegisterClassEx(&wcs))
return 0;
if(!(hwnd=CreateWindowEx(NULL,WINDOW_CLASS_NAME,"I LOVE YOU",
WS_OVERLAPPEDWINDOW|WS_VISIBLE,0,0,500,500,NULL,NULL,hinstance,NULL)))
return 0; while(GetMessage(&msg,NULL,NULL,NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg); }
return msg.wParam;
}
-----------------------------------
.h代码如下:
-----------------
#define IDC_CURSOR1 200
--------------------------
.rc代码
我的做法是,先用记事本把RC文件打开
然后在里面添加代码:
#include"CURSOR.h"
IDC_CURSOR1 CURSOR hand.cur
或者为 200 CURSOR hand.cur由于编辑器自行添加了许多其他的代码,也不知道自己的代码添加的位置是否恰当
------------------------------------------------
#include"CURSOR.h"
IDC_CURSOR1 CURSOR "hand.cur"
或者为 200 CURSOR "hand.cur"
我的做法是,先用记事本把RC文件打开
然后在里面添加代码:
#include"CURSOR.h"
IDC_CURSOR1 CURSOR hand.cur
或者为 200 CURSOR hand.cur现在还有自己编辑RC文件的吗?自定义光标好像不用这么麻烦吧