SendMessage等APIに対してのパラメータに付いて色々調べていたのですが
サンプルプログラムによってパラメータの書き方が違います。
SendMessage(hWnd, WM_CLOSE, 0&, 0&)と書かれているサイトもあれば
SendMessage(hWnd, WM_CLOSE, 0, 0)と&が無いところもあります。
また、
SendMessage(hWnd, WM_CLOSE, &0, &0)と書かれていた所もありました。
この&は一体何を意味するのでしょうか?
&は長整数型(Long)の型宣言文字です。
このほかにも
%:Integer
!:Sinble
#:Double
@:Currency
などがあります。
補足ですが、
> SendMessage(hWnd, WM_CLOSE, &0, &0)
ByVal 0& なら、私の好きな NULLポインタ の意味合いになります。
rakiさん、返答ありがとうございます。
こんな宣言方法があった事を初めて知りました。
&H10もそういった意味なのかな・・・?
0をLong型にする意味がよく分かりません。
また、この型宣言文字を、0の前に付けても後に付けても意味は同じなのでしょうか?
先ほどの発言を書いてる間に・・。
java.lang.Nullpoさん、返答ありがとうございます。
殆どのVBでのサンプルでは、API宣言でByVALと指定してありましたが
NULLポインタにする意味はあるのでしょうか?
質問ばかりで申し訳ないのですが、検索下手なのか
他に参考になるサイト等が見つからず、気になってしょうがありません。
&H,&O(=&)はそれぞれ16進数、8進数表記の意味です。
検索する前にせっかくMSDNライブラリが附属しているのだから
そこの「コーディングの基礎」あたりを読んでみてはいかがでしょう。
> 殆どのVBでのサンプルでは、API宣言でByVALと指定してありましたが
> NULLポインタにする意味はあるのでしょうか?
APIのWM_CLOSEについて調べてみました?
WM_CLOSEメッセージの場合は後ろの2つの引数は使用されません。
普通に0を入れても良いのですが、NULLポインタにすることで「使用されない」
ことを明示しておくと、0を指定しているのか、使用しない引数なのかが
ソースコードを後で見返した時に分かりやすいですよ。
ツイート | ![]() |