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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0508
可憐タイトルバーの?マークを追加したい6解決


可憐

リンク

2015/5/8(Fri) 01:09:35|NO.69058

タイトルバーに?マークのボタンを追加したいです。


http://gyazo.com/369dd6628d255411e3fffed8cefd4055
いわゆるヘルプページ等に飛ばすボタンです。
いろいろググったのですが見つからなかったので質問させて頂きました。
何かわかる方、ヒントでも良ければ教えてください。
よろしくお願いしますm(_ _)m



この記事に返信する


名無し

リンク

2015/5/8(Fri) 03:10:47|NO.69064

いわゆる拡張スタイルの一つ(WS_EX_CONTEXTHELP)だと思われます>目的のウィンドウ
ただ、デフォルトのウィンドウだと、最大・最小化ボタンがある
(WS_MINIMIZEBOXが有効)なので、WS_EX_CONTEXTHELPを付け足すことができません
だから、WS_MINIMIZEBOXを解除してからWS_EX_CONTEXTHELP属性を付けることになります
……具体的にはこんな感じ。iparamの具体的な使い方誰か教えてくださいorz


#include "user32.as" #const GWL_STYLE -16 #const GWL_EXSTYLE -20 #const WS_MINIMIZEBOX 0x00020000 #const WS_EX_CONTEXTHELP 0x00000400 #const WM_HELP 0x0053 ;最大/最小化ボタン削除 GetWindowLong hwnd, GWL_STYLE SetWindowLong hwnd, GWL_STYLE, stat ^ WS_MINIMIZEBOX ;ヘルプボタン追加 GetWindowLong hwnd, GWL_EXSTYLE SetWindowLong hwnd, GWL_EXSTYLE, WS_EX_CONTEXTHELP ;ヘルプボタンを押した後に何かオブジェクトを押すのを待つ oncmd gosub *HelpMessage, WM_HELP input hoge stop *HelpMessage ;wParamは常に0、iparamはHELPINFO構造体のアドレスを表す dialog "押されました。\nwparam = " + wparam + "\niparam = " + iparam return



ぜろ

リンク

2015/5/8(Fri) 09:57:26|NO.69065

HELPINFOのアドレスが入るのは lparam ですね。
iparam は割り込み時のメッセージID(0x0053)ですよ。



名無し

リンク

2015/5/8(Fri) 12:00:36|NO.69066

lparamの存在をすっかり忘れてたでござる……じゃあこうなるかな?


#include "user32.as" #const GWL_STYLE -16 #const GWL_EXSTYLE -20 #const WS_MINIMIZEBOX 0x00020000 #const WS_EX_CONTEXTHELP 0x00000400 #const WM_HELP 0x0053 #const HELPINFO_MENUITEM 0x0002 #const HELPINFO_WINDOW 0x0001 sdim output, 32000 ;最大/最小化ボタン削除 GetWindowLong hwnd, GWL_STYLE SetWindowLong hwnd, GWL_STYLE, stat ^ WS_MINIMIZEBOX ;ヘルプボタン追加 GetWindowLong hwnd, GWL_EXSTYLE SetWindowLong hwnd, GWL_EXSTYLE, WS_EX_CONTEXTHELP ;ヘルプボタンを押した後に何かオブジェクトを押すのを待つ oncmd gosub *HelpMessage, WM_HELP mesbox output, 400, 400, 0 stop *HelpMessage ;wParamは常に0、lparamはHELPINFO構造体のアドレスを表す dupptr cbSize, lparam, 4 dupptr iContextType, lparam + 4, 4 dupptr iCtrlId, lparam + 8, 4 dupptr hItemHandle, lparam + 12, 4 dupptr dwContextId, lparam + 16, 4 dupptr MousePos_x, lparam + 20, 4 dupptr MousePos_y, lparam + 24, 4 ;結果表示 output = "HELPINFO構造体のサイズ:" + cbSize + "\n" if(iContextType == HELPINFO_MENUITEM){ output += "ヘルプのコンテキストの種類:メニュー項目\n" output += "メニュー項目のID:" + iCtrlId + "\n" output += "メニュー項目のID:" + hItemHandle + "\n" }else{ output += "ヘルプのコンテキストの種類:コントロールまたはウィンドウ\n" output += "コントロールまたはウィンドウのID:" + iCtrlId + "\n" output += "コントロールまたはウィンドウのハンドル:" + hItemHandle + "\n" } output += "コントロールまたはウィンドウのコンテキストID:" + dwContextId + "\n" output += "マウス座標:(" + MousePos_x + ", " + MousePos_y + ")\n" objprm 0, output return



可憐

リンク

2015/5/8(Fri) 20:54:17|NO.69071

ありがとうございます。
ちなみに?ボタンをクリックした後に何か手動で動作しなければ動かないのですね。。
?ボタンの変わりになるように、タイトルバーの領域にボタンを追加しようと思ったんですが
それも厳しいみたいですねー
何か方法はないのですかね。。



tds12

リンク

2015/5/8(Fri) 21:15:19|NO.69072

このようなことでしょうか。

#include "user32.as" #const GWL_STYLE -16 #const GWL_EXSTYLE -20 #const WS_MINIMIZEBOX 0x00020000 #const WS_EX_CONTEXTHELP 0x00000400 #const WM_HELP 0x0053 #define WM_SYSCOMMAND $00000112 #define SC_CONTEXTHELP $0000F180 ;最大/最小化ボタン削除 GetWindowLong hwnd, GWL_STYLE SetWindowLong hwnd, GWL_STYLE, stat ^ WS_MINIMIZEBOX ;ヘルプボタン追加 GetWindowLong hwnd, GWL_EXSTYLE SetWindowLong hwnd, GWL_EXSTYLE, WS_EX_CONTEXTHELP //タイトルバーからコマンドが送られたらsyscmdを呼ぶ oncmd gosub *syscmd, WM_SYSCOMMAND input hoge stop *syscmd //システムコマンド if wparam == SC_CONTEXTHELP{ //コンテキストヘルプ mes "ヘルプ?" exec "http://hsp.tv/",16 } return

勝手にスクリプトを改造してしまいました。
名無しさん、すみません。



可憐

リンク

2015/5/8(Fri) 21:25:46|NO.69073

WM_SYSCOMMAND
というものがあるのですね
ありがとうございます!
解決しました(^^)ノ



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