dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>C/C++>文章内容
Windows 应用程序的入口函数编写
来源: vckbase 作者: 章志强 <
        
       推荐:

  写任何一个函数当然应该有一个该函数的入口了。我们知道c语言里的入口函数是main()函数,那么在写Windows应用程序也是main()吗?回答当然不是了。我们用的是WinMain()函数,不过我们在写MFC程序的时候好象没有看到该函数,其实这是微软为了帮助我们快速写一个基于Windows应用程序,而把它封装起来了,当然我们也是可以找到的。在这里,我们试着自己编写一个WinMain()函数。好了,我们进入主题吧!首先,我们要包含一些库。
#include <windows.h>

#include <stdio.h>


  还有,我们应该学会使用msdn快速查找到我们所需要的信息。

  这里,windows是基于消息的应用程序,我们应该先编写一个消息响应函数,即一个回调函数。

LRESULT CALLBACK WinMYProc(

  HWND hWnd,      // handle to window

  UINT uMsg,      // message identifier

  WPARAM wParam,  // first message parameter

  LPARAM lParam   // second message parameter

);


  接下来是WinMain
int WINAPI WinMain(

  HINSTANCE hInstance,      // handle to current instance

  HINSTANCE hPrevInstance,  // handle to previous instance

  LPSTR lpCmdLine,          // command line

  int nCmdShow              // show state

)

{

WNDCLASS wndcls;//注册窗口类

wndcls.cbClsExtra=0;

	wndcls.cbWndExtra=0;

	wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//窗口画刷

	wndcls.hCursor=LoadCursor(NULL,IDC_ARROW);//鼠标

	wndcls.hIcon=LoadIcon(NULL,IDI_WINLOGO);//图标

	wndcls.hInstance=hInstance;//窗口实例

	wndcls.lpfnWndProc=WinMYProc;//窗口函数

	wndcls.lpszClassName="BEYOND";//窗口类名

	wndcls.lpszMenuName=NULL;//菜单名(这里为空)

	wndcls.style=CS_HREDRAW | CS_VREDRAW;//窗口风格(水平重绘和垂直重绘)

	RegisterClass(&wndcls);//注册窗口



//注册完窗口,接着是创建和显示窗口了

HWND hWnd;

hWnd=CreateWindow("BEYOND",lovebeyond",WS_OVERLAPPEDWINDOW,

		0,0,600,400,NULL,NULL,hInstance,NULL);

	ShowWindow(hwnd,SW_SHOWNORMAL);//显示

	UpdateWindow(hWnd);//更新



//接下来是消息循环了

	MSG msg;

	while(GetMessage(&msg,NULL,0,0))//当不为WM_QUIT时,继续消息循环

	{

		TranslateMessage(&msg);//用于翻译消息

		DispatchMessage(&msg);//发送消息

	}

	return msg.wParam;//返回一个参数

}





//消息响应函数

LRESULT CALLBACK WinMYProc(

  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,"char",0);

		break;

	case WM_LBUTTONDOWN://鼠标左键按下

		MessageBox(hWnd,"mouse clicked","message",0);

		break;

	case WM_PAINT://窗口重绘消息

		HDC hDC;

		PAINTSTRUCT ps;

		hDC=BeginPaint(hWnd,&ps);

		TextOut(hDC,0,0,"lovebeyond",strlen("lovebeyond"));

		EndPaint(hwnd,&ps);

		break;

	case WM_CLOSE://关闭消息

		if(IDYES==MessageBox(hWnd,"想要结束吗?","message",MB_YESNO))

		{

			DestroyWindow(hWnd);

		}

		break;

	case WM_DESTROY://销毁窗口消息

		PostQuitMessage(0);

		break;

	default://默认窗口消息处理

		return DefWindowProc(hWnd,uMsg,wParam,lParam);

	}

	return 0;

}


  到此,所有程序结束,读者也可以试着自己写一个类似的程序,加入更多的响应功能。这里就到此结束。希望对大家了解windows程序有所帮助。

上一篇:VC中利用MFC设计绘图程序初步   下一篇:Windows任务管理器开发原理与实现
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·C语言学习
·C语言指针
·C语言数组排序小结
·c语言 最简单的推箱子游戏
·c语言 全国计算机编程大赛复赛试
·c语言 全国计算机编程大赛复赛试
·c++ 数组与指针
·C++中的内存管理(new、delete、
·如何用C语言开发DSP嵌入式系统
·如何用C语言开发DSP嵌入式系统
·Linux下C语言编程
·学习arm的话先看哪本书?
  相关文章
·VC中利用MFC设计绘图程序初步
·Windows任务管理器开发原理与实
·基于Winsock API的VC网络编程实
·Windows按键突破专家的原理
·用Visual C++实现局域网IP多播
·Visual C++视频教程:第一课 A-1
·Visual C++制作一个Sniffer实例
·Visual C++视频教程:第一课 A-2
·MFC 编写的仿 Windows 计算器
·Visual C++视频教程:第一课 B
·VC防止窗口和控件闪烁的方法
·Visual C++视频教程:第一课 C
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763