• ベストアンサー

Windowsプログラミングの入力BOXの移動方法

コンボ・チェック・ラジオボックスを 1つ1つCreateWindowして作っているのですが、 SetWindowPosで動かそうとしても、幅は伸縮してくれるのですが 座標は動いてくれません。 MSDNには「クライアント座標で指定」と書いてありそれが問題か と思ったのですが、その具体的な方法が・・。 子窓の描画座標はどうすれば動かせるのでしょうか? また、サイズ(SetWindowPos)と位置は別々に操作するしかないのでしょうか?

noname#202167
noname#202167

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

実際のコードを書き込んだほうが、問題点が突き止めやすいですよ。 あなたが考えている原因と違う部分が原因の場合、コードがないと「違う原因だ」ということも指摘できませんから。 SetWindowPosは、SWP_NOMOVEやSWP_NOSIZEといったフラグを付けなければ、移動とサイズ変更を同時に行えます。

noname#202167
質問者

お礼

SetWindowPosにSWP_NOMOVEのフラグが有りました; 外したところちゃんと動いてくれました;; ご回答ありがとうございます。感謝・・!

関連するQ&A

  • Windowsプログラミングでなのですが、

    チェック、ラジオ、コンボボックスなどを配置しています。 その位置をSetWindowPosで動かすと 動かす前の場所に操作のできない残像(?)が残ってしまいます。 沢山同時に移動させるのですが、 この残像はどうやって消すのが良いのでしょうか?

  • ピクチャーボックスの座標指定について

    ピクチャーボックス内で表示位置(座標)を指定して画像を表示したいです。 この場合loadpictureによる座標指定はできないのでしょうか? よろしくお願いします。

  • コンボボックスのリストの位置

    VisualBasic 6.0のコンボボックスに、API(CB_SETDROPPEDWIDTH)を利用してドロップダウンリストの幅を広げて使っています。 このときコンボボックスが画面の右端にあったり、極端に広いリストにした場合に、リストの右端が画面からはみ出してしまいます。 リストがはみ出すときは、コンボボックスの位置を変えずにリストのみ左へずらしたいのですが、そのようなことはできるのでしょうか?  よろしくお願いいたします。

  • PictureBoxの描画を消さない方法

    VisualBasic2005において、プログラミングを制作しています。 計測器にて計測した値を読み込み、くり返し処理を用いてPictureBoxに描画したいのですが、前のデータを消さずに次のデータをプロットしていく方法がわかりません。 前のデータを消さずに塗り足していく方法はないでしょうか? また、この値はコンボボックスから読み込んでいるのですが、くり返し処理によってコンボボックスの値を読み取る場合、終了値はどのように設定すればいいのでしょう? 初期値はいいとして、終了値は計測回数によって変わるため明確な値はないのですが、「値がなくなったら終わり」ということを指定するにはどうコードを組めばいいのでしょうか? ご指導よろしくお願いいたします。 全体的な流れを記しておきます。 計測→コンボボックスに値を格納→ボタンによってコンボボックスの値を(全て)読み込み、PictureBoxに全て描画 コンボボックスの値の読み込み、描画にくり返し処理を用いています。 よろしくお願いいたします。

  • 再描画の一般的な方法

    再描画の一般的な方法を教えてください。 セレクトボックスとテキストボックスが2つずつ。 □■□□ 2番が選択されています □□□■ 4番が選択されています こんな窓が、別窓に隠れてから復活して再描画する場合、 case WM_PAINT: でセレクトボックスのチェック状態を 調べるのはよくなく、再描画のために、フラグを用意して、 セレクトボックスに変化があった場合はフラグを書き替えて、 テキストボックスの描画はフラグの値を参照した方がいいと 思いました。 この例の場合はセレクトボックスを調べるだけだから セレクトボックスを調べてもいいと思うけど、もっと複雑な計算をしたり 大きなファイルを読み込ませた結果でテキストボックスの値が決まる場合の ことを考えたら、フラグを用意するのがいいと思いました。 でも、セレクトボックスとテキストボックスがもっとたくさんあったり した場合には、フラグの数が多くなるから、フラグを参照するより、 再描画のために、表示に変化があった場合には、窓のクライアント全体を メモリに保存しておいて、再描画ではメモリから表示した方がいいとも 思いました。 たくさんの種類のセレクトボックスとか文字とかがある窓は 普通はどんな風に再描画させているんですか?

  • Javaで左上の位置を指定して文字を描画する方法を探しています。

    Javaで左上の位置を指定して文字を描画する方法を探しています。 JavaでGraphicsオブジェクトを使用して文字を描画する際に、Javaの標準の方法(java.awt.graphicsのdrawStringメソッド)を使う場合では「ベースラインの位置」を指定しますが、これを「左上端の座標」を指定して描画できるようにするにはどうしたらよいのでしょうか。

    • ベストアンサー
    • Java
  • ID3DXSprite::Drawメソッドに関して質問です。

    ID3DXSprite::Drawメソッドに関して質問です。 ID3DXSprite::Drawメソッドの第3引数でスプライトの 中心を識別する座標を指定できますが、 この座標を画像の様に中心にセットします(単に2で除算するだけですが)。 スプライト上では中心を(0,0)と扱うので、仮にこのスプライトを 左上にあわせて描画するとします。 なお、スプライトのサイズと、ウィンドウのクライアントサイズは 完全に一致しているとします。 単純に中心までの幅はX、中心までの高さはXとなりますので、 スプライトをX、Y分だけ右下にずらせば 問題なく描画されるかと思っていたのですが、 何故か画像内の結果上の様に地味に左上に描画されてしまいます。 そこで画像内の結果下の様にそれぞれにさらに0.5pixlずらして描画しますと これは想像どおりの位置で描画されます。 インターネットで調べるとテクスチャの描画の際には0.5pixl云々という記述が あるのですが、この場合でも0.5pixlのずれを意識する必要があるのでしょうか? それとも私自身、根本的に座標の求め方に問題があるのでしょうか? どうか、ご指摘お願いします。

  • ピクチャボックスから座標を読み込み 配列へ

    プログラミング初心者でわからないことがあるのでどなたかわかるかたいましたら教えてください<(_ _)> ピクチャボックスにグラフを書くプログラムを作っているのですが、 波状のグラフから その最大値、最小値をいくつかとり、それらについて近似直線を書こうとしています。 その際に、範囲指定をマウスで行うか、もしくはピクチャボックス上をクリックするとその座標を読み込み配列に入れたいのです。 例えばc(600)の配列に クリックしたら順次その座標データ(X座標だけでかまわないです)が入るようにするにはどうしたらいいでしょうか? 具体的には1回クリックしたらc(0)へ、2回目はc(1)へ・・・・ とこれを繰り返し操作できるようにしたいのです ぐぐってみましたが、座標を読み込みはありますが、それを活用するというものがなかなかなくて。 わかる方いましたらお願いします。

  • チャイルドダイアログの最前面表示

    現在、MDIフレーム上に、複数のチャイルドスタイルのダイアログが存在するプログラムを改造中です。 その中にMapDKIVの地図を描画しているダイアログがあり、その地図上に縮尺スケールのビットマップを描画しようとしています。(MapDKIVには、その機能がまだ無い為) 縮尺スケールのビットマップを描画する為のダイアログを同様にチャイルドスタイルにし、SetWindowPos()を使って最前面に表示しようとしましたが、地図を描画しているダイアログをクリックすると、後ろへ行ってしまいます。 MSDNのSetWindowPos()の説明には、 「子ウィンドウ、ポップアップウィンドウ、またはトップレベルウィンドウのサイズ、位置、および Z オーダーを変更します。」 と記述されています。 が、あるサイトでは、 「MDI子Formは、子Windowであって、TopLevelWindowではないのですから、SetWindowPosは最前面や最背面設定を受け入れません。」 と記述されています。 縮尺スケールのビットマップを描画する為のダイアログを通常のスタイルにし、「フォアグランド表示する」とすると、メインフレームのサイズを小さくしたり、移動した時に、その場所へ取り残されてしまいます。 何か、方法はないものでしょうか? 開発環境 VisualC++ 6.0 SP6 どなたかお助け下さい!よろしくお願いします。

  • illustratorのテキストボックスサイズ変更

    MacOS Xにて、illustrator CS6を使用しています。 ※テキストだけではわかりづらいと思うので、画像を添付しています。併せてご覧ください。 エリアテキスト(テキストカーソルをドラッグしてボックスのサイズを決定してから書き込むモード)でテキストボックスを作り、文字を打ち込んだ後で、 テキストボックスのサイズを下(縦)に伸ばそうとすると、ボックスの上部も引っ張られるようにしてボックスそのものの位置が少しずれてしまうことがあります。 下に伸ばしているだけなのに、上部の「Y座標」が少しだけ(下に伸ばした幅よりもだいぶ少ない幅で)落ちてしまう、ということです。 色々試したところ、テキストボックスの高さがテキストそのものの高さギリギリのときに発生しているようです。 一度広げて、もう一度広げようとしても2回目はずれないので。 たぶん、テキストボックスの仕組みを理解していないんだと思います。 大きな支障が出るわけではないのですが、毎回毎回気になるので、わかる方、教えていただけたらうれしいです。

専門家に質問してみよう