ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
ポテト
#1
投稿記事
by ポテト » 2005年11月16日(水) 13:48
再び、宜しくお願いします。
バージョンAB4.04から
バージョンAB4.11.01にて
カーソルの変更が思ったように行きません。
AB4.04ではhCur1がクロスカーソル
hCur2がクロスと手首
AB41101ではhCur1が砂時計
hCur2が通常の矢印です
また砂時計に戻せません
コード: 全て選択
Dim Buf[MAX_PATH] As Byte 'パスバッファ(マウス変更時)
Dim hDC As Long 'デバイスコンテキスト
Dim hOldCur As HCURSOR 'マウスカーソルハンドル旧
Dim hCur1 As HCURSOR 'マウスカーソルハンドル1(+)
Dim hCur2 As HCURSOR 'マウスカーソルハンドル2(+手首)
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
'デバイスコンテキスト取得
hDC = GetDC(hMainWnd)
'Windowsのデレクトリを取得
GetWindowsDirectory(Buf, MAX_PATH)
'カーソルのデレクトリをBufに追加
lstrcat(Buf, "\Cursors\")
'クロスカーソルハンドル取得
hCur1 = LoadCursorFromFile(Buf+"cross.cur")
'クロス手カーソルハンドル取得
hCur2 = LoadCursorFromFile(Buf+"hcross.cur")
'クロス手カーソルに設定
hOldCur = SetClassLong(hMainWnd, GCL_HCURSOR, hCur2)
End Sub
ポテト
#2
投稿記事
by ポテト » 2005年11月18日(金) 08:09
解決しました。
バージョンAB4.11.02にてアクセス違反が出たので、
理由はわかりませんが、
コード: 全て選択
hCur1 = LoadCursorFromFile(Buf+"cross.cur")
ここでアクセス違反が出たので
コード: 全て選択
Dim BufCur1[MAX_PATH] As Byte
lstrcat(BufCur1, Buf)
lstrcat(BufCur1, "cross.cur")
hCur1 = LoadCursorFromFile(BufCur1)
これでコンパイルできました。
迷惑をかけましてすみませんでした。
イグトランス
記事: 899 登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:
#3
投稿記事
by イグトランス » 2005年11月18日(金) 19:49
> hCur1 = LoadCursorFromFile(Buf + "cross.cur")
文字列に対して + 演算子で連結するときには、
左右のどちらかがString型である必要があります。
そのときだけコンパイラは文字列連結を行うようになっています。
そうでない場合、両辺のポインタ値を整数演算として加算を行うと思われます。
(そしてその結果としてアクセス違反となります)
ポテト
#4
投稿記事
by ポテト » 2005年11月18日(金) 20:07
> 文字列に対して + 演算子で連結するときには、
> 左右のどちらかがString型である必要があります。
> そのときだけコンパイラは文字列連結を行うようになっています。
>
> そうでない場合、両辺のポインタ値を整数演算として加算を行うと思われます。
> (そしてその結果としてアクセス違反となります)
イグトランスさん。
ありがとうございます。
わかりました。
でも、すぐに忘れてしまうような気がしますが!
また、よろしくお願いします。
ノッチ
記事: 82 登録日時: 2005年6月01日(水) 23:27
お住まい: 北海道札幌市
#5
投稿記事
by ノッチ » 2005年11月22日(火) 12:07
> > 文字列に対して + 演算子で連結するときには、
> > 左右のどちらかがString型である必要があります。
> > そのときだけコンパイラは文字列連結を行うようになっています。
> >
> > そうでない場合、両辺のポインタ値を整数演算として加算を行うと思われます。
> > (そしてその結果としてアクセス違反となります)
>
> イグトランスさん。
> ありがとうございます。
> わかりました。
> でも、すぐに忘れてしまうような気がしますが!
> また、よろしくお願いします。
こんにちは。たまに出没するノッチです。
今回の投稿内容とは直接関係ないですが、システムカーソルをロードする時は
LoadCursor(NULL,IDC_ARROW)
のようにすると簡単にカーソルを取得できます。
取得するカーソルは以下を参照してIDC_ARROWの部分を変更して下さい。
'IDC_APPSTARTING 標準矢印カーソルおよび小型砂時計カーソル
'IDC_ARROW 標準矢印カーソル
'IDC_CROSS 十字カーソル
'IDC_IBEAM アイビーム (縦線) カーソル
'IDC_ICON 現在は使われません
'IDC_NO 禁止カーソル
'IDC_SIZE 現在は使われません
'IDC_SIZEALL 4 方向矢印カーソル
'IDC_SIZENESW 斜め左下がりの両方向矢印カーソル
'IDC_SIZENS 上下両方向矢印カーソル
'IDC_SIZENWSE 斜め右下がりの両方向矢印カーソル
'IDC_SIZEWE 左右両方向矢印カーソル
'IDC_UPARROW 垂直の矢印カーソル
'IDC_WAIT 砂時計カーソル
システムカーソルは.curファイルから直接読み込むよりLoadCursor等で読み込んだほうが
よろしいです。環境によっては使用しているカーソルも違いますので。
ポテト
#6
投稿記事
by ポテト » 2005年11月24日(木) 09:06
> 今回の投稿内容とは直接関係ないですが、システムカーソルをロードする時は
>
> LoadCursor(NULL,IDC_ARROW)
>
> のようにすると簡単にカーソルを取得できます。
> 取得するカーソルは以下を参照してIDC_ARROWの部分を変更して下さい。
>
> 'IDC_APPSTARTING 標準矢印カーソルおよび小型砂時計カーソル
> 'IDC_ARROW 標準矢印カーソル
> 'IDC_CROSS 十字カーソル
> 'IDC_IBEAM アイビーム (縦線) カーソル
> 'IDC_ICON 現在は使われません
> 'IDC_NO 禁止カーソル
> 'IDC_SIZE 現在は使われません
> 'IDC_SIZEALL 4 方向矢印カーソル
> 'IDC_SIZENESW 斜め左下がりの両方向矢印カーソル
> 'IDC_SIZENS 上下両方向矢印カーソル
> 'IDC_SIZENWSE 斜め右下がりの両方向矢印カーソル
> 'IDC_SIZEWE 左右両方向矢印カーソル
> 'IDC_UPARROW 垂直の矢印カーソル
> 'IDC_WAIT 砂時計カーソル
>
> システムカーソルは.curファイルから直接読み込むよりLoadCursor等で読み込んだほうが
> よろしいです。環境によっては使用しているカーソルも違いますので。
ノッチさん、有難う御座います。
参考にさせていただきます。
またよろしく、お願いします。