考试问题,大家帮帮忙

bonn 2004-01-04 10:37:48
要在屏幕建立一个窗口,然后窗口里显示一个坐标系包括X,Y轴,还有一个正弦函数曲线,考试上机题目,大家棒棒忙啊
...全文
112 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
一生有爱1980 2004-06-28
  • 打赏
  • 举报
回复
都不错,收藏
broown 2004-06-27
  • 打赏
  • 举报
回复
楼主也把你的代码,帖出来看看
niky8053 2004-06-27
  • 打赏
  • 举报
回复
这么多答案,
nineclock 2004-06-27
  • 打赏
  • 举报
回复
呵呵,一楼真行
lianglp 2004-06-27
  • 打赏
  • 举报
回复
呵呵,一楼真行
Kudeet 2004-06-27
  • 打赏
  • 举报
回复
1月分的帖子顶起来了啊!



收藏
PiggyXP 2004-06-27
  • 打赏
  • 举报
回复
不错,收藏一个
Jasonn 2004-01-04
  • 打赏
  • 举报
回复
up
sxslyy 2004-01-04
  • 打赏
  • 举报
回复
主要是这段:
MoveToEx (hdc, 0, cyClient / 2, NULL) ;
LineTo (hdc, cxClient, cyClient / 2) ;

for (i = 0 ; i < NUM ; i++)
{
apt[i].x = i * cxClient / NUM ;
apt[i].y = (int) (cyClient / 2 * (1 - sin (TWOPI * i / NUM))) ;
}

Polyline (hdc, apt, NUM) ;
return 0 ;
sxslyy 2004-01-04
  • 打赏
  • 举报
回复
程式5-2 SINEWAVE
SINEWAVE.C
/*-------------------------------------------------------------------
SINEWAVE.C -- Sine Wave Using Polyline
(c) Charles Petzold, 1998
---------------------------------------------------------------------*/
#include <windows.h>
#include <math.h>

#define NUM 1000
#define TWOPI (2 * 3.14159)
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("SineWave") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc= WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;

if (!RegisterClass (&wndclass))
{
MessageBox ( NULL, TEXT ("Program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}

hwnd = CreateWindow ( szAppName, TEXT ("Sine Wave Using Polyline"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;

while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static int cxClient, cyClient ;
HDC hdc ;
int i ;
PAINTSTRUCT ps ;
POINT apt [NUM] ;

switch (message)
{
case WM_SIZE:
cxClient = LOWORD (lParam) ;
cyClient = HIWORD (lParam) ;
return 0 ;

case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;

MoveToEx (hdc, 0, cyClient / 2, NULL) ;
LineTo (hdc, cxClient, cyClient / 2) ;

for (i = 0 ; i < NUM ; i++)
{
apt[i].x = i * cxClient / NUM ;
apt[i].y = (int) (cyClient / 2 * (1 - sin (TWOPI * i / NUM))) ;
}

Polyline (hdc, apt, NUM) ;
return 0 ;

case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
byry 2004-01-04
  • 打赏
  • 举报
回复
void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here

pDC->MoveTo(10,120);
pDC->LineTo(400, 120);
pDC->MoveTo(20, 10);
pDC->LineTo(20, 230);

for(int i=20; i<381; i++)
{
float a,b;
a = sinf((float)(i-20)/180*3.14159265)*100.0;
b = sinf((float)(i-19)/180*3.14159265)*100.0;
pDC->MoveTo(i, (int)a+120);
pDC->LineTo(i+1, (int)b+120);
}
}
GR 2004-01-04
  • 打赏
  • 举报
回复
windows程序设计。第五章,5.2完整的程序,精彩的讲解。
keiven 2004-01-04
  • 打赏
  • 举报
回复
呵呵,恭喜楼主!
bonn 2004-01-04
  • 打赏
  • 举报
回复
hoho,我自己看了伙书,终于会了,谢谢各位大虾的帮忙,会我考完就给大家
jackwuwei 2004-01-04
  • 打赏
  • 举报
回复
这个画了坐标,但不是余旋曲线,自己画一下

CString str;
LONG i;
LONG max;
CPaintDC dc(this); // device context for painting
CWnd *pWnd=GetDlgItem(IDC_COORD);
CDC *pDC=pWnd->GetDC();
pWnd->Invalidate();
pWnd->UpdateWindow();
pDC->Rectangle(0,0,330,300);
CPen* pPenRed=new CPen;
pPenRed->CreatePen(PS_SOLID,1,RGB(255,0,0));
CPen* pPenBlue=new CPen;
pPenBlue->CreatePen(PS_SOLID,1,RGB(0,0,255));
CPen* pPenGreen=new CPen;
pPenGreen->CreatePen(PS_DOT,1,RGB(0,255,0));
CGdiObject* pOld=pDC->SelectObject(pPenRed);
pDC->MoveTo(10,10);
pDC->LineTo(10,280);
pDC->LineTo(320,280);
str.Format("0");
pDC->TextOut(10,283,str);
str.Format("50");
pDC->TextOut(60,283,str);
str.Format("100");
pDC->TextOut(110,283,str);
str.Format("150");
pDC->TextOut(160,283,str);
str.Format("200");
pDC->TextOut(210,283,str);
str.Format("255");
pDC->TextOut(265,283,str);
for(i=0;i<256;i+=5)
{
if((i&1)==0)
{
pDC->MoveTo(i+10,280);
pDC->MoveTo(i+10,284);
}
else
{
pDC->MoveTo(i+10,280);
pDC->LineTo(i+10,282);
}
}
pDC->MoveTo(315,275);
pDC->LineTo(320,280);
pDC->LineTo(315,285);

pDC->MoveTo(10,10);
pDC->LineTo(5,15);
pDC->MoveTo(10,10);
pDC->LineTo(15,15);
for(i=m_iLow;i<=m_iUp;i++)
{
if(m_lCount[i]>max)
{
max=m_lCount[i];
}
}
pDC->MoveTo(10,25);
pDC->LineTo(14,25);
str.Format("%d",max);
pDC->TextOut(11,26,str);
pDC->SelectObject(pPenGreen);
pDC->MoveTo(m_iLow+10,25);
pDC->LineTo(m_iLow+10,280);

pDC->MoveTo(m_iUp+10,25);
pDC->LineTo(m_iUp+10,280);

pDC->SelectObject(pPenBlue);
if(max>0)
{
for(i=m_iLow;i<=m_iUp;i++)
{
pDC->MoveTo(i+10,280);
pDC->LineTo(i+10,281-(int)(m_lCount[i]*256/max));
}
}
pDC->SelectObject(pOld);
delete pPenRed;
delete pPenBlue;
delete pPenGreen;
bonn 2004-01-04
  • 打赏
  • 举报
回复
老师要的是用MFC写的,而且要有坐标系的,要有箭头

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧