他のクラスのメンバ関数 – プログラミング – Home

他のクラスのメンバ関数
 
通知
すべてクリア

[解決済] 他のクラスのメンバ関数


わっく
 わっく
(@わっく)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

いつもお世話になっております。

 今、MainクラスとSubクラスで線の描画を行っているのですが、どうしても
分からないことがあり、書き込みました。
 Mainでボタンを押すと、Subの関数にデバイスコンテキスト、ピクチャボックスの
のサイズを渡してMainのピクチャボックスに線を引くというものです。
ですが、Mainのピクチャーボックスには若干ですが、線の位置がズレて描画されます。
これはどうしてなのでしょうか?Subのクラス内で同じことを試すときちんと描画され
るのですが・・・。ご指導よろしくお願いします。

Mainクラス
void CMainDlg::OnButton()
{
 CSubDlg dlg;
 CDC *pDC;
 CRect picture;

pDC = GetDlgItem(IDC_PICTURE)->GetDC();
CWnd *pic = GetDlgItem(IDC_PICTURE);
pic->GetClientRect(picture);
dlg.Draw(pDC,picture);
ReleaseDC(pDC);
}

Subクラス
void CSubDlg::Draw(CDC *pDC,CRect box)
{
pDC->Rectangle(&box);
pDC->MoveTo(0,box.Height() / 2);
pDC->LineTo(box.Width(),box.Height() / 2);
}


引用未解決
トピックタグ
わっく
 わっく
(@わっく)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

開発環境は、WindowsXP,VC6.0,MFC,です。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

提示されているコードを実行する限りでは、
ずれていない様な機がするのですが、
何を持ってずれているという判断をされているのでしょう?

新しくダイアログベースのプロジェクトを起こし、
メインのダイアログにピクチャボックスを設置して
上記のコードをコピペして試してみましたが、
特にずれているようには見えませんでした。

提示されている以外の実装部分が影響を与えたりしてませんか?


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

基、
誤)
ずれていない様な機がするのですが、
正)
ずれていない様な気がするのですが、


返信引用
REE
 REE
(@REE)
ゲスト
結合: 23年前
投稿: 240
 

>pic->GetClientRect(picture);

pic->GetClientRect(&picture);

コピーミス?


返信引用
わっく
 わっく
(@わっく)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

PATIOさんに言われたとおり、色々と調べてみたんですけど、提示されて
いる以外の実装部分は影響を与えていないようです。それと自分ももう一度
作りなおして上記のプログラムをコピペしたところうまく行きました。
ですが、下記のプログラムを追加するとMainではいいのですが、
Subだとズレてしまいます。これはどうしてでしょうか?

Mainクラス
void MainYDlg::OnButton1()
{
 // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
 CSubDlg  Hdlg;
 Hdlg.DoModal();       //Subダイアログオープン
}

Subクラス
void CSubDlg::OnPaint()
{
上記のMainのvoid CMainDlg::OnButton()と同じ
}

void CSubDlg::Draw(CDC *pDC,CRect box)
{
上記のプログラム略
for(int i = 1;i<10;i++)
{
pDC->MoveTo(0,box.bottom - (box.bottom / 10) * i);
pDC->LineTo(box.right,box.bottom - (box.bottom / 10) * i);
}
}


返信引用
わっく
 わっく
(@わっく)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

間違って解決にしちゃいました。解決してません・・・。


返信引用
わっく
 わっく
(@わっく)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

解決に付けちゃったんで新規でたちあげます。
お手数おかけします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました