エディットボックスをくぼませる – プログラミング – Home

エディットボックスをくぼませる
 
通知
すべてクリア

[解決済] エディットボックスをくぼませる


ラファエル
 ラファエル
(@ラファエル)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

こんにちは。
WindowsXP/VisualC++6.0にて開発を行っております。

ダイアログに貼り付けたときにできるエディットボックスはくぼんでいるのに、
CEditのCreate関数で作成したエディットボックスはくぼんでいません。

エディットボックススタイルも調べてみましたが、
それに該当するようなスタイルはありませんでした。

もし、エディットボックスをくぼませる方法がありましたら、
教えて頂けないでしょうか。


引用未解決
トピックタグ
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 22年前
投稿: 160
 

> ダイアログに貼り付けたときにできるエディットボックスはくぼんでいるのに、
> CEditのCreate関数で作成したエディットボックスはくぼんでいません。

WS_EX_CLIENTEDGEでは?
リソースファイルで確認すると付いていませんか?

CEdit::Create()で作っただけの場合、このスタイルは付かないので、
その後でModifyStyleEx()すればよろしいかと。


返信引用
ラファエル
 ラファエル
(@ラファエル)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

瀬戸っぷ様ご返答ありがとうございます。

下記の通りにやってみたのですが、何故かくぼんでくれません。

Edit.Create(WS_VISIBLE | WS_CHILD, CRect(10, 10, 100, 50), this, 1);
Edit.ModifyStyleEx(0, WS_EX_CLIENTEDGE);

コンパイルエラーもありませんし、何も問題ないように思えるのですが、
何か間違っているのでしょうか?


返信引用
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 22年前
投稿: 160
 

> 下記の通りにやってみたのですが、何故かくぼんでくれません。
> Edit.Create(WS_VISIBLE | WS_CHILD, CRect(10, 10, 100, 50), this, 1);
> Edit.ModifyStyleEx(0, WS_EX_CLIENTEDGE);
> コンパイルエラーもありませんし、何も問題ないように思えるのですが、
> 何か間違っているのでしょうか?

CWnd::ModifyStyleEx()とCWnd::ModifyStyle()は
APIのSetWindowLong()を使用して設定されます。
そして、SetWindowLong()をMSDNで調べると…
>ウィンドウデータの中には、キャッシュされており、SetWindowLong 関数を使って変更
しても
>SetWindowPos 関数を呼び出すまでは有効にならないものもあります。
>特に、フレームスタイルを変更した場合は、SWP_FRAMECHANGED フラグを
>セットして SetWindowPos 関数を呼び出すさなければ、
>キャッシュが正しく更新されません。
とあります。
よって、
Edit.ModifyStyleEx()の第3引数にSWP_FRAMECHANGEDを渡す必要があります。


返信引用
ラファエル
 ラファエル
(@ラファエル)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

ご指摘通り第3引数にSWP_FRAMECHANGEDを加えてみたところ、
くぼみを付けることができました。

瀬戸っぷ様、本当にありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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