2013-08-25 6 views
0

나는이 작업에 시간을 썼으며 거의 ​​사용했습니다. 그러나, 내가 앓고있는 하나의 최종 문제가 있으며, 그것은 내 피부 아래에 들어가기 시작하고있다. 내 사용자 정의 커서를 내 응용 프로그램에 포함시킬 수 없습니다.C# 사용자 정의 커서 포함

현재 솔루션 탐색기에있는 사용자 지정 커서로 커서를 변경하는 방법은 다음과 같습니다. 그것은 "MyCursor.cur"입니다, 그것은 임베디드 리소스이고 Copy to Output Directory를 Copy new로 설정했습니다.

public static Cursor ActuallyLoadCursor(String path) 
{ 
    return new Cursor(LoadCursorFromFile(path)); 
} 
[System.Runtime.InteropServices.DllImport("user32.dll")] 
private static extern IntPtr LoadCursorFromFile(string fileName); 

내 폼의 생성자 :

Cursor = ActuallyLoadCursor("MyCursor.cur"); 

이 커서를로드하고 그것을 사용하는 나를 위해 일했다 유일한 일이 내가 커서를 설정하는 데 사용하고 코드입니다 내 신청서에. 그러나 이것은 프로그램과 동일한 폴더에 커서를 복사합니다. 나는 운이없는 몇 시간 동안 온라인을 수색했다. 수천 줄의 불필요한 코드없이 복사 할 수있는 방법이 있습니까?

여기에 나를 위해 실패한 나는 시도 다른 솔루션입니다 :

이미지 형식이 유효하지 않습니다에

using (MemoryStream ms = new MemoryStream(Properties.Resources.MyCursor)) 
{ 
    Cursor = new Cursor(ms); 
} 

Cursor = new Cursor(Assembly.GetExecutingAssembly().GetManifestResourceStream("My_Namespace.MyCursor.cur")); 

이러한 결과. 이미지 파일이 손상되었을 수 있습니다. 매개 변수 이름 : 스트림

답변

0

커서가 올바른 형식입니까? 일반 32x32, 1 비트 비 애니메이션 커서 (예 : Visual Studio의 커서 편집기로 작성)입니까? documentation에 따르면 Cursor 클래스는 가장 기본적인 커서 형식 만 지원합니다. 애니메이션/컬러 커서는 Windows API를 사용하여로드 할 수 있습니다.

난 그냥, VS 2012 년 새로운 윈도우 폼 프로젝트를 만들어 새로운 커서를 추가, 자원에 커서를 추가하고이 코드를 사용하기 때문에 내가 부탁 해요 :

Cursor oC; 

using (MemoryStream oMS = new MemoryStream (Properties.Resources.Cursor1)) 
{ 
    oC = new Cursor (oMS); 

    this.Cursor = oC; 
} 
이 잘 작동

을 - 오류 없음. (this은 위 코드의 양식입니다.)

커서가 채워져 있으면 리소스로 포함 할 수 있지만 먼저 LoadCursorFromFile을 사용하여로드하기 전에 디스크에 저장해야합니다. 실행 파일 옆에 커서를 저장하지 마십시오. 사용자의 프로필 폴더에서 실행 중이 아니면 해당 폴더에 새 파일을 만드는 데 필요한 권한이 없을 수 있습니다. 사용자의 임시 폴더 (Path.GetTempFileName 사용)에 임시 파일 이름을 생성하고 거기에 커서 데이터를 저장하십시오. 커서가로드되면 파일을 삭제할 수 있습니다.

+0

위와 같은 오류가 발생합니다. 그것은 1 비트 커서가 아니며 Visual Studio에서 커서 편집기로 생성되지 않았습니다. 어떻게해야합니까? – Dragonphase

+0

@Dragonphase 방금 내 대답을 편집했습니다. 색상 커서가 있으면 'Cursor'클래스를 사용할 수 없습니다. API를 사용해야합니다. – xxbbcc

+0

어느 쪽이든, 나는 커서 편집기를 사용하는 방법을 모른다. 내가 사용할 수있는 유일한 것은 돋보기 다. - NVM, 컨트롤은 숨겨졌습니다. – Dragonphase

관련 문제