• 締切済み

「&HFFFF」「&H1A」とは?

はじめまして。 vb6.0の開発をしている者です。 表題にもありますように、「&HFFFF」「&H1A」は何を指しているのでしょうか? 実際は以下のように記述しています。 l = SendMessage("&HFFFF", "&H1A", 0, "windows") Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lparam As String) As Long 初歩的な質問で申し訳ないのですが、なかなかこれだ!という情報を見つけれずにいます。よろしくお願いします。

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.6

#3です。 質問者さんは16進数が分からない訳ではなく、APIに与えた引数の 意味を質問されているものと思います。 再掲ですが、&HFFFFはHWND_BROADCASTのことで、トップレベルの ウィンドウ全体を指しています。&H1AはWM_WININICHANGEと言う メッセージで、「Win.ini」が変更されたことを示します。 つまり、あるプロセスが「通常使うプリンタ」を変更する等、 win.ini(現在はレジストリだが、Windows3.1までは左記ファイル)を 更新したと言うことを他のトップレベル(親ウィンドウを持たない) ウィンドウに通知しています。 通常はシンボル化して使います。 Const HWND_BROADCAST As Long = &HFFFF& Const WM_WININICHANGE As Long = &H1A 特に&HFFFFは最後に&を付けないと-1になってしまい、本来の値の 65535になりません。-1でも良いのですが、厳密には異なります。 しかし、このメッセージを処理するウィンドウプロシージャを寡聞に して見た事がありません。普通、印刷という行為は自動実行ではなく、 人間が明示的に操作するもので、機械的に同時期に異なるプリンタへ 印刷指令が出るようなことは考えられませんよね。それに、万一、 意図したものと違うプリンタに出力されても、やり直せば済む話 ですし・・・ あと、ウィンドウを持たないプロセスがこういう情報を 使うこともないわけではありません。 ということで、殆ど意味の無い行為です。(オマジナイ程度の気休め) 保守に責任が持てないのなら、削除することをお勧めします。

すると、全ての回答が全文表示されます。
  • gcqd75ce
  • ベストアンサー率8% (6/67)
回答No.5

VB2008しかできない初心者の僕です。 進数自体は理解してますか? 10進数は8,9,10で桁が変わりますよね。 16進数は9,a,b,c,d,e,f,10になります。 昔の機械語ではBD15とか462Bとか命令言語であったりしました。 あと、メモリの番地にも使われてましたね。 &H40BD番地の内容参照とか この場合は&h40BD番地の中の値を意味します。 C++とかでは、今でもあるのかな? ではでは。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.4

私も ・vb6.0でプログラムを組んでいて ・開発をしている 方からコンナ質問が出るとは。 ーー &Hは16進表記を示す約束です。 10進に変えてみるとかは回答が出ているが、 別の面から書いてみる。 私の経験から(絶対全てのケースというわけではないが) この16進を2進数ビット列にして保持してみたとき、左(または 右)から何番目のビットがONならこういう処理になる(する)・状態であるという設計図(決め)が言語ソフトの設計者によって決められている場合が多い。ビット位置ごとの意味づけである。 基礎的な(機械語で扱うような)システムになるほどそういう傾向が強い。昔はメモリの節約からだった。メモリもふんだんになった今後は、だんだん文字化が図られよう。しかしビット演算というのも便利な場合がある。 そして各ビットは独立していて、ONにするのは相互に制約なしである。 だからそういう場合は、ビット位置に意味づけした、その設計の解説を読まないとわからない。 この例1Aでは 右から2番目の状態などがON 右から4番目の状態などがON 右から5番目の状態などがON その他はOFFで該当しないとか。 ーー 2進数 11010 16進化 =bin2dec(11010) 26 10進化 =bin2HEX(11010) 1A 16進を2進化 =Hex2bin("1A") 11010 いずれも使っているのはエクセル関数で。

すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1416)
回答No.3

ココ見てね。 http://support.microsoft.com/kb/135387/ja &HFFFF は HWND_BROADCAST、&H1A は WM_WININICHANGE のこと。 あと、VBでAPIのパラメータが文字列の場合、必ずByValが必要です。 よって、lparam As String は誤りで、ByVal lparam As String が 正しい。 恐らく、このSendMessageは不要のはずです。

すると、全ての回答が全文表示されます。
  • laputart
  • ベストアンサー率34% (288/843)
回答No.2

&Hは16進数の事、 FFは 16~2 = 256 です。 十進数 8.. 9.. 10.. 11.. 12.. 16真数 &H08 &H09 &H0A &H0B &H1A = 1*16^1+10 = 26(十進数) &HFFFF = 15*16^3+15*16^2+15*16^1+15 = 65535(十進数)

すると、全ての回答が全文表示されます。
  • joqr
  • ベストアンサー率18% (742/4026)
回答No.1

>、「&HFFFF」「&H1A」は何を指しているのでしょうか? 16進表記です >vb6.0の開発をしている者です ほんとですか??????????????????????????????????????????????????????????????????????????????????????????? 1000000000000% あり得ない質問だと思うのですが?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

すると、全ての回答が全文表示されます。

関連するQ&A