Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
VBAでワークシート部分のgetpixelしたいです
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30608#CommentId84513
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2021/6/6 21:15:10
ごめんなさい。一部訂正します。
[2021/6/6 18:39:36]への訂正
>> #Else
>> Private Declare PtrSafe Function CreateDCW Lib ……
VBA7 未満での PtrSafe は余計でしたね。
取り除いておいてください。
[2021/6/6 18:40:17]への訂正と追記
> ' OLE_COLOR … 00BBGGRR な 24bit 色(もしくは 800000nn で管理されるシステム色)
> ' COLORREF … 00RRGGBB な 24bit 色
> ' ARGB … AARRGGBB な 32bit 色
書き間違い。orz
COLORREF は 00RRGGBB ではなく 00BBGGRR です!
(なので、ActiveCell.Interior.Color にもそのまま渡せます)
GetPixel の戻り値を意図的に As OLE_COLOR と書いたのも、
VB の 24bit 色と同じ並びであるからのことだったのに、我ながら何やってんだろう…。orz
> あと、Long と LongPtr の使い分けに統一感が無いので、そこも整理した方が良さそうです。
32bit 環境だと、Long も LongPtr も OLE_HANDLE も差が無いのですが、
64bit 環境だと意味合いが変わってきます。
自分の場合、VBA でハンドルやポインタを扱うときは
VBA7 以降 … As LongPtr (32bit なら As Long 相当、64bit なら As LongLong 相当)
VBA7 未満 … As OLE_HANDLE (As Long と同義だが、意図的にこうしている)
で統一するようにしています。
なお、HBITMAP や HICON は void* 相当であるため、
Win32 では 32bit サイズ、Win64 では 64bit サイズですが、
OLE_HANDLE は Win32/Win64 いずれでも 32bit サイズなので注意。