• 締切済み

WIndows3.1 ウィンドウの描画

Windows3.1では、ウィンドウの再描画を行う時、再描画を行う範囲を指定することは出来るのでしょうか? 例えば、リストボックスにデータを追加表示し、再描画の処理を行う時に、(リストボックスを含むウィンドウ全体ではなく、)リストボックスのみを再描画することは可能でしょうか? WindowsNTでは、指定範囲の再描画を行う事はできると思うのですが。 以上、よろしくお願いします。

みんなの回答

  • kaoaru
  • ベストアンサー率33% (42/127)
回答No.2

かなり古い質問です。質問した方が閉じてないだけかと思いますが、答えておきます。 >WindowsNTでは、指定範囲の再描画を行う事はできると思うのですが。 何もWindowsNTに限ったことではありません。Windows自体、メッセージループは共通に存在し、そのメッセージ内容に応じて処理しているのはすべての版で共通です。 メッセージをクラッキングした結果、「WM_PAINT」を受け取ったらそのタイミングで再描画をするだけのことで、該当ハンドルが所有するリストボックスの再描画処理をすればいいのです。 APIベースでのプログラミングをやったことがないと思われます。一度やってみればわかります。 言語処理系に何を使われているのかがわかりませんが、処理系付属のサンプルに「GenericWindow」とかがあればそれをベースに試してみたらどうでしょうか? ※Windowsはメッセージ駆動型のOSです。これの意味が実感できればしめたものです。

  • itohh
  • ベストアンサー率45% (210/459)
回答No.1

こんにちは。itohhといいます。 Win3.1時代の開発では、メッセージループを自分でガリガリとコーディングする方法ですよね。 ですから、リストボックスだけを再描画したいのであれば、リストボックスにWM_PAINTを PostMessageして、その部分だけを再描画。 こんな感じでしょうか? さすがに確認をする環境がありませんから、確認がとれないアドバイスになってしまいました。 ちなみにWin3.1の開発環境は、VC Ver1.5(16ビット)までしか対応していないと思います。

関連するQ&A

  • WIndows3.1 ウィンドウの描画

    Windows3.1では、ウィンドウの再描画を行う時、再描画を行う範囲を指定することは出来るのでしょうか? 例えば、リストボックスにデータを追加表示し、再描画の処理を行う時に、(リストボックスを含むウィンドウ全体ではなく、)リストボックスのみを再描画することは可能でしょうか? WindowsNTでは、指定範囲の再描画を行う事はできると思うのですが。 以上、よろしくお願いします。

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

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

  • 「VC++6」ウィンドウの再描画

    VC++6を使って簡単なプログラムをダイアログベース作っています。 内容はリストを読み込み、1件ずつDBにSQLを発行して情報を取得していくという内容です。 画面には、プログレスバーも設置しており、普通に操作すると正常に、プログレスバーも動きます。しかし、いったん別のウィンドウをアクティブにして、作成した動作中のプログラムを再選択しても、画面は壊れたまま再描画されません。しばらくまって、リストのSQL発行が終わって、画面に結果が表示されたら、きちんと再描画されます。 そこまで処理が終わったら、他のウィンドウに切り替えて戻ってきても画面が壊れることはありません。 時間がかかるプログラムなので、動作中に別の仕事をするため、アクティブでなくても、きちんとウィンドウを更新したいのです。 ちなみに、ループ処理中にRedrawWindow();を入れてみましたがダメでした。 アドバイスよろしくお願いします。

  • QuickTimeのウィンドウが描画されない(WinNT4)

    あまり使うことがないので諦めていたのですが、QuickTimeのフリー版をWindowsNT4にインストールしても、正常動作しないので困っています。 インストールそのものは成功しますが、QuickTimeMovieを起動すると、グレーの何もないウィンドウ(製品版の情報を見るかい?ってウィンドウのはず)が出て、適当な場所をクリックするとメインウィンドウが表示されますが、グラフィカルなプレーヤー本体は表示されません。 画面左上に実体は存在していて、他のウィンドウを重ねてやったりすると、壁紙の一部が再描画されずに残り、そこにある事が判ります。既知のバグなら、使用を諦めるのですが、どなたか回避方法をご存じなら教えてください。 過去にインストールを何度かしているのですが、何回かちゃんと表示された覚えがあります。 使用環境ですが、 WindowsNT4SP5 Cerelon 450MHz Diamond Viper V550 (1920*1200*6万色 ドライバ 4.00.1381.0133, 4.0.0) 足りない情報があれば補足します。

  • iPhoneSDK 楕円の描画およびグラデーション

    iPhoneSDK環境で図形の描画を行うプログラムで行き詰まっています。画面に楕円を描画をしたいのですがどのように処理をしたら良いのかわかりません。行いたい処理は縦もしくは横に長い楕円でその楕円を指定した角度の傾いた描画を行いたいのです。表示したい座標、縦横の半径、角度などの指定して一発で描画できる機能など無いのでしょうか? それと添付した画像のように描画して楕円の中に指定した色でグラデーションをかける事ができるでしょうか?一度に沢山の質問ですが分かる方がいましたらお手数ですが宜しくお願い致します。

  • photoshop7の描画色について

    photoshopの描画色の色が変更できないのです。 カラーピッカー上では色は変更されているのですが、ツールボックスの描画色の色は変更されません。(カラーピッカーでオレンジの色指定をして、ピッカー上では変更されているが、ツールボックスではグレーになったり、薄グレーになったり、グレー以外の色が表示されない)再度カラーピッカーを表示させると、きちんと指定した色(オレンジ)のままになっています。 初歩的な質問ですいませんがよろしくお願いいたします。

  • gnuplotで部分描画したい。

    gnuplotで部分描画したい。 guplotでplotすると、枠全体に描画されてしまいます。 これを回避しようと、xの範囲を[xmin:xmax]と指定すると、 枠の左端がxmin、右端がxのxmaxに設定されてしまいます。 すなわち私がしたいことは、 枠の両端をxの座標で[fmin:fmax]で指定し、 グラフを[pmin:pmax]の範囲で描画させたいのです。 (fmin < pmin < pmax < fmax) どのようにすればいいでしょうか。

  • コントロールの上に描画

    Visual C# Express Edition で開発を行っています。 ユーザーコントロールで前景(背景の逆という意味で・・)を描画したくて困っています。 どういうことかというと、ユーザーコントロール上にボタン・リストボックス等を配置して、それらの上に1枚の大きな絵を半透明で描画したいのです。 ユーザーコントロールのOnPaintやPaintイベントで描画しても背景としてしか描画されず、描画された絵の上にコントロールが乗ってしまいます。 上記処理の実現方法がありましたら、教えて下さい。

  • 再描画の一般的な方法

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

  • MS オブジェクト描画が選択できない

    EXCEL2007に他のアプリで作図した図(花子等)を貼り付けるときに、 右クリックで「形式を選択して貼り付け」を選択、 ダイアログボックスの貼り付ける形式というリストの中に 「MS オブジェクト描画」が表示されていないのですが 選択できるようにするには、どこで設定すればいいのでしょうか? OSをXPからWindows7にするためにOffic Personal2007を再インストールしました。  アップデートも最新版です。Officeの機能もすべて追加しました。 どなたか解る方がいましたら教えてください。 よろしくお願いします。

専門家に質問してみよう