0

我是 VC++ 的新手,现在已经有好几次了,这是第三个即使在成功构建后也不提供输出的程序。

 #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 回答