HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0301
tktuAPI関数の値の指定について3解決


tktu

リンク

2015/3/1(Sun) 00:49:59|NO.67583

HSPでのAPI関数の利用時の、引数の値の指定についてわからないことが
あったので、質問させていただきます。

最近はじめてHSPでAPI関数を利用してみたのですが、

#include "user32.as" MessageBox hwnd,"Error","error",MB_YESNO
上の、「[はい]と[いいえ]の各プッシュボタンが表示されたメッセージボックス」を
表示するプログラムを書いてみましたが、
p4に「MB_YESNO」と記述した筈なのに、
表示されるメッセージボックスは
「[はい]と[いいえ]の各プッシュボタンが表示されたメッセージボックス」ではなく
「[OK]ボタンが表示されただけのメッセージボックス」になってしまいます。

http://www.geocities.co.jp/Playtown-Yoyo/6130/hsp/hsp-win32api.html
上のサイトを参考に書いてみたのですが、
上のサイトにある「[OK]ボタンが表示されただけのメッセージボックス」を表示するサンプルは

   //引用 #include "user32.as" MessageBox hwnd, "ボックス内", "タイトル部分", 0 mes stat
と、p4が0と、数字になっています。

この場合のp4の値の英文字版(?)は「MB_OK」にあたるはずですが、
HSPでのこのp4の指定は数字で指定する必要があるのでしょうか?

また、MSDNのMessageBoxのページを見ても、
表の「値」の欄は、0や1などの数字ではなく、
「MB_OK」や「MB_YESNO」などの英文字版(?)で、
数字での指定の値が記載されていません。

数字での指定の値を知る方法はありますでしょうか?


最終的に知りたい事は、
・HSPでのAPIの「値」の指定は数字で指定する必要があるのか。
 (「MB_OK」などの英文字版(?)で指定はできるか。)
・数字での値の 意味([OK]だけ・[はい][いいえ]のふたつ、などの「効果」)
 を知る方法はあるか。

の2点です。
知っている人がいたら、教えていただければ嬉しいです。



この記事に返信する


kanahiron

リンク

2015/3/1(Sun) 01:01:56|NO.67584

C言語などではMB_YESNOはマクロなどで定義されています
HSPでは定義されていないので数値を直接指定するか、マクロで置き換えてあげればいいのです
「define MB_YESNO」と検索すれば他言語のソースが見つかると思います
↑のままgoogleで検索すると2番目のサイトに

#define MB_OK 0x00000000L #define MB_OKCANCEL 0x00000001L #define MB_ABORTRETRYIGNORE 0x00000002L #define MB_YESNOCANCEL 0x00000003L #define MB_YESNO 0x00000004L #define MB_RETRYCANCEL 0x00000005L
とあります
HSPで16進数を表すには0x形式で終わりのLは要らないので

#define MB_OK 0x00000000 #define MB_OKCANCEL 0x00000001 #define MB_ABORTRETRYIGNORE 0x00000002 #define MB_YESNOCANCEL 0x00000003 #define MB_YESNO 0x00000004 #define MB_RETRYCANCEL 0x00000005
とソースの最初の方にかけばokです



VON

リンク

2015/3/1(Sun) 07:46:22|NO.67586




tktu

リンク

2015/3/1(Sun) 09:31:14|NO.67590

>>kanahironさん

なるほど、HSPでは定数は定義されていないので、
自分で定数を数値に割り当てる必要があるんですね。
あと、数値の調べ方も教えてくれてありがとうございます。

>>VONさん

過去スレに同じような質問がありましたね;
参考になりました、ありがとうございます。



みなさんのおかげで解決しました。



ONION software Copyright 1997-2021(c) All rights reserved.