一个简单c语言windows程序的实现

#include<windows.h>
#include<stdio.h>
LRESULT CALLBACK WinSunProc(
       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,                 //commannd line
 int  nCmdShow                    //show state
 )
//设计窗口类:
{
 WNDCLASS wndclass;
 wndclass.cbClsExtra=0;        //而外的类的附加字节数,不需要,赋值为0;
 wndclass.cbWndExtra=0;        //窗口而外的附加字节数,不需要,赋值为0;
 wndclass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);  //背景设为黑色的画刷,背景用GetStockObject()这个函数,它返回的是一个hGDI
            //的值,要进行强制类型转换.
 //光标可以用Loadcursor(),第一个参数是一个应用程序的实例号,如果我们用的是一个标准的光标,第一个参数设为NULL,后面的是光标的标实符,
 //如果我们记不住的话,可以查MSDN.
 wndclass.hCursor=LoadCursor(NULL,IDC_CROSS);
 //图标可以用LoadIcon()去获取,如果我们用的是一个标准的图标,第一个参数设为NULL,后面用一个error的图标.
 wndclass.hIcon=LoadIcon(NULL,IDI_ERROR);
 //应用程序实例号
 wndclass.hInstance=hInstance;
 //窗口过程函数 
 wndclass.lpfnWndProc=WinSunProc;
 //窗口类名我们把它叫做Weixin2003
 wndclass.lpszClassName="c语言";
 //设置菜单的名字,因为在这我们不设菜单,所以在这我们将其设为NULL
 wndclass.lpszMenuName=NULL;
 //窗口类的类型,水平重画,垂直重画
 wndclass.style=CS_HREDRAW | CS_VREDRAW;
 //注册窗口类,
 RegisterClass(&wndclass);
 //创建窗口,定义一个句柄,CreateWindow(),里面的参数第一个是我们的类名,记住不要写错了,窗口的名字可以叫做北京维新科学技术培训中心,
 //接下来的一个参数是窗口的类型,接下来的是水平坐标,垂直坐标,高度,宽度,可以自己设置,副窗口没有的话可以设为NULL,菜单没有就设为
 //NULL,接下来的是实例句柄hInstance,接下来的窗口创建的数据也没有,设为NULL。
 HWND hwnd;
 hwnd=CreateWindow("c语言","windows程序设计",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);
 //接下来的话就要显示窗口ShowWindow()
 ShowWindow(hwnd,SW_SHOWNORMAL);
 //接下来的话可以更新一个窗口UpdateWindow()
 UpdateWindow(hwnd);
 //接下来的是我们的消息循环,将句柄设为空,我们想获取所有的消息,可以将其设为0,0
 MSG msg;

 while(GetMessage(&msg,NULL,0,0))
 {
  //利用TranslateMessage进行转换
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }
 return 0;
}

 //************************************************************************************
 //********************接下来写窗口过程函数的代码**************************************
 //可以查MSDN,WNDCLASS,作一个函数原型的声明
 //***************************接下来进行函数的定义*************************************
 LRESULT CALLBACK WinSunProc(
       HWND hwnd,//handle to window
       UINT uMsg,//message identifier
       WPARAM wParam,//first message parameter
       LPARAM lParam//second message parameter
       )
 {
 
  //判断消息
  switch(uMsg)
  {
  case WM_CHAR:
   char szChar[20];
   sprintf(szChar,"char is %d",wParam);
   MessageBox(hwnd,szChar,"QQ1418913517",0);
   break;
  case WM_LBUTTONDOWN:
   MessageBox(hwnd,"mouse clicked","c语言",0);
   HDC hdc;
   TextOut(hdc,0,50,"windows程序设计",strlen("windows程序设计"));
   ReleaseDC(hwnd,hdc);
   break;
  case WM_PAINT:
   HDC hDC;
   PAINTSTRUCT ps;
   hDC=BeginPaint(hwnd,&ps);
   TextOut(hDC,0,0,"c程序",strlen("c程序"));
   EndPaint(hwnd,&ps);
   break;
  case WM_CLOSE:
   if(IDYES==MessageBox(hwnd,"是否真的结束?","QQ1418913517",MB_YESNO))
   {
    DestroyWindow(hwnd);
   }
   break;
  case WM_DESTROY:
   PostQuitMessage(0);
   break;
  default:
   return DefWindowProc(hwnd,uMsg,wParam,lParam);
  }
  return 0;
 }

 


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值