标题:Visual C++下 OpenGL 绘图程序的一个问题
只看楼主
x7490964
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-9-24
 问题点数:0 回复次数:2 
Visual C++下 OpenGL 绘图程序的一个问题
启动Visual C++, 鼠标点击【文件】【新建】【工程】【MFC AppWizard(exe)】,输入工程名hello,【确定】【基本对话框】【完成】【确定】。

应用程序框架生成后,MFC为生成了以下3个主要类:
CAboutDlg: 关于对话框类,程序的关于部分
CHelloApp:  应用程序类,管理程序的初始化和环境变量
CHelloDlg:   对话框类,显示和管理数据
点击工作区窗口左下角的类视图(ClassView)可查看到上述3个类


在对话框中单击选中静态文本框【"TODO: 在这里设置对话控制"】,按[delete]键删除它!

在菜单栏空白处右击,并钩选【控件】打开控件面板。在控件面板点击控件【Aa】 并拖到对话框中,得到一个static


在控件面板点击控件【 】 并拖到对话框中,得到一个编辑框。右击它并选择【属性】,记住它的ID (假设为IDC_EDIT1)。同样的方法再添加一个编辑框IDC_EDIT2


右击编辑框,选择【建立类向导】,单击第一个编辑框的ID【IDC_EDIT1】、单击【Member Variables】、单击【Add Variable...】、在【Member Variable name】栏内填入变量名x0、下拉【Category】选【Value】、下拉【Variable Type】选【int】,单击【OK】;单击第二个编辑框的ID【IDC_EDIT2】、单击【Add Variable...】、在【Member Variable name】栏内填入变量名y0、下拉【Category】选【Value】、下拉【Variable Type】选【int】,单击【OK】;单击【确定】。

但单击【确定】后,ClassView无法再查看到CHelloDlg这个类了

别人的电脑都用得好好的,而我的却出现这个问题,试了多少次都一样
到底是怎么回事啊,刚怎么解决
搜索更多相关主题的帖子: OpenGL Visual 绘图 
2008-09-24 22:44
mayudong1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:348
专家分:21
注 册:2006-4-18
得分:0 
把哪个后缀为CLW的文件删掉,在点ClassView新建一个那个文件试一下

2008-09-25 17:32
雾隐枫
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-5-5
得分:0 
一个风车程序里的难处
//源程序如下
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define PI 3.1415926

int nNum=0,nMaxNum=20;//我不知道,为什么有这两个变量

LRESULT CALLBACK WindowProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
);
int WINAPI WinMain(
  HINSTANCE hInstance,      // handle to current instance
  HINSTANCE hPrevInstance,  // handle to previous instance
  LPSTR lpCmdLine,          // command line
  int nCmdShow              // show state
)

{
    HWND hwnd;
    MSG Msg;
    WNDCLASS wndclass;
    wndclass.cbClsExtra=0;
    wndclass.cbWndExtra=0;
    wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
    wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wndclass.hInstance=hInstance;
    wndclass.lpfnWndProc=WindowProc;
    wndclass.lpszClassName="abc";
    wndclass.lpszMenuName=NULL;
    wndclass.style=0;

    RegisterClass(&wndclass);

    hwnd=CreateWindow("abc","旋转的风车",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,600,450,NULL,NULL,hInstance,NULL);

    ShowWindow(hwnd,SW_SHOWNORMAL);
    UpdateWindow(hwnd);

    while(GetMessage(&Msg,hwnd,NULL,0))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return 0;
}

LRESULT CALLBACK WindowProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{
    HDC hdc;
    HBRUSH hBrush;
    HPEN hp;
    PAINTSTRUCT ps;
    int nCenterX,nCenterY;
    double fAngle;

    switch(uMsg)
    {
    case WM_PAINT:
        hdc=BeginPaint(hwnd,&ps);
        SetMapMode(hdc,MM_ANISOTROPIC);
        SetWindowExtEx(hdc,400,300,NULL);
        SetViewportExtEx(hdc,600,450,NULL);
        SetViewportOrgEx(hdc,300,200,NULL);

//        绘制外圆
        hp=CreatePen(PS_SOLID,1,RGB(255,0,255));
        SelectObject(hdc,hp);
        Ellipse(hdc,-100,-100,100,100);

//        绘制风车的叶片
//        绘制红色的叶片
        hBrush=CreateSolidBrush(RGB(255,0,0));
        SelectObject(hdc,hBrush);
        fAngle=2*PI/nMaxNum*nNum;//这里也看不懂 ,fangle,实现了什么功能?
        nCenterX=(int)(50*cos(fAngle));
        nCenterY=(int)(50*sin(fAngle));
        Pie(hdc,nCenterX-50,nCenterY-50,nCenterX+50,nCenterY+50,(int)(nCenterX+50*cos(fAngle)),(int)(nCenterY+50*sin(fAngle)),(int)(nCenterX+50*cos(fAngle+PI)),(int)(nCenterY+50*sin(fAngle+PI)));//上面的pie画图函数的参数,用正弦,余弦,为什么要用这两个函数,实现了什么功能呢?

//        绘制蓝色的叶片
        hBrush=CreateSolidBrush(RGB(255,255,0));
        SelectObject(hdc,hBrush);
        nCenterX=(int)(50*cos(fAngle+2*PI/3));
        nCenterY=(int)(50*sin(fAngle+2*PI/3));
        Pie(hdc,nCenterX-50,nCenterY-50,nCenterX+50,nCenterY+50,(int)(nCenterX+50*cos(fAngle+2*PI/3)),(int)(nCenterY+50*sin(fAngle+2*PI/3)),(int)(nCenterX+50*cos(fAngle+PI+2*PI/3)),(int)(nCenterY+50*sin(fAngle+PI+2*PI/3)));
        
//        绘制黄色的叶片
        hBrush=CreateSolidBrush(RGB(0,255,255));
        SelectObject(hdc,hBrush);
        nCenterX=(int)(50*cos(fAngle+4*PI/3));
        nCenterY=(int)(50*sin(fAngle+4*PI/3));
        Pie(hdc,nCenterX-50,nCenterY-50,nCenterX+50,nCenterY+50,(int)(nCenterX+50*cos(fAngle+4*PI/3)),(int)(nCenterY+50*sin(fAngle+4*PI/3)),(int)(nCenterX+50*cos(fAngle+PI+4*PI/3)),(int)(nCenterY+50*sin(fAngle+PI+4*PI/3)));

        nNum++;//这个实现了什么?
        Sleep(100);//这个实现了什么?
        InvalidateRect(hwnd,NULL,1);
        EndPaint(hwnd,&ps);

        return 0;
    case WM_CLOSE:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hwnd,uMsg,wParam,lParam);
    }
    return 0;
}

 

这个程序实现了,旋转的风车,但是有的看不懂,请大侠帮忙看一下,谢拉
2008-09-27 10:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-235041-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.063081 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved