#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窗口源代码"的示例,为初学者提供了在Windows环境下搭建OpenGL编程环境的基础。 首先,我们需要理解Win32 API的核心概念。Win32 API是Windows操作系统提供的函数库,包含了创建和管理...
本文将详细介绍如何通过Win32 API来实现隐藏窗口的标题栏和边框。 ### 一、Win32 API基础 #### 1.1 窗口风格 在Windows系统中,每个窗口都有一个特定的样式,这些样式决定了窗口的行为和外观。例如,`WS_...
本文将深入探讨如何使用Win32 API来创建一个无边框、可移动且具有透明度的窗口,这正是“win32 无边框可移动有透明度frame”这个资源所实现的功能。 首先,我们从`Win32Frame.cpp`和`Win32Frame.h`这两个文件开始。...
本篇文章将深入探讨如何将CEF浏览器嵌入到Win32窗口中,基于CEF版本2171,这个版本被认为具有较高的稳定性和兼容性。 首先,理解CEF的基本工作原理是至关重要的。CEF的核心是Chromium的开源组件,它负责处理HTML、...
**标题解析:** "WIN32 窗口框架" 指的是使用Windows API (Application Programming Interface) 创建的一种窗口程序的基本结构。在Windows操作系统环境下,开发者可以通过利用WIN32 API来构建图形用户界面(GUI),...
本篇文章将深入探讨如何使用C++和Win32 API创建一个能拖动的窗口,并处理相关的消息事件。 首先,我们需要定义一个窗口类。窗口类包含了窗口的各种属性,如窗口样式、背景刷、窗口过程等。在C++中,我们可以使用`...
【华中科技大学汇编实验win32窗口程序框架】是一个针对初学者和进阶者设计的教学资源,旨在帮助学习者理解和掌握使用汇编语言编写Windows操作系统下的图形用户界面(GUI)程序。在这个实验中,你将接触到Win32 API,...
"我的Win32框架基础类"是一个基于SDK(Software Development Kit)实现的Windows应用程序开发框架,它模仿了MFC(Microsoft Foundation Classes)的设计思想,旨在简化Win32 API的使用,提供更高级别的抽象和封装。...
在编程领域,Windows API,通常称为Win32 API,是一组...虽然现代的Windows开发更倾向于使用更高层次的框架,如.NET Framework或Microsoft UWP,但对Win32 API的理解仍然是成为一名全面的Windows开发者的重要组成部分。
SDK Win32 API 计算器源代码是用于开发基于Windows操作系统的基本计算器程序的源码。这个源代码不依赖Microsoft Foundation Class Library (MFC),而是直接使用Windows SDK提供的Win32 API函数,使得开发者能够更...
总的来说,这个"win32简单的框架"是学习和实践C++ Win32编程的一个好起点,涵盖了从基本窗口创建到复杂UI交互的多个层次,同时也可能为游戏开发提供了基础支持。对于初学者而言,通过这个框架可以深入理解Windows...
通过以上对代码的详细解析,我们可以了解到Win32 API的基本用法以及如何创建和管理一个简单的窗口。这个实例不仅有助于理解Windows编程的基本概念,也为进一步学习更复杂的Windows应用程序开发奠定了基础。
在Windows编程中,Win32 API提供了一种创建具有透明效果窗口的方法。本文将深入探讨如何在不使用MFC(Microsoft Foundation Classes)框架且结合GDI+与PNG图像的情况下,实现一个半透明窗口的示例。 首先,我们需要...
3. **使用QWinWidget**:如果可能,可以在Win32窗口类中嵌入一个`QWinWidget`,将Qt界面直接绘制在Win32窗口上,这样就无需关心事件循环的问题。 在本文档提供的`win32demo`示例中,可能包含了上述方法的实现,具体...
Win32 API提供了底层的窗口、消息处理和系统服务,而MFC则是在此基础上构建的一套面向对象的库,它封装了Win32 API,简化了Windows应用程序的开发。本文将深入探讨如何在纯Win32程序中调用MFC对话框资源,以及在调用...
在这个环境中,可以通过新建项目的方式快速搭建起一个Win32应用程序的基础框架。具体步骤如下: 1. **新建项目**:选择“文件”->“新建”->“项目”,然后选择“Win32 应用程序”,输入项目名称和位置,选择合适的...
标题中的“一个纯净的WIN32+OPENGL框架”指的是一个基于Windows API(WIN32)构建的基础图形渲染框架,该框架专为使用OpenGL图形库而设计。OpenGL是一种跨语言、跨平台的编程接口,用于生成2D和3D图形。这个框架可能...
总的来说,磁性窗体的实现主要依赖于对Win32 API的深入理解和熟练使用,特别是处理窗口消息和窗口几何布局的部分。通过这种方式,我们可以创建出具有高级交互特性的Windows应用程序,提供更好的用户体验。如果你对...
然而,这里可能是直接调用`Win32 API`函数,不依赖于这些高级框架。 5. **OwnerDraw过程**:当`ListBox`被设置为`OwnerDraw`模式时,它会发送`WM_DRAWITEM`消息给父窗口。这个消息包含了绘制控件所需的信息,如画布...
"win7界面窗口.rar"这个压缩包中包含的易语言源码,为我们提供了深入理解Windows 7界面窗口设计与实现的宝贵资源。 Windows 7界面的一大特色是 Aero Glass 效果,它赋予了窗口半透明和动态模糊的视觉效果,使得整个...