ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月28日(日) 04:28

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 6 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 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


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 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)
これでコンパイルできました。
迷惑をかけましてすみませんでした。


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年11月18日(金) 19:49 
オフライン

登録日時: 2005年5月31日(火) 17:59
記事: 899
お住まい: 東京都
> hCur1 = LoadCursorFromFile(Buf + "cross.cur")

文字列に対して + 演算子で連結するときには、
左右のどちらかがString型である必要があります。
そのときだけコンパイラは文字列連結を行うようになっています。

そうでない場合、両辺のポインタ値を整数演算として加算を行うと思われます。
(そしてその結果としてアクセス違反となります)


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2005年11月18日(金) 20:07 
> 文字列に対して + 演算子で連結するときには、
> 左右のどちらかがString型である必要があります。
> そのときだけコンパイラは文字列連結を行うようになっています。
>
> そうでない場合、両辺のポインタ値を整数演算として加算を行うと思われます。
> (そしてその結果としてアクセス違反となります)

イグトランスさん。
ありがとうございます。
わかりました。
でも、すぐに忘れてしまうような気がしますが!
また、よろしくお願いします。


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年11月22日(火) 12:07 
オフライン

登録日時: 2005年6月01日(水) 23:27
記事: 82
お住まい: 北海道札幌市
> > 文字列に対して + 演算子で連結するときには、
> > 左右のどちらかが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等で読み込んだほうが
よろしいです。環境によっては使用しているカーソルも違いますので。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 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等で読み込んだほうが
> よろしいです。環境によっては使用しているカーソルも違いますので。

ノッチさん、有難う御座います。
参考にさせていただきます。
またよろしく、お願いします。


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 6 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: Semrush [Bot] & ゲスト[24人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean