`
comceo
  • 浏览: 14119 次
  • 性别: 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窗口源代码

    这个"基于win32框架生成OpenGL窗口源代码"的示例,为初学者提供了在Windows环境下搭建OpenGL编程环境的基础。 首先,我们需要理解Win32 API的核心概念。Win32 API是Windows操作系统提供的函数库,包含了创建和管理...

    隐藏标题栏和边框 win32 C

    本文将详细介绍如何通过Win32 API来实现隐藏窗口的标题栏和边框。 ### 一、Win32 API基础 #### 1.1 窗口风格 在Windows系统中,每个窗口都有一个特定的样式,这些样式决定了窗口的行为和外观。例如,`WS_...

    win32 无边框可移动有透明度frame

    本文将深入探讨如何使用Win32 API来创建一个无边框、可移动且具有透明度的窗口,这正是“win32 无边框可移动有透明度frame”这个资源所实现的功能。 首先,我们从`Win32Frame.cpp`和`Win32Frame.h`这两个文件开始。...

    cef浏览器嵌入到Win32窗口

    本篇文章将深入探讨如何将CEF浏览器嵌入到Win32窗口中,基于CEF版本2171,这个版本被认为具有较高的稳定性和兼容性。 首先,理解CEF的基本工作原理是至关重要的。CEF的核心是Chromium的开源组件,它负责处理HTML、...

    WIN32 窗口框架

    **标题解析:** "WIN32 窗口框架" 指的是使用Windows API (Application Programming Interface) 创建的一种窗口程序的基本结构。在Windows操作系统环境下,开发者可以通过利用WIN32 API来构建图形用户界面(GUI),...

    win32创建能拖动的窗口

    本篇文章将深入探讨如何使用C++和Win32 API创建一个能拖动的窗口,并处理相关的消息事件。 首先,我们需要定义一个窗口类。窗口类包含了窗口的各种属性,如窗口样式、背景刷、窗口过程等。在C++中,我们可以使用`...

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

    【华中科技大学汇编实验win32窗口程序框架】是一个针对初学者和进阶者设计的教学资源,旨在帮助学习者理解和掌握使用汇编语言编写Windows操作系统下的图形用户界面(GUI)程序。在这个实验中,你将接触到Win32 API,...

    我的Win32框架基础类

    "我的Win32框架基础类"是一个基于SDK(Software Development Kit)实现的Windows应用程序开发框架,它模仿了MFC(Microsoft Foundation Classes)的设计思想,旨在简化Win32 API的使用,提供更高级别的抽象和封装。...

    win32经典代码

    在编程领域,Windows API,通常称为Win32 API,是一组...虽然现代的Windows开发更倾向于使用更高层次的框架,如.NET Framework或Microsoft UWP,但对Win32 API的理解仍然是成为一名全面的Windows开发者的重要组成部分。

    SDK Win32 API 计算器 源代码

    SDK Win32 API 计算器源代码是用于开发基于Windows操作系统的基本计算器程序的源码。这个源代码不依赖Microsoft Foundation Class Library (MFC),而是直接使用Windows SDK提供的Win32 API函数,使得开发者能够更...

    win32简单的框架

    总的来说,这个"win32简单的框架"是学习和实践C++ Win32编程的一个好起点,涵盖了从基本窗口创建到复杂UI交互的多个层次,同时也可能为游戏开发提供了基础支持。对于初学者而言,通过这个框架可以深入理解Windows...

    Win32窗口事例.txt

    通过以上对代码的详细解析,我们可以了解到Win32 API的基本用法以及如何创建和管理一个简单的窗口。这个实例不仅有助于理解Windows编程的基本概念,也为进一步学习更复杂的Windows应用程序开发奠定了基础。

    win32实现透明窗口

    在Windows编程中,Win32 API提供了一种创建具有透明效果窗口的方法。本文将深入探讨如何在不使用MFC(Microsoft Foundation Classes)框架且结合GDI+与PNG图像的情况下,实现一个半透明窗口的示例。 首先,我们需要...

    win32 调用 含qt界面的DLL.win32程序

    3. **使用QWinWidget**:如果可能,可以在Win32窗口类中嵌入一个`QWinWidget`,将Qt界面直接绘制在Win32窗口上,这样就无需关心事件循环的问题。 在本文档提供的`win32demo`示例中,可能包含了上述方法的实现,具体...

    win32程序调用MFC对话框资源

    Win32 API提供了底层的窗口、消息处理和系统服务,而MFC则是在此基础上构建的一套面向对象的库,它封装了Win32 API,简化了Windows应用程序的开发。本文将深入探讨如何在纯Win32程序中调用MFC对话框资源,以及在调用...

    Win32编程基础知识__200

    在这个环境中,可以通过新建项目的方式快速搭建起一个Win32应用程序的基础框架。具体步骤如下: 1. **新建项目**:选择“文件”-&gt;“新建”-&gt;“项目”,然后选择“Win32 应用程序”,输入项目名称和位置,选择合适的...

    一个纯净的WIN32+OPENGL框架

    标题中的“一个纯净的WIN32+OPENGL框架”指的是一个基于Windows API(WIN32)构建的基础图形渲染框架,该框架专为使用OpenGL图形库而设计。OpenGL是一种跨语言、跨平台的编程接口,用于生成2D和3D图形。这个框架可能...

    Win32写的磁性窗体

    总的来说,磁性窗体的实现主要依赖于对Win32 API的深入理解和熟练使用,特别是处理窗口消息和窗口几何布局的部分。通过这种方式,我们可以创建出具有高级交互特性的Windows应用程序,提供更好的用户体验。如果你对...

    win32实现listbox列表框自绘

    然而,这里可能是直接调用`Win32 API`函数,不依赖于这些高级框架。 5. **OwnerDraw过程**:当`ListBox`被设置为`OwnerDraw`模式时,它会发送`WM_DRAWITEM`消息给父窗口。这个消息包含了绘制控件所需的信息,如画布...

    win7界面窗口.rar

    "win7界面窗口.rar"这个压缩包中包含的易语言源码,为我们提供了深入理解Windows 7界面窗口设计与实现的宝贵资源。 Windows 7界面的一大特色是 Aero Glass 效果,它赋予了窗口半透明和动态模糊的视觉效果,使得整个...

Global site tag (gtag.js) - Google Analytics