• 締切済み

ウインドウズアプリケーションでの図形描画

プログラミング初心者の学生です。 ウインドウズアプリケーションで図形を描画するプログラムを作成しようとしています。 エディットボックスに入力した値を使って,四角形などの図形を描画することができるようにしたいのですが,うまくいきません。 エディットボックスに入力した値を取得して,例えば ectangle( hDC, 100, 100, 200, 200 ); の数字の場所に代入するようなことは可能でしょうか。 初歩的な質問で申し訳ありませんが,教えていただけると嬉しいです。

みんなの回答

回答No.1

 こんにちは。  方法は2通りでしょうか。 (1)エディットボックスを(x, y, w, h)の4個用意。  GetDlgItemInt()  http://msdn.microsoft.com/ja-jp/library/cc364623.aspx  を使用して数字を取り出す方法。 (2)エディットボックスを1個使用し、  GetWindowText()  http://msdn.microsoft.com/ja-jp/library/cc364815.aspx  を使用して文字を取り出し、解析して(x, y, w, h)の数字に変換をする方法。  (1)の方法が手っ取り早くて確実です。  (2)は文字列の解析が面倒な上、プログラム内で書式の正当性を保障しなければならず、処理が面倒で間違いを起こしやすいです。  ボタンを用意しておき、押されたら、エディットボックスから数字を取り出してRectangle()へ反映させてあげましょう。

yuuskk
質問者

お礼

わかりやすいアドバイスをありがとうございます。 (1)で教えていただいた方法でやってみようと思います。

関連するQ&A

  • エクセルの図形描画で?

    Excel2003を使用しています。 セルに文字や数字を入力し、「図形描画」で○や□の線で囲むと文字や数字が隠れてしまいます。 図形描画で書いたオブジェクト(○や□)を背面へ移動するという操作をしても文字や数字が現れて来ません、操作方法を教えて下さい。

  • エディットコントロールを再描画させるには。

    CreateWindowEx()でエディットボックスを作り、配置して、 その背景のクライアント領域にビットマップを表示しようとしています。 ところが、再描画しようとした時に、BeginPaintで取得したHDCにBitBltでビットマップを表示するのは、問題なく動くのですが、 GetDCで取得したものに、BitBltを行うとエディットボックスが下に隠れてしまいます。(ビットマップで塗りつぶされてしまっています) それで、GetDCでも大丈夫なようにしたいのですが、 何か方法は無いでしょうか? どなたかお願いいたします。

  • VisualC++で図形描画スクリプトを組みたい

    VisualC++2008でテキストなどから 数字・文字を読み込んで図形化するスクリプトを組みたいです たとえば  10-10-G-100 とかかれたときに 左から"-"を区切りとしてX始点座標-Y始点座標-色-長さ という風に解釈して図形を描画する 例の場合なら X10・Y10を始点にして緑色の右に長さ100ドットの決められた図形を描画する こんな感じでルール化された図形描画スクリプトを 組みたいと考えているのですが 図形描画の方法がわからず プログラムが組めずに困っています どなたか教えていただけないでしょうか?

  • C++のwindowsアプリケーションについて

    windowsアプリケーションで 数字を表示させたいのですができません。 文字列に置き換えないといけないみたいなのですが。なかなかうまくいきませんでした。 :上省略: case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: 描画コードをここに追加してください... int a; a=10; char buf[10]; sprintf(buf,"%d",a); TextOut(hdc,100,20,L"Hello Window!",13); TextOut(hdc,100,50,L"buf",10); としたのですが Hello Window!は表示されるのですが  そのしたに10と表示させるにはどうしたらよいでしょうか?? #include <stdio.h>は上に書いてあります。 詳しい解説よろしくお願いします。

  • C#2005でExcelの図形描画のような物を作りたい

    C#2005でExcelの図形描画のような物やプログラミングする上でのフォームやラベルみたいな操作のを作りたいと思っています。 要件は、図形をドラッグしたサイズで貼り付け可能で、後から選択する事で そのサイズ変更が可能、選択する事で図形を削除したり、文字入力が可能(可能な図形のみ)。 そういう作りを行う上で、まず何を使えば実現出来るのか分かりません。 どなたかご存知の方、ご教示下さい。

  • ダイアログベースの再描画について

    現在VC++6.0、MFC、ダイアログベースでアプリケーションの作成を行っているのですが、長いことつまづいてしまっているので質問させていただきます。 もともとあるアプリケーションに機能を追加、ということを行っているのですが、リソースで作ったボタンとエディットボックスが、ダイアログの最小化や最大化を行うと再描画されずに消えてしまいます。しかし、元々作ってあったボタンやエディットボックスはそのまま正常にのこっています。このアプリケーションの作成者には連絡することができず、ネットでも情報を探しましたが、解決しません。これを解決するにはどういった修正が必要でしょうか? 知識不足のため説明不足や、説明に間違いがあるかもしれませんが、ご教授願えますと幸いです。

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

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

  • Windowsフォームアプリケーションを表示するには?

    Visual C++のコンソールアプリケーションで数字をキーボードから入力するプログラムを作成しました。このプログラムは実行するとコマンドプロンプトが開かれてキーボード値の入力待ち状態になるのですが、ここでコマンドプロンプトではなく、このプログラムとは別に作成したWindowsフォームアプリケーションが開かれキーボード値の入力待ち状態になるというプログラムを作成したいのですが、こういったことは可能でしょうか?また可能ならばどのようなやり方があるか教えていただきたいです。宜しくお願いします。

  • マウスカーソルのデスクトップ描画について

    vb2008で現在のマウスカーソルのハンドルを取得し、デスクトップに描画するというプログラムを組んでいます。しかし、以下の部分を実行してもマウスカーソルは描画されません。どこがおかしいのでしょうか? Dim hcur As Long Dim hdc As Long 'マウスカーソルのハンドル取得 hcur = GetCursor() 'デスクトップのデバイスコンテキスト取得 hdc = GetDC(GetDesktopWindow()) 'カーソル描画 DrawIcon(hdc,0,0,hcur) ちなみに同名のAPIの宣言はしてあります。 後,このソースの用途ですが,複数マウスに対応した複数カーソルの表示です。もしそれにあたって別の方法でカーソルを表示すべきなどのご指摘がありましたら,それもよろしくお願いします。

  • SetWindowText関数について

    プログラミング初心者です。 WINAPI32を用いて、プログラミングに励んでいます。 リソース機能を用いて、親ウインドウのメニューバーからダイアログという形で子ウインドウを開けるようなプログラムを作りました。さらにその子ウインドウ上に、エディットボックスのコントロールを作りました。 例えばそのエディットボックスのIDがIDC_EDIT1なのですが、 子ウインドウを開いた時にすでにそのエディットボックスに数値が入力されているようにしたいのです。 そこで、ダイアログが開かれた時に流れる WM_INITDIALOGのメッセージがきたときに、SetWindowText関数を使えばよいのかな?と思ったのですが、このようなとき第一パラメータにはどのような数値をいれたらエディットボックスに文字列を代入できますか?? IDC-EDIT1といれたら、Struct HWNDに変換してくださいというエラーがでました。 どなたかご教授よろしくお願いいたします。

専門家に質問してみよう