一个简单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; }
相关文章推荐
- 查漏补缺——类(C++ Primer)
- C++ 读取 pcap文件
- 提高项目26.1-查成绩
- C语言中实现数组的动态增长
- 提高项目25.3选择排序
- C++sort函数的用法
- UVa1339(古老的密码)
- 【C++】实现的二叉搜索树BST
- C/C++框架和库
- C++traits技术的理解
- 【C语言】验证花括号成对出现
- Design Twitter
- C/C++预编译指令总结
- C/C++中sizeof()函数的用法
- C++析构函数
- C++函数模板
- c++中,用stringstream实现string的split
- 归并排序使用在c++STL实现
- SOAP Client Using Visual C++
- C++ primer plus笔记整理 01