SS_NOTIFY設定wo – プログラミング – Home

通知
すべてクリア

[解決済] SS_NOTIFY設定wo


JILL
 JILL
(@JILL)
ゲスト
結合: 14年前
投稿: 18
Topic starter  

WindowsCE5.0/EMbeddedVC++4.0SP4/SDK(MFC未使用)にて開発

 お世話になります。
STATICコントロールのSS_NOTIFY設定を条件により有効にしたり
無効にしたりと制御で切り替えるにはどうしたらよいのでしょうか?

・STATICコントロールは反転表示し、オプションボタンのように使用しています。
・場合によりコントロールの入力を無効にしたいので、
 現在はリソースエディタで「通知」にチェックをいれて(初期値:SS_NOTIFY)
 メッセージ処理のなかで、無効にしたい条件のときに表示を反転したりしています。

メッセージが来てから判定するのではなく、SS_NOTIFY設定したり解除する方が
制御が少なくてすむのですが、具体的なやり方が見つけられません。

よろしくお願いします。


引用未解決
トピックタグ
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

具体的に何をどうしているのか想像が付かない文章だけど
とりあえず SS_NOTIFY のつけはずしするだけなら、これは WindowStyle なので
MFC でいうところの CWnd::ModifyStyle でできる。
んで、こいつの詳細実装は GetWindowLong/SetWindowLong で GWL_STYLE だ。

俺の手元に WindowsCE は無いので動作検証はしていないけど。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

CEだとSetWindowLongPtr()の方かも。

∵関係ないけど、PC変わりましたm(__)m。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

ウインドウスタイルの値はSS_NOTIFY等の値が
単独で設定されているわけでは無いので注意して下さい。
CreateWindowのdwStyleの説明を見るとわかりますけれど、
ウインドウスタイルの値は幾つかの意味合いを持つ値のORを取った値に
なっています。単純に0を設定したりすると他の値も全部消えてしまうので
一度、現在の値を取得した後にSS_NOTIFYに相当する部分だけを変更して
変更後の値を設定しなおす必要があります。
ビットフィールドの操作になるので注意が必要です。

あと、SS_NOTIFYが該当するかは確認していませんが、
場合によってはCreateWindowの時にしか設定できない物もあります。
ウインドウスタイルの全てが変更可能と言うわけでは無いので
注意をしてください。


返信引用
JILL
 JILL
(@JILL)
ゲスト
結合: 14年前
投稿: 18
Topic starter  

みなさま アドバイスありがとうございます。

>一度、現在の値を取得した後にSS_NOTIFYに相当する部分だけを変更して
>変更後の値を設定しなおす必要があります。
>ビットフィールドの操作になるので注意が必要です。

なるほど、このようにすればよいのですね。

>あと、SS_NOTIFYが該当するかは確認していませんが、
>場合によってはCreateWindowの時にしか設定できない物もあります。

この部分が気になっていて、手段があるのかなと思っていました。
試してみるしかないですね。

改めまして、ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました