您的位置:首页 > 编程语言 > C语言/C++

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

2016-07-07 23:12 701 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: