|
|
|
2012/7/23(Mon) 22:20:29|NO.47859
連日質問してしまい申し訳ありません。
このページ
http://lhsp.s206.xrea.com/hsp_object2.html
に載っている表示色変更と編集無効化ですが、(出来れば枠無しも含めて)同時に適用することは可能ですか?
簡単に作ってみたのですが、どうも上手くいきません。
#uselib "user32"
#func SetWindowLong "SetWindowLongA" int, int, int
#func SetWindowPos "SetWindowPos" int, nullptr, nullptr, nullptr, nullptr, nullptr, int
#uselib "gdi32"
#func CreateSolidBrush "CreateSolidBrush" sptr
#func DeleteObject "DeleteObject" sptr
#func SetBkColor "SetBkColor" sptr,sptr
#func SetBkMode "SetBkMode" sptr,sptr
#func SetTextColor "SetTextColor" sptr,sptr
#define ctype RGB(%1,%2,%3) (%1 | %2 << 8 | %3 << 16)
onexit *exit
ooncmd gosub *ctlcoloredit, $133
input SongTitle, 390, 24
nInput = stat
hInput = objinfo_hwnd(nInput)
sendmsg hInput, $CF, 1
CreateSolidBrush RGB($18, $18, $18)
hBrush = stat
SetWindowLong hInput, -20, $0
SetWindowPos hInput, $27
stop
*ctlcoloredit
if hInput = lparam {
SetBkMode wparam, 1
SetTextColor wparam, RGB($FF, $FF, $FF)
SetBkColor wparam, RGB($18, $18, $18)
return hBrush
}
return
*exit
DeleteObject hBrush
end
分かる方がいらっしゃいましたらご教授お願いします。
| |
|
2012/7/23(Mon) 23:12:27|NO.47863
良くわかってないけど自分が使ったてた時の状態にしてみました
15行目はいかがなされたか。
#uselib "user32"
#func SetWindowLong "SetWindowLongA" int, int, int
#func SetWindowPos "SetWindowPos" int, nullptr, nullptr, nullptr, nullptr, nullptr, int
#include "gdi32.as"
#define ctype RGB(%1,%2,%3) (%1 | %2 << 8 | %3 << 16)
onexit *exit
oncmd gosub *ctlcoloredit, $138
input SongTitle, 390, 24
hInput = objinfo(stat, 2)
sendmsg hInput, $CF, 1
SetWindowLong hInput, -20, $0
SetWindowPos hInput, $27
CreateSolidBrush RGB($FF, $18, $18)
hBrush = stat
stop
*ctlcoloredit
if hInput = lparam {
SetBkMode wparam, 1
SetTextColor wparam, RGB($FF, $FF, $FF)
;SetBkColor wparam, RGB($18, $18, $18)
return hBrush
}
return
*exit
DeleteObject hBrush
end
|
|
2012/7/23(Mon) 23:54:56|NO.47869
全部そのURL先に書いてある
編集可能と不可でWMが変るのを見逃してるだけ
#uselib "user32"
#func SetWindowLong "SetWindowLongA" int, int, int
#func SetWindowPos "SetWindowPos" int, nullptr, nullptr, nullptr, nullptr, nullptr, int
#uselib "gdi32"
#func CreateSolidBrush "CreateSolidBrush" sptr
#func DeleteObject "DeleteObject" sptr
#func SetBkColor "SetBkColor" sptr,sptr
#func SetBkMode "SetBkMode" sptr,sptr
#func SetTextColor "SetTextColor" sptr,sptr
#define ctype RGB(%1,%2,%3) (%1 | %2 << 8 | %3 << 16)
onexit *exit
oncmd gosub *ctlcoloredit, $133//WM_CTLCOLOREDIT(編集可)
oncmd gosub *ctlcolorstatic, $138//WM_CTLCOLORSTATIC(編集不可)
input SongTitle, 390, 24
nInput = stat
hInput = objinfo_hwnd(nInput)
f=1
sendmsg hInput, $CF, f
CreateSolidBrush RGB($18, $18, $18)
hBrush = stat
CreateSolidBrush RGB($18, $88, $88)
hBrush(1) = stat
SetWindowLong hInput, -20, $0
SetWindowPos hInput, $27
but="編集不可","解除"
button gosub but(f), *change
bid=stat
stop
*ctlcoloredit
if hInput = lparam {
SetBkMode wparam, 1
SetTextColor wparam, RGB($FF, $FF, $FF)
SetBkColor wparam, RGB($18, $18, $18)
return hBrush
}
return
*ctlcolorstatic
if lparam = hInput {
SetTextColor wparam, RGB($ff, $0, $0)
SetBkColor wparam, RGB($18, $88, $88)
;SetBkMode wparam, 1 //コメントアウトを外すとSetBkColorが透過してhBrushの色になる
return hBrush(1)
}
return
*change
f=(f+1)\2
sendmsg hInput, $CF,f
objprm bid,but(f)
return
*exit
DeleteObject hBrush
end
| |
|
2012/7/24(Tue) 00:03:32|NO.47871
>>暇人さん
よくよく読んでみたら書いてありました
お手数をお掛けしてもうしわけありません。
|
|
2012/7/24(Tue) 00:09:22|NO.47872
解決したから関係ないけど
>*ctlcoloredit
> if hInput = lparam {
> SetBkMode wparam, 1
なんか余分なもの入ってた・・・
編集可能でSetBkMode wparam, 1ってやっちゃうと文字が消えずに上書きになる事がある
|
|
2012/7/24(Tue) 00:10:59|NO.47874
詳細の理解というのが苦手で自分でも良く分かってないんです。
エディットコントロールでは上手くいかなかったのでスタティックコントロールならば?
という具合に、少し変更して使ってみた感じなんです。
なので
oncmd gosub *ctlcoloredit, $138
上記は
oncmd gosub *ctlcolorstatic, $138
こうしないと変ですね、名前だけなんで見落としました;
本当に掻い摘んだ情報しか頭に入っていないので「良く分からん」です。
|
|
2012/7/24(Tue) 00:14:43|NO.47876
まごまごしてるうちに解決してましたね、俺も暇人さんので理解が進みました。
|
|