環境 VB6.0 WindowsXP PRO
はじめまして。
自ウィンドウをサブクラス化して
ウィンドウメッセージがWM_SIZEの時のlParamメッセージは
Long値ですが、VC等で上位下位に切り分けるLOWORD,HIWORD
みたいな処理はあるのでしょうか。
御教授お願いします。
おそらくないです。自作してください。
Blueさん、ご返答ありがとうございます。
自作になるのですか。
コールバック関数内で処理をしたいので重い処理は省きたかった
のですが・・・
自身ないので突っ込み歓迎で載せておきます。
Dim HIWORD As Long , LOWORD As Long , Vstr As String
Vstr = Hex(lParam)
If Len(Vstr) < 8 Then Vstr = String(8 - Len(Vstr), "0") & Vstr
HIWORD = CLng("&H" & Mid(Vstr, 1, 4))
LOWORD = CLng("&H" & Mid(Vstr, 5, 4))
まだ、どんな状況でも対応できてるか心配ですが、ご指摘等ありましたら
お願いします。
文字列にする必要はないのでは?
単純にビット演算すればよさそうです。
参考
http://hp.vector.co.jp/authors/VA014162/hitch/bit/bit.htm
バイト・ワード・ダブルワードの話
の
3.Long型をInteger型に切り分ける
のところ。
まとめるとこんな感じでしょうか
Dim b As Long, c As Long
Dim aw As Long, bw As Long, cw As Long
c = &HF1F1 '上位
b = &HD1D1 '下位
'下位と上位を合わせる
aw = c * 65536
aw = aw Or (b And 65535)
'下位と上位を分離
bw = aw And 65535
cw = ((aw And &HFFFF0000) \ 65536) And 65535
MsgBox Hex(cw) & "-" & Hex(bw)
Blueさん、VB梅さんありがとうございます。
大変勉強になりました。
御協力ありがとうございました。
ツイート | ![]() |