0

私は VC++ を初めて使用し、これまで数回使用してきました。これは、正常にビルドされた後でも出力が得られない 3 番目のプログラムです。

 #include <AFXWIN.H>
 #include <math.h>
 #define PI 3.1415926
 #define SEGMENTS 500

 class CMyApp : public CWinApp {
public:
   virtual BOOL InitInstance();
};

class CMainWindow : public CFrameWnd
{
public:
CMainWindow();
protected:
afx_msg void OnPaint();
afx_msg void OnLButtonDown(UINT, CPoint);
DECLARE_MESSAGE_MAP();
};

CMyApp myAPP;
    BOOL CMyApp::InitInstance() {
    m_pMainWnd = new CMainWindow;
    m_pMainWnd->ShowWindow(SW_MAXIMIZE);
    m_pMainWnd->UpdateWindow();
    return TRUE;
  }

 BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)
 ON_WM_PAINT ()
 END_MESSAGE_MAP ()

 CMainWindow::CMainWindow() {
     Create(NULL,"The Hello Application",WS_OVERLAPPEDWINDOW);                                                           
}

void CMainWindow::OnPaint() {
    CRect rect;
    int nWidth = rect.Width();
    int nHeight = rect.Height();

CPaintDC dc (this);
CPoint aPoint[SEGMENTS];
for (int i =0; i < SEGMENTS; i++){
    aPoint[i].x = ((i*nWidth)/SEGMENTS );
    aPoint[i].y= (int)((nHeight/2)* (1-(sin((2*PI*i)/SEGMENTS))));
}
dc.Polyline(aPoint, SEGMENTS);
UpdateData(false);
 }

上記のプログラムは、空白のウィンドウが表示されることを除いて、出力として正弦曲線を与えるはずです。そして、なぜそれが起こるのかわかりません。それが役立つ場合、私はVC++ 6.0を使用しています

4

1 に答える 1

1

問題はおそらく、幅と高さを取得するために使用する四角形が初期化されていないことです。どこかから長方形を取得する必要があります。例を参照してくださいCWnd::GetClientRect

于 2012-07-27T10:05:28.447 に答える