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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
1110
窓口メッセージボックスのスタイル変更2解決


窓口

リンク

2009/11/10(Tue) 07:06:25|NO.28804

「右端で折り返す」のメニューをクリックしたときにメッセージボックスの右端折り返しと非折り返しを切り替えるスクリプトを作っているのですがどうもうまくいきません。
(windowsのメモ帳の機能の一つです。)
出来れば、ウインドウメッセージや、win32関数を使って切り替えたいと思っているのですが
何か方法はないでしょうか?

もしなければmesboxを破棄して、再びウインドウに配置しなおす事も考えていますが
出来ればもう少しスマートな方法で実現したいと思っています。


#include "user32.as" #define ES_AUTOHSCROLL $00000080 #define WS_HSCROLL $00100000 #define GWL_STYLE $FFFFFFF0 #define ctype p(%1,%2,%3=GetStat) str(%1)+" : "+ str(GetStat & %2) #define get(%1=-16,%2=GetStat) : GetWindowLong h , %1 : %2 = stat #define set(%1=-16,%2,%3=GetStat) : SetWindowLong h , %1 , %3 %2 ;mesboxのyサイズ #define sizey 60 screen 0,700,700 mes "*****************************************************" color ,,255 : mes "右端を折り返すmesboxから >> 右端を折り返さないmesboxへ変更" : color mes "*****************************************************" ;メッセージbox表示 msg1 = "スタイル変更前" mesbox msg1 , 300 , sizey,1 : H = objinfo_hwnd(stat) gosub *printstat msg2 = "スタイル変更後" mesbox msg2, 300 ,sizey,1 : H = objinfo_hwnd(stat) GetWindowLong H , GWL_STYLE SetWindowLong h , GWL_STYLE , stat | ES_AUTOHSCROLL | WS_HSCROLL ; 水平スクロール有効 : 水平スクロールバーを表示 gosub *printstat color ,,255 pos 300,208 : mes ";←このようスタイルは変更されているようですが\n;←メッセージボックスには反映されていない状態です" stop ;メッセージ表示 *printstat get mes P("ES_AUTOHSCROLL",ES_AUTOHSCROLL) mes P("WS_HSCROLL",WS_HSCROLL) return



この記事に返信する


a

リンク

2009/11/10(Tue) 12:49:44|NO.28806

ウィンドウハンドルを調べてみればわかりますが、
メモ帳は右端に折り返すを切り替えたときに作り直しているようですので
それ以上スマートなやり方はないと思います。



窓口

リンク

2009/11/10(Tue) 18:18:59|NO.28812

有難うございます。解決しました。



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