ページ 11

WinAPI OCR_HELP定数が使えない

Posted: 2012年6月18日(月) 21:05
by MoNoQLoREATOR
このページを見る限り、マウスカーソルの形状を疑問符付きのものにするには OCR_HELP という定数を使うはずなのですが、定義されていない識別子だと言われてしまいました。
VisualC++2008ExpressEditionを使用しております。

以下ソースコードとエラー文です。

コード:

#define OEMRESOURCE
#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, int ){
	ChangeWindowMode( TRUE );
	SetWindowText( "DxLib:" DXLIB_VERSION_STR );
	if ( DxLib_Init( ) == -1 ) return -1;
	SetMouseDispFlag( TRUE );
	int white = GetColor( 255, 255, 255 );
	SetDrawScreen( DX_SCREEN_BACK );


	SetClassLongPtr(GetMainWindowHandle(), GCLP_HCURSOR, (LONG_PTR)(HCURSOR)LoadImage(NULL, MAKEINTRESOURCE(OCR_NORMAL), IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE | LR_SHARED) );	//○
	SetClassLongPtr(GetMainWindowHandle(), GCLP_HCURSOR, (LONG_PTR)(HCURSOR)LoadImage(NULL, MAKEINTRESOURCE(OCR_HELP), IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE | LR_SHARED) );	//×


	while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) {
		ClearDrawScreen( );
		DrawString( 0, 0, "changed", white);
		ScreenFlip( );
	}

	DxLib_End( );
	return 0;
}

コード:

------ ビルド開始: プロジェクト: CursorTest, 構成: Debug Win32 ------
コンパイルしています...
main.cpp
c:\documents and settings\administrator\my documents\visual studio 2008\projects\cursortest\main.cpp(14) : error C2065: 'OCR_HELP' : 定義されていない識別子です。
ビルドログは "file://c:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\CursorTest\Debug\BuildLog.htm" に保存されました。
CursorTest - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
どうすればよいのでしょうか。
ご教授よろしくお願いいたします。

Re: WinAPI OCR_HELP定数が使えない

Posted: 2012年6月18日(月) 21:31
by MoNoQLoREATOR
自己解決しました。
片っ端からそれっぽい数値を放り込む作業を行なってみると、見事 32651 でクリティカルヒットしました(笑)

コード:

#define OEMRESOURCE
#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, int ){
	ChangeWindowMode( TRUE );
	SetWindowText( "DxLib:" DXLIB_VERSION_STR );
	if ( DxLib_Init( ) == -1 ) return -1;
	SetMouseDispFlag( TRUE );
	int white = GetColor( 255, 255, 255 );
	SetDrawScreen( DX_SCREEN_BACK );

	//32512:normal
	//32513:ibeam
	//32514:wait
	//32515:cross
	//32516:OCR_UP;
	//32642:OCR_SIZENWSE;
	//32643:OCR_SIZENESW;
	//32644:OCR_SIZEWE;
	//32645:OCR_SIZENS;
	//32646:OCR_SIZEALL;

	//32648:no
	//32649:hand
	//32650:appstarting
	//32651:help!!!!!!!



	SetClassLongPtr(GetMainWindowHandle(), GCLP_HCURSOR, (LONG_PTR)(HCURSOR)LoadImage(NULL, MAKEINTRESOURCE(32651), IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE | LR_SHARED) );	//○
	//SetClassLongPtr(GetMainWindowHandle(), GCLP_HCURSOR, (LONG_PTR)(HCURSOR)LoadImage(NULL, MAKEINTRESOURCE(OCR_HELP), IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE | LR_SHARED) );	//×


	while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) {
		ClearDrawScreen( );
		DrawString( 0, 0, "changed", white);
		ScreenFlip( );
	}

	DxLib_End( );
	return 0;
}
忘れられた 32647 のことが気になって夜も眠れない・・・。

Re: WinAPI OCR_HELP定数が使えない

Posted: 2012年6月18日(月) 23:32
by ISLe
OCR_HELPに関しては、Windows Vista以降、状況依存ヘルプが廃止されたのでこれからは使うなということなのでしょうかね。
マウスのプロパティを開いてポインタータブを見るとしっかりありますけどね。

Visual C++ 2010 Express付属のWindows SDK 7.0Aと単独のWindows SDK 7.1に入っているWinUser.hには、32647の記述がありましたよ。