mfc-ml

1999年01月

31

[mfc 13917] ダイアログボックスに描画する

お世話になっております。

 作成中のアプリケーションで取得しているデータを、
 指定のダイアログボックスを表示する際に
 任意のグラフにして表示したいのですが・・・

 Try:試みたのは以下のコード

BOOL CXXXDlg::OnInitDialog()
{
 // TODO: この位置に初期化の補足処理を追加してください
 CDialog::OnInitDialog();

 //デバイスコンテキスト取得
 CDC* pDC = GetDC();

 //描画オブジェクト
 CPen newPen(PS_SOLID, 1, RGB(0,0,0));
 CPen* pOldPen;

 pOldPen = pDC->SelectObject(&newPen);

 //描画
 pDC->MoveTo(0,0);
 pDC->LineTo(100,100);

 //描画オブジェクト解放
 pDC->SelectObject(pOldPen);
 newPen.DeleteObject();

 //再描画処理
 Invalidate();

 return TRUE;
}

 エラーは発生しないものの、描画が全くされていません。
 多分、OnInitDialog()時のポインタは暫定のものなのでしょうか。
 ダイアログが表示された後にデバイスコンテキストのポインタを取得
 する処理を挿入してみましたが、何度やっても同じポインタ値が返って
 きませんでした。ダイアログのデバイスコンテキストがどうなっているのか
 謎です・・・。
 基本クラスがCWndクラスなので、明示的に、

 CWnd* pWnd = GetDlgItem(ID_XXX_DLG);

 として、ダイアログのポインタを取得してからデバイスコンテキストを・・・
 とも思ったのですが、これではpWnd自体に0値が返ってきました・・・。
 ですから、そのpWndを使用して、デバイスコンテキストを取得しようと
 しても、エラーが発生してしまいました。

 ほかにも、ビットマップに保存して描画する方法も試して
 みたのですが、ビットマップハンドルが取得出来ずに
 断念しました。(この方法に関しては、頭から処理の
 考え方が違うかもしれない)

 通常のウィンドウに描画するのは簡単に出来るのですが、
 ダイアログに描画したい時はどうすれば良いのでしょうか。

藤森美弥
31

[mfc 13917] ダイアログボックスに描画する

お世話になっております。

 作成中のアプリケーションで取得しているデータを、
 指定のダイアログボックスを表示する際に
 任意のグラフにして表示したいのですが・・・

 Try:試みたのは以下のコード

BOOL CXXXDlg::OnInitDialog()
{
 // TODO: この位置に初期化の補足処理を追加してください
 CDialog::OnInitDialog();

 //デバイスコンテキスト取得
 CDC* pDC = GetDC();

 //描画オブジェクト
 CPen newPen(PS_SOLID, 1, RGB(0,0,0));
 CPen* pOldPen;

 pOldPen = pDC->SelectObject(&newPen);

 //描画
 pDC->MoveTo(0,0);
 pDC->LineTo(100,100);

 //描画オブジェクト解放
 pDC->SelectObject(pOldPen);
 newPen.DeleteObject();

 //再描画処理
 Invalidate();

 return TRUE;
}

 エラーは発生しないものの、描画が全くされていません。
 多分、OnInitDialog()時のポインタは暫定のものなのでしょうか。
 ダイアログが表示された後にデバイスコンテキストのポインタを取得
 する処理を挿入してみましたが、何度やっても同じポインタ値が返って
 きませんでした。ダイアログのデバイスコンテキストがどうなっているのか
 謎です・・・。
 基本クラスがCWndクラスなので、明示的に、

 CWnd* pWnd = GetDlgItem(ID_XXX_DLG);

 として、ダイアログのポインタを取得してからデバイスコンテキストを・・・
 とも思ったのですが、これではpWnd自体に0値が返ってきました・・・。
 ですから、そのpWndを使用して、デバイスコンテキストを取得しようと
 しても、エラーが発生してしまいました。

 ほかにも、ビットマップに保存して描画する方法も試して
 みたのですが、ビットマップハンドルが取得出来ずに
 断念しました。(この方法に関しては、頭から処理の
 考え方が違うかもしれない)

 通常のウィンドウに描画するのは簡単に出来るのですが、
 ダイアログに描画したい時はどうすれば良いのでしょうか。

藤森美弥
31

[mfc 13832] Re: アイコンがLoadできない

>------------------------------------------------
>#include <windows.h>
>#include "resource.h"
>
>int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR
>lpsCmdLine, int nCmdShow)
>{
>  // アイコンをLoadする
>  HANDLE hIcon = LoadIcon(hCurInst, MAKEINTRESOURCE(IDI_ICON1));
>  if(hIcon) MessageBox(NULL, "成功", "Information.", MB_OK);
>  else      MessageBox(NULL, "失敗", "Information.", MB_OK);
>  return 0;
>}
>--------------------------------------------------
>ビルドする。
>
有り難うございました。
新規にプロジェクトを作成し、以上のようなコードで
無事にアイコンがLoadできるようになりました。

しかし何が悪かったのだろう・・・
31

[mfc 13832] Re: アイコンがLoadできない

>------------------------------------------------
>#include <windows.h>
>#include "resource.h"
>
>int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR
>lpsCmdLine, int nCmdShow)
>{
>  // アイコンをLoadする
>  HANDLE hIcon = LoadIcon(hCurInst, MAKEINTRESOURCE(IDI_ICON1));
>  if(hIcon) MessageBox(NULL, "成功", "Information.", MB_OK);
>  else      MessageBox(NULL, "失敗", "Information.", MB_OK);
>  return 0;
>}
>--------------------------------------------------
>ビルドする。
>
有り難うございました。
新規にプロジェクトを作成し、以上のようなコードで
無事にアイコンがLoadできるようになりました。

しかし何が悪かったのだろう・・・
31

[mfc 13831] Re: DLL内関数へCString型の参照引数の渡し方

こんにちは

>GetData(& getData);
GetData(getData); でだめですか?
記事検索
Amazon.co.jp
  • ライブドアブログ