• 締切済み

windowプログラム ダイアログベース

プログラム始めて半年もしない者です。 今、フォームとスタティックテキストがあるのですが、 そのスタティックテキストに円を描きたい場合はどうすればよいのでしょうか? アドバイスでも答えでもよろしくお願いいたします

みんなの回答

回答No.3

 こんばんは。御礼頂き感謝いたします。 ・先ずは訂正です。  BOOL CKaiketuDlg::OnInitDialog() の中にある以下に該当する処理は、必要ありませんでした。失礼致しました  //ココから  //スタティックコントロールクラスのポインタを取る  CWnd* pStatic = this->GetDlgItem(IDC_STATIC);  //サブクラス化を解除する  HWND hStatic = pStatic->UnsubclassWindow();  //m_staticはCStaticCircleクラスの事です。  //m_staticにスタティックコントロールハンドルを渡してサブクラス化させます  m_static.SubclassWindow(hStatic);  //ココまで  >>'m_static':定義されていない識別子です >>と表示されます。 >>m_staticはCStaticCircleクラスの事とあります。とはその中でm_static変数追加ということですか?  はい。ダイアログ用クラスのヘッダーに#include"StaticCircle.h"と置く事です。  続いてMFC ClassWizardにて、「メンバ変数ページ」で、ダイアログクラス上にあるスタティックコントロールのIDを選択して「変数の追加ボタン」を押して  【メンバ変数:m_static】  【カテゴリ:コントロール】  【タイプ:CStaticCircle】  を設定してください。 >>void CStaticCircle::OnPaint() >>これはCStaticCircle.cppに追加すればよいのでしょうか?  はい。MFC ClassWizardにてOnPaint()を追加してください。

回答No.2

 こんにちは。強引ですが可能な様です。  CStaticクラスから派生したクラスを準備して置きます(CStaticCircleとします)。  円を描かせる為に、CStaticCircle::OnPaintを実装して置きます。  OnInitDialog内で、搭載してあるスタティックテキストコントロールのポインタを取り出し、サブクラス化を解除します。  最後に、準備しておいた、CStaticCircleクラスにスタティックテキストコントロールのハンドルを渡してサブクラス化をします。  以下参考程度に。 //ダイアログ初期化の中 BOOL CKaiketuDlg::OnInitDialog() { CDialog::OnInitDialog(); //ここら辺は決まり文句なので省略しています // TODO: 特別な初期化を行う時はこの場所に追加してください。 //スタティックコントロールクラスのポインタを取る CWnd* pStatic = this->GetDlgItem(IDC_STATIC); //サブクラス化を解除する HWND hStatic = pStatic->UnsubclassWindow(); //m_staticはCStaticCircleクラスの事です。 //m_staticにスタティックコントロールハンドルを渡してサブクラス化させます m_static.SubclassWindow(hStatic); return TRUE; // TRUE を返すとコントロールに設定したフォーカスは失われません。 } //CStaticCircle メッセージ ハンドラ void CStaticCircle::OnPaint() { CPaintDC dc(this); // 描画用のデバイス コンテキスト // TODO: この位置にメッセージ ハンドラ用のコードを追加してください //取り合えず緑色の鉛筆 CPen pen(PS_SOLID, 1, RGB(0, 255, 0)); dc.SelectObject(&pen); //クライアント領域の矩形を取る RECT rc; this->GetClientRect(&rc); //円を描写させる dc.Ellipse(&rc); // 描画用メッセージとして CStatic::OnPaint() を呼び出してはいけません }

taitatsu5
質問者

お礼

ご回答ありがとうございます。 コピペして実行してみましたところ、何点かわからないところがあるのでよろしくお願いいたします。 ・'m_static':定義されていない識別子です  と表示されます。  m_staticはCStaticCircleクラスの事とあります。とはその中でm_static変数追加ということですか? ・void CStaticCircle::OnPaint() これはCStaticCircle.cppに追加すればよいのでしょうか? 以上よろしくお願いいたします。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

>スタティックテキストに >円を描きたい これ、何かおかしいと自分で思わない? 文字としての○ならできるかもね。 http://www.google.com/search?lr=lang_ja&q=vc%2B%2B%20%E5%86%86%E3%81%AE%E6%8F%8F%E7%94%BB

taitatsu5
質問者

お礼

ご回答ありがとうございます。 悩みに悩みましたが、どこがおかしいか自分では気づけませんでした。 下のアドレスを参考にもしてみましたが…

関連するQ&A

  • プログラムについて

    テキスト内に書かれた文章の中からある単語を検索するプログラムを作りたいんですが、フォームに何を貼り付ければいいかとかプログラムがわかりません、お願いします。

  • windowプログラム ARC C++

    今、windowプログラムで フォームの中に「エディットボックス」と「スタティックテキスト」の2つがあります。 内、スタティックテキスト内にARCで円を描き、表示したいのですがどのようにすればよいのでしょうか? 以上のことに悩んでおります。 某サイトで LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) { HDC hdc; PAINTSTRUCT ps; switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_PAINT: hdc = BeginPaint(hwnd , &ps); Arc(hdc , 10 , 10 , 200 , 200 , 0 , 100 , 0, 100); EndPaint(hwnd , &ps); return 0; } return DefWindowProc(hwnd , msg , wp , lp); } int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { HWND hwnd; MSG msg; WNDCLASS winc; winc.style = CS_HREDRAW | CS_VREDRAW; winc.lpfnWndProc = WndProc; winc.cbClsExtra = winc.cbWndExtra = 0; winc.hInstance = hInstance; winc.hIcon = LoadIcon(NULL , IDI_APPLICATION); winc.hCursor = LoadCursor(NULL , IDC_ARROW); winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); winc.lpszMenuName = NULL; winc.lpszClassName = TEXT("-"); if (!RegisterClass(&winc)) return -1; hwnd = CreateWindow(      TEXT("-") , TEXT("-") , WS_OVERLAPPEDWINDOW | WS_VISIBLE , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT ,      NULL , NULL , hInstance , NULL); if (hwnd == NULL) return -1; while(GetMessage(&msg , NULL , 0 , 0)) DispatchMessage(&msg); return msg.wParam; } をコピペしたのですが、スタティックテキスト内表示がわからなく梃子摺っております。 ご存知の方は回答・アドバイスのほどよろしくお願いいたします。

  • 受け答えプログラムを作るには

    最近C言語を始めた者です。今、受け答えが出来るプログラムを作りたいなぁと思っています。 例えば、人は何類か?という質問をプログラムが出して、哺乳類と打ち込むと、正解!とプログラムが答えてくれるようなものです。ifや、fgetsというものも、一応やってはみたのですが、やりかたがヘタみたいでうまくいきませんでした。 人は何類か?という質問を出して、哺乳類と打ち込むと正解!と答えてくれて、違った答えを打ち込むと正しい答えを教えてくれるプログラムはどうすれば作れるでしょうか?分かる方、お願いします。

  • 【VB2005】「ファイルを開くプログラムの選択」ダイアログを出すには?

    最近VB2005を始めた者です。 現在アプリケーションを作成しております。 そのアプリケーションの1つに外部ファイルを開く機能を付け加えたいと思っています。 機能としては、   ・普通のテキストファイルを開きたい時 → notepad.exe   ・大容量のテキストファイルを開き検索したい時 → 別のアプリ という風にユーザーが開くアプリを選択できるようにしたいのです。 それを実現するために、 拡張子の無いファイルを開くときに出る   「ファイルを開くプログラムの選択」 というダイアログボックス(?)を出したいと思っています。 関連付けられているファイルを開く事は ShellExecute() や Process.Start() などで実現できているのですが、「ファイルを開くプログラムの選択」がどうしても実現できず困っております。 お暇な時で構いませんのでご回答いただければ幸いです。

  • ダイアログメッセージ

    フォームの中に名前を書くテキスト欄があり、 送信ボタンを押すとダイアログにテキスト欄で記入した名前と 送信しますというメッセージが立ち上がり、 ダイアログ内のOKを押すと指定のCGIに飛ぶようにしたいのです。 ダイアログメッセージ↓ 「○○様、フォーム内容を送信しても宜しいですか?」 直ぐに回答がほしいなどと勝手な事を申しましてすみませんが、お力を是非お貸しください。 よろしくお願いします。今現在もPCとにらめっこして格闘中なのです、泣。 お願いします。

  • ASP.NET/VBでのユーザコントロールを使用したプログラム

    開発環境:VS2005 言語:ASP.NET(VB) 質問させてください。 現在ASP.NETでプログラムを作っています。 プログラム等は経験なくほぼ初心者です。 内容としては テキストボックス(txtB)1個のユーザコントロールを ボタン(btn1)1個とテキストボックス(txtA)1個のフォーム(aspx)に貼り付け、 ボタンを押下することでフォームのテキストボックス内の値を ユーザコントロールのテキストボックスに表示させるという プログラムを作りたいのですがうまくいきません。 色々調べたのですが、 ユーザコントロールのテキスト内の値をフォームのテキストに表示させる方法は あったのですが逆の方法は見つけられませんでした。 説明等わかりにくいところもあるかもしれませんが 回答よろしくお願いいたします。

  • VC++でダイアログボックスを表示させるプログラム

    VC++のプログラミングで、実行できない原因が 判らないので、ヒントをいただけないでしょうか。 現在VC++の勉強中で、ダイアログボックスを 表示するプロジェクトを作成しています。 ビルドエラーは出ないのですが、実行しても 何も表示されません。 メニューを持った親ウインドウを表示し、 メニューから「加算」を選択すると 計算用のダイアログボックスが表示されるプログラムです。 ダイアログボックスは三個のテキストボックスと 二個のボタンがあり、数字を二箇所入れ ボタンを押すと計算結果を表示します。 長くなる為ソースは書けないのですが、 こういう場合まず何からチェックすればいいでしょうか? 初心者なのでちょっとしたことで間違えているかも しれません。どなたかアドバイス下さい。

  • VBで内部処理のみ行って終了するプログラムを作るには?

    VB6.0でコマンドラインからの引数をテキストファイルに出力して終了させるプログラムを作りたいのですが、フォームなど特に画面に表示することなく内部で処理をしたら勝手に終了させるにはどうしたらよいのでしょうか? 初心者の間の抜けた質問で申し訳ありませんが、どなたかアドバイスをお願いします。

  • プログラムについて

    将来的に、一人でソフトを作りたいと思います。その場合の、プログラムの勉強について、お薦めのテキストがありましたら、教えてください パソコンは、素人です!

  • テキストファイルについてのプログラム

    初めまして、VC++2005を使っているプログラム初心者です。 windowsフォームアプリケーションというテンプレートを使ってプログラムを作成したいと考えているのですが、どのようにすればよいのかわからず質問しました。ご指導していただけると嬉しいです。 まず、test.txtというテキストファイルの中に以下の内容があります。 8:00  朝食 12:00 昼食 15:00 おやつ 19:00 夕食 というデータです。 このデータをボタンをクリックするとテキストファイルを1行ずつ読んで行き、15:00という文字が出たらテキストボックスに「おやつの時間」というものを表示する方法とまたそのテキストファイルの内容全体を別のテキストボックスに表示したいのですが、どのようにすればよいのでしょうか? fscanfやfopenなどを使うのですが、どうしてもうまくいかないのでよろしくお願いします。

専門家に質問してみよう