ダイアログのリサイズによるコントロールの再配置について – プログラミング – Home

ダイアログのリサイズによるコントロール...
 
通知
すべてクリア

[解決済] ダイアログのリサイズによるコントロールの再配置について


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

ダイアログのリサイズによるコントロールの再配置を、OnSizeでMoveWindowを利用して
行なっていますが、ダイアログのサイズをすばやく動かしてリサイズすると、表示が異
常になります。ボタンが重なったりスタティックがぼけたりします。また、最大化から
元のサイズに戻す場合も最大化での表示のままダイアログサイズだけ元に戻ります。
ボタンやリストビューの再配置を反映させる方法は無いのでしょうか?


引用未解決
トピックタグ
超初心者
 超初心者
(@超初心者)
ゲスト
結合: 23年前
投稿: 139
 

ダイアログがどんなサイズであっても
このコントロールはダイアログの右端から100ドットはなれているとか
そういうことしたいってことですよね。

へんだなあ~


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

まず、VCのバージョン、MFC、ダイアログベース等の書きましょう。

次に、新しいプロジェクトでダイアログに最小限のボタンなどを置き、
同じ問題が発生するか確認しましょう。

もし再現するなら話は簡単で、DSLPさんの勘違いを見つけるか、
VCの再インストールということになります。
再現するための最小限の手順を書いてください。

再現しない場合の話は、その後ですね。


返信引用
通りすがり
 通りすがり
(@通りすがり)
ゲスト
結合: 24年前
投稿: 92
 

WM_WINDOWPOSCHANGEDやWM_WINDOWPOSCHANGINGを捕まえてwp-
>flags&SWP_NOSIZE見ながらLPWINDOWPOSを元にいぢくる。


返信引用
通りすがり
 通りすがり
(@通りすがり)
ゲスト
結合: 24年前
投稿: 92
 

連投すまん。メッセージによっては妙なデータが来ることがあるから不思議ではな
い。なんとなくだが、直前のウィンドウサイズを元に計算してるから変になるのか
と。俺もやった。で、メッセージによってはこれから変えるウィンドウサイズ教えてきた
りするので、気をつける。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

実際に変な位置に移動するのではなく、
単に描画が乱れるのでしたら、こういうこともありえます。

ボタンが、
[OK][Cancel]
のようにならんでいて、これらを右方向にずらすとします。
[OK]、[Cancel]の順に移動させると、
移動量が大きい場合、[OK]が一時的に[Cancel]の上に重なり、
[Cancel]ボタンの外観が乱れます。

簡単な解決策は、子を全部移動したら再描画させることですが、
ちらつくかもしれません。


返信引用
s.hirayanagi
 s.hirayanagi
(@s.hirayanagi)
ゲスト
結合: 18年前
投稿: 1
 

そのcontroll をRedrowWindow()すれば直る事があります。


返信引用
aharen
 aharen
(@aharen)
ゲスト
結合: 18年前
投稿: 35
 

過去ログ
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200610/06100042.txt
に似たような件に対して実際にやったソースがあります
ご参考にするとよいと思います


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

いろいろとありがとうございました。
複数ウインドウ位置構造体なるものを使用してやりました。
コントロールの位置を一度に更新する方法でやらないと画面の更新で
ちらつきが起きていたようです。

OnSizeがウインドウ作成時にも呼ばれていたので最初はうまくいかなかったのですが、
テストプログラムでいろいろ試してみてナントカ解決できました。

たくさんのご助言、ありがとうございました。
とても参考になりました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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