网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > 课程设计 > 正文

VC++面向对象可视化编程创建窗口及填充

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
一.实验目的:
理解如何创建窗口及其填充,认识创建窗口的函数。
二.实验内容:
1.      创建窗口:
程序代码
  #include       //包含应用程序中所需的数据类型和数据结构的定义
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); //窗口函数说明
//--------------- 以下初始化窗口类 ----------------------
int WINAPI WinMain(HINSTANCE hInstance,
       HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{
  HWND hwnd ;
  MSG Msg ;
  WNDCLASS wndclass ;
  char lpszClassName[] = "窗口";       //窗口类名
  char lpszTitle[]= "昆工";    //窗口标题名
//窗口类的定义
wndclass.style=0;                 //窗口类型为默认类型
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=lpszClassName ;//窗口类名为"窗口"
if(!RegisterClass( &wndclass))//如果注册失败则发出警告
       { MessageBeep(0) ;         return FALSE ;   }
hwnd=CreateWindow
       (
       lpszClassName,             //窗口类名
       lpszTitle,               //窗口实例的标题名
       WS_OVERLAPPEDWINDOW,    //窗口的风格
       CW_USEDEFAULT,
       CW_USEDEFAULT,             //窗口左上角坐标为默认值
       CW_USEDEFAULT,
       CW_USEDEFAULT,      //窗口的高和宽为默认值
       NULL,                         //此窗口无父窗口
       NULL,                         //此窗口无主菜单
       hInstance,                    //创建此窗口的应用程序的当前句柄
       NULL ,                         //不使用该值
       );
ShowWindow( hwnd, nCmdShow) ;
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
       )
 
{  switch(message)
   { case WM_DESTROY:
              PostQuitMessage(0);
       default:    //默认时采用系统消息默认处理函数
              return DefWindowProc(hwnd,message,wParam,lParam);
  }
return(0);
}
结果:出现一个名为“昆工”的白色窗口
2.       字符填充:
 程序代码:
 #include
#include
#include
long WINAPI WndProc(
                   HWND hWnd,
                   UINT iMessage,
                   UINT wParam,
                   LONG lParam
                   );
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
HWND hWndMain;
//主函数
int WINAPI WinMain(
                   HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
     MSG Message;
     if(!InitWindowsClass(hInstance))  return FALSE;
     if(!InitWindows(hInstance,nCmdShow))return FALSE;
     while(GetMessage(&Message,0,0,0))//消息循环
            {
                   TranslateMessage(&Message);
                   DispatchMessage(&Message);
            }
            return Message.wParam;
}
//消息处理函数
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
     static long nXChar,nCaps,nYChar;
     HDC hDC;   //定义指向设备上下文的句柄    
     short x;
         TEXTMETRIC tm;
     short LnCount=6;
     PAINTSTRUCT PtStr; //定义指向包含绘图信息的结构体变量
     static char *textbuf[]=
            {
            "昆明理工大学",
            };
switch(iMessage)  //处理消息
 {case WM_CREATE:                      //处理窗口创建消息
     hDC=GetDC(hWnd) ;                //获取当前设备表句柄
          GetTextMetrics(hDC,&tm); //获取字体信息
          nXChar=tm.tmAveCharWidth;     //获取字符宽度
          nYChar=tm.tmHeight+tm.tmExternalLeading;
          nCaps=(tm.tmPitchAndFamily&1?3:2)*nXChar/2;
          ReleaseDC(hWnd,hDC);             //释放当前设备句柄
          return 0;
  case WM_PAINT:                        //处理重画消息
          hDC=BeginPaint(hWnd,&PtStr); //开始绘画
          for(x=0;x         TextOut(hDC,nXChar,nYChar*(1+x),textbuf[x],lstrlen(textbuf[x]));
          EndPaint(hWnd,&PtStr);
          return 0;
  case WM_DESTROY:                   //结束应用程序
          PostQuitMessage(0);
          return 0;
  default:             //其他消息处理程序
       return(DefWindowProc(hWnd,iMessage,wParam,lParam)) ;
 }
}
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)//初始化窗口
{    HWND hWnd;
     hWnd=CreateWindow("WinFill",  //生成窗口
                        "昆工",
                        WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT,
                        0,
                        CW_USEDEFAULT,
                        0,
                        NULL,
                        NULL,
                        hInstance,
                        NULL);
      if(!hWnd)     return FALSE;
      hWndMain=hWnd;
      ShowWindow(hWnd,nCmdShow);     //显示窗口
      UpdateWindow(hWnd);
      return TRUE;
}
 
BOOL InitWindowsClass(HINSTANCE hInstance)    //定义窗口类
{
 WNDCLASS WndClass;
 WndClass.cbClsExtra=0;
 WndClass.cbWndExtra=0;
 WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));
 WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
 WndClass.hIcon=LoadIcon(NULL,"END");
 WndClass.hInstance=hInstance;
 WndClass.lpfnWndProc=WndProc;
 WndClass.lpszClassName="WinFill";
 WndClass.lpszMenuName=NULL;
 WndClass.style=CS_HREDRAW|CS_VREDRAW;
 return RegisterClass(&WndClass);
}
运行结果:出现一个由“昆明理工大学”
              字样填充的名为“昆工”的白色窗口。
 三:窗口流程图:  略,找站长 
 
四:结果:
1.
 
2.
 
 
五.心得体会:
        通过同学的帮助和找资料,终于完成此次上机实验,感觉自己编程能力还不强,以后需要努力。
设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师