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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0415
souコンボボックス4解決


sou

リンク

2011/4/15(Fri) 18:32:07|NO.38415

コンボボックスを作りたいのですが

; コンボボックス監視サンプルスクリプト (by Kpan) ; WM_COMMAND oncmd gosub *command, $111 objsize 100 combox a, 60, "胡瓜\n林檎\n人参\n葡萄\n茄子\n南瓜\n玉葱" hCombox = objinfo (stat, 2) stop *command ; lparamにはコンボボックスのハンドルが返る if lparam = hCombox { ; wparamの上位ワードには通知コードが返る wNotifyCode = wparam >> 16 & $FFFF ; 通知コード1の場合は選択状態変化 if wNotifyCode = 1 { ; 現在選択中のインデックス番号取得 (CB_GETCURSEL) ; (変数aは利用しません) sendmsg hCombox, $147 title "インデックス番号: "+stat } } return

このスクリプトでは項目の中から選ぶとタイトルバー(違うかもしれません)に今選んでいる
番号が表示されるんですが、これに実行ボタンをつけて項目内から選び実行ボタンを押すと
その項目内容にあったプログラムが起動するようにしたいのですがどうすればいいでしょうか?
(例)メモ帳と電卓とペイントと言う項目があってその項目内のメモ帳を選ぶと
メモ帳が起動する。のような感じです。
よろしくお願いします!



この記事に返信する


Cookies

リンク

2011/4/15(Fri) 19:06:13|NO.38417

選んでいるのはどこかを取得するのは、
sendmsg hCombox, $147
title "インデックス番号: "+stat
なわけです。 sendmsg hCombox, $147をすると、statにインデックス番号が返ってきます。
(ま、こんな面倒なことしなくてもcomboxの第一引数の変数にちゃんと入ってるんですけどね。)

実行ボタンを作って、その先のラベル内でインデックス番号を調べて、
それに対応したのをexecで起動させればできます。

indexにインデックス番号を入れたとしたら、実行ボタン先で、
if index = 0 : exec "notepad.exe"//indexが0("メモ帳"を選んでいた)ならメモ帳(notepad.exe)起動
if index = 1 : exec "calc.exe"//〃が1("電卓"を〃)なら起動。
みたいな感じで並べていけばよいです。
もっと項目が増えてきたらswitch&case&swendなど使ってもよいでしょう。

ちなみにペイントのファイル名は"mspaint.exe"です。



sou

リンク

2011/4/15(Fri) 20:28:28|NO.38420

Cookiesさん
ありがとうございます。
Cookiesさんの知恵を借りて自分でスクリプトを作ってみました!

; コンボボックス監視サンプルスクリプト (by Kpan) ; WM_COMMAND oncmd gosub *command, $111 objsize 100 combox a, 60, "胡瓜\n林檎\n人参\n葡萄\n茄子\n南瓜\n玉葱" hCombox = objinfo (stat, 2) pos 1,21 button "実行",*zi stop *command ; lparamにはコンボボックスのハンドルが返る if lparam = hCombox { ; wparamの上位ワードには通知コードが返る wNotifyCode = wparam >> 16 & $FFFF ; 通知コード1の場合は選択状態変化 if wNotifyCode = 1 { ; 現在選択中のインデックス番号取得 (CB_GETCURSEL) ; (変数aは利用しません) sendmsg hCombox, $147 title "インデックス番号: "+stat } } return *zi sendmsg hCombox, $147 title "インデックス番号: "+index if index = 0 : exec "notepad.exe"//indexが0("メモ帳"を選んでいた)ならメモ帳(notepad.exe)起動 if index = 1 : exec "calc.exe"//〃が1("電卓"を〃)なら起動。 stop

でもこれだと何を選択してもメモ帳になってしまいます・・・
どうすれば解決できますか?



Cookies

リンク

2011/4/15(Fri) 20:34:29|NO.38421

そうですね。肝心のindexへの代入作業が抜けてます。
sendmsg hCombox, $147
をすると「statに」返ってくるのです。
だから、indexへstatを代入する必要があります。
代入演算子は知ってますか?「=」です。

sendmsg hCombox, $147
の直後にindexへstatを代入する作業を入れてみてください。



sou

リンク

2011/4/16(Sat) 09:21:31|NO.38428

Cookiesさん
ありがとうございました!
sendmsg hCombox, $147の直後にindexへstatを代入をしたら
上手く動きました!



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