毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 报告 >> 正文

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

更新时间:2007-9-26:  来源:毕业论文

.实验目的:

理解如何创建窗口及其填充,认识创建窗口的函数。

.实验内容:

1.      创建窗口:

程序代码

  #include<windows.h>       //包含应用程序中所需的数据类型和数据结构的定义

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<windows.h>

#include<stdlib.h>

#include<string.h>

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<LnCount;x=x+1)       //输出文本

         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

 

 

五.心得体会:

        通过同学的帮助和找资料,终于完成此次上机实验,感觉自己编程能力还不强,以后需要努力。

VC++面向对象可视化编程创建窗口及填充下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。