`
comceo
  • 浏览: 13747 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Win32基础窗口框架代码

    博客分类:
  • C++
阅读更多
#include <windows.h>
#include <windowsx.h>

//函数声明
BOOL InitWindow( HINSTANCE hInstance, int nCmdShow );
LRESULT CALLBACK WinProc ( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam );

//Win32程序入口函数,创建主窗口,处理消息循环
int PASCAL WinMain( HINSTANCE hInstance, //当前句柄实例
				   HINSTANCE hPrevInstance, //前一个句柄实例
				   LPSTR lpCmdLine, //命令行字符
				   int nCmdShow) //窗口显示方式
{
	MSG msg;

	//创建主窗口
	if (!InitWindow(hInstance,nCmdShow)){
		return FALSE;
	}

	//进入消息循环:
	//从该应用程序的消息队列中检取消息,送到消息处理过程,
	//当检取到WM_QUIT消息时,退出消息循环
	while (GetMessage(&msg,NULL,0,0)){
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	//结束
	return msg.wParam;
}

//创建窗口
static BOOL InitWindow(HINSTANCE hInstance,int nCmdShow){
	HWND hwnd; //窗口句柄
	WNDCLASS wc; //窗口类结构
	
	//填充窗口类结构
	wc.style = CS_VREDRAW | CS_HREDRAW;
	wc.lpfnWndProc = (WNDPROC)WinProc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = hInstance;
	wc.hIcon = LoadIcon(hInstance,IDI_APPLICATION);
	wc.hCursor = LoadCursor(hInstance,IDC_ARROW);
	wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wc.lpszMenuName = NULL;
	wc.lpszClassName = "LostAngel";
	RegisterClass(&wc); //注册窗口类
	hwnd = CreateWindow( //创建主窗口
		"MyGame", //窗口类名称
		"Welcome to my window!", //窗口名称
		WS_OVERLAPPEDWINDOW, //窗口风格
		100, //窗口位置的X坐标
		100, //窗口位置的Y坐标
		400, //窗口位置的宽度
		300, //窗口位置的高度
		NULL, //父窗口句柄
		NULL, //菜单句柄
		hInstance, //应用程序实例句柄
		NULL); //窗口创建数据指针

	if (!hwnd){
		return FALSE;
	}

	//显示并更新窗口
	ShowWindow(hwnd,nCmdShow);
	UpdateWindow(hwnd);
	return TRUE;
}

//处理主窗口消息
LRESULT CALLBACK WinProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam){
	switch(message){
		case WM_KEYDOWN: //击键消息
			switch(wParam){
				case VK_ESCAPE:MessageBox(hWnd,"Esc键被按下!","Keyboard",MB_OK);
					break;
			}
			break;
		case WM_RBUTTONDOWN: //鼠标右键
			{
				MessageBox(hWnd,"鼠标右键被按下","Mouse",MB_OK);
				break;
			}
		case WM_PAINT: //窗口重画消息
			{
				char hello[] = "你好,欢迎使用MyGame!";
				HDC hdc;
				PAINTSTRUCT ps;
				hdc = BeginPaint(hWnd,&ps); //取得设备环境句柄
				SetTextColor(hdc,RGB(0,0,255)); //设置文字颜色
				TextOut(hdc,20,10,hello,strlen(hello)); //输出文字
				EndPaint(hWnd,&ps); //释放资源
				break;
			}
		case WM_DESTROY: //退出消息
			PostQuitMessage(0); //调用退出函数
			break;
	}

	//调用缺省消息处理过程
	return DefWindowProc(hWnd,message,wParam,lParam);
}


本代码在VS2008下编写,编译通过。
分享到:
评论

相关推荐

    基于win32框架生成OpenGL窗口源代码

    网上有很多关于创建OPENGL窗口的代码,这里我基于win32框架编写了生成OPENGL窗口的代码,并且代码做了详细的注释,对于初学者很实用。

    华中科技大学汇编实验win32窗口程序框架

    华中科技大学汇编实验win32窗口程序框架包含代码。

    window32 API大全 win32编程

    在Win32应用程序的窗口中,可以显示比该窗口的显示区更大的数据对象,比如文档或位图。当窗口提供了滚动条时,用户就可以通过拖动滚动条来浏览该数据对象中位于显示区外面的部分。 滚动条包括水平滚动条和垂直滚动...

    java自动化操作win窗口元素

    selenium无法操作win窗口元素,例如附件上传等,RobotFramework框架中自带了AutoItLibrary扩展库,可以很好的操作这些元素,但用java结合selenium来自动化测试时,并没有已经封装的类库,但是可以借助autoit和jacob...

    win32鼠标定位器

    这个一个基于win32框架用vs2010编写的小程序,运用了定时器按时显示鼠标位置及所在窗口大小。

    Windows程序设计(第2版)王艳_源代码

    第2章 Win32程序运行原理   2.1 CPU的保护模式和Windows系统  2.2 内核对象   2.3 进程的创建  2.4 进程控制  2.5 【实例】游戏内存修改器 第3章 Win32程序的执行单元   3.1 多线程   3.2 线程...

    界面篇之自绘仿WIN8窗口界面(源码+文件)

    该资源讲解了如何在MFC中,通过界面自绘的方法,快速简单的自绘出一个仿WIN8窗口。 包含了:标题栏,边框,图片,文本,关闭按钮等。 基本上和WIN8窗口一样。 代码内容比较简单,重要代码都在一起,适合初学者,特别...

    C#去除窗体边框_变成无边框窗口

    C#去除窗体边框_变成无边框窗口,带关闭按钮,没有边框对拖动移动窗口有些麻烦,不过也会有解决办法,本例暂时只演示如何去除普通窗口的外边框,为以后制作各种奇形怪状的窗口作铺垫。 运行环境:Visual Studio2010

    类似VC风格的界面的源代码,可学习各种窗口拆分效果

    类似VC风格的界面的源代码,可学习各种窗口拆分效果,通过对源代码的学习,可以掌握这种经典界面的制作方法,并可直接将其框架利用到自己的程序中。

    MFC的程序框架剖析

    (1)对于Win32 SDK程序,应用程序的实例是由实例句柄(WinMain函数的hInstance参数)来标识的 (2)对于MFC程序,应用程序的实例是由全局对象(每一个MFC程序有且仅有一个从应用程序类CWinApp派生的类, 如CTestApp,它...

    Win10-UI 后台UI框架源代码

    Win10-UI是一款win10风格的后台UI框架。它使用了丰富的win10桌面元素,包括桌面图标、窗口化子页面管理、开始菜单、动态小磁贴等组件,兼容主流现代浏览器及移动端的屏幕尺寸,适合快速开发后台管理系统的前端界面。

    编程傻瓜--吻傻二汇编 V1.0 Build 0901

    它包含应用程序的建立、窗口的创建、文本的输出、控件的填加、菜单的设置和调用、图片的显示等程序框架和模板,用户只要根据自己的需要在窗口中设置选项,就可以快速、准确地自动生成相应的WIN32汇编源代码;...

    【souce insight3.5 安卓框架阅读】快捷键+代码风格+TabSiHost(合集!强烈推荐安卓开发)

    其一:读安卓框架源码时,soure insight的代码风格,快捷键 快捷键: F1:高亮 F2:查找symbol F3:对选中内容向后查找 F4:对选中内容向前查找 ctrl+~:打开类查找窗口 alt+1:打开类成员窗口 alt+q:后退 alt+w:...

    MFC解决窗口保存及重绘闪烁问题的一种比较好的方案 v1.0.5

    SolveFlashingAndRedraw框架是MFC解决窗口保存及重绘闪烁问题的一种比较好的方案(Win32解决方法类似)。 版本历史: v1.0.1 20091126 第一版本 v1.0.2 20091212 第二版本 1. 修改了部分变量的名字使其更符合其...

    C# Net Winform窗口特效 C# winform 实现 qq 在屏幕边缘 自动隐藏 鼠标移过去 移上去 又自动显示

    FormAutoDock.cs文件,请加引用: using System.Windows.Forms; C# winform 实现 qq 在屏幕...然后再自己的cs代码中加几行代码 调用就可以了。很简单。 C# Net Winform窗口特效 简单实现winform中,特殊的窗体效果。

    MiniPlayer源代码

    程序提供了一个较完整的窗口框架,例如菜单处理,Rebar和Toolbar控制。程序还解决了几个 编写Windows程序经常遇到的小问题:怎样把"Opend"对话框放到父窗口的中间?怎样实现全屏窗口?怎样让窗口总在最前面? 我要...

    编程MFC,MFC框架宝典

    MFC (Microsoft Foundation Class Library) 中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了...

    DK的特训-附源代码

    运行环境:Win9X/Me/NT/2000/XP/2003 MFC42运行库 开发环境:WinXp VC6 软件开发者:FanSin Studio 开发商网站: 作者:棼紫|DKink QQ:8566427 EMAIL:dkink@qq.com 【介绍】 这是经典而简单的游戏,我怎么可能会...

    LearnOpenGLES:OpenGL ES的C ++教程和代码示例。 支持绑定Qt。 支持Linux,Android和Windows

    您可以选择自己喜欢的显示表面,例如GLFW3,xcb(X11),WIN32UI和Qt。 您只需要创建一个本机窗口句柄(例如HWND和xcb_window_t),并将该窗口句柄交给EGL即可创建渲染表面。 它很容易集成到任何前端框架中,并且该...

    LHGDialog V3.5.2 正式版 lhgDialog弹出窗口组件 lhgdialog V3.5.2

    iWin(id) :获取指定id的窗口内容页的window对象(3.4.1新增)参数1:指定窗口的id,此函数用来返回指定id的窗口的内容页的window对象,主要用在传值使用中。 iDoc(id) :获取指定id的窗口内容页的document对象...

Global site tag (gtag.js) - Google Analytics