窗口的创建过程需要四个步骤,下面列出了创建步骤和这个过程中涉及的类和函数:
1.设计一个窗口类//很多特征(光标,图标,背景)WNDCLASS
2.注册窗口类//RegisterClass
3.创建窗口//首先定义句柄 如:HWND hwnd; CreateWindow
4.显示及更新窗口//显示窗口:ShowWindow,更新窗口:UpdateWindow
一、WNDCLASS类:
typedef struct _WNDCLASS {
UINT style; //
WNDPROC lpfnWndProc;
int cbClsExtra; //额外的内存空间,属于这种窗口类的所有窗口所共享,通常情况下设为0
int cbWndExtra; //额外的内存空间,窗口内存空间
HINSTANCE hInstance; //句柄
HICON hIcon; //句柄,图标
HCURSOR hCursor; //光标句柄
HBRUSH hbrBackground; //画刷句柄
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
} WNDCLASS, *PWNDCLASS;
第一个参数是指定类的类型,一般在Windows里面类有如下几种:(CS_BYTEALIGNCLIENT,CS_BYTEALIGNWINDOW,CS_CLASSDC,CS_DBLCLKS,CS_DROPSHADOW,CS_GLOBALCLASS,CS_HREDRAW,CS_NOCLOSE,CS_OWNDC,CS_PARENTDC,CS_SAVEBITS,CS_VRENRAW)它们都是只有一位为1的数值
第二个参数是回调函数,当应用程序收到给某一窗口的消息时,就应该调用某一函数来处理这条消息,这一调用过程不用应用程序自己来实施,而由操作系统完成,但是,回调函数本身的代码必须要应用程序自己完成。
第三和第四参数是系统额外分配的内存空间,其解释如上。
第五、六、七、八定义的是一个句柄,其结构类型如下:
HICON LoadIcon(
HINSTANCE hInstance, // handle to application instance
LPCTSTR lpIconName // name string or resource identifier
);//可以用Windows自带的标准图标,也可以CreateIcon,DestroyIcon
HCURSOR LoadCursor(
HINSTANCE hInstance, // handle to application instance
LPCTSTR lpCursorName // name or resource identifier
);//标准光标
在第九和第十个参数中,LPCTSTR:LONG POINTER CONST STRING.
二、创建窗口:
HWND CreateWindow(
LPCTSTR lpClassName, // registered class name
LPCTSTR lpWindowName, // window name
DWORD dwStyle, // window style
int x, // horizontal position of window
int y, // vertical position of window
int nWidth, // window width
int nHeight, // window height
HWND hWndParent, // handle to parent or owner window
HMENU hMenu, // menu handle or child identifier
HINSTANCE hInstance, // handle to application instance
LPVOID lpParam // window-creation data
);
三、显示窗口:
BOOL ShowWindow(
HWND hWnd, // handle to window
int nCmdShow // show state
);
四、更新窗口
BOOL UpdateWindow(
HWND hWnd // handle to window
);
分享到:
相关推荐
在IT领域,特别是Windows编程与游戏开发中...通过理解窗口句柄的概念、掌握窗口创建与显示的方法、熟悉窗口过程函数的编写,以及学会如何在小游戏中应用这些技术,开发者能够构建出具有专业水准的游戏界面和用户交互。
在VC++编程环境中,"不规则窗口创建"指的是创建一个具有非矩形形状的窗口,这种窗口的边框可以按照自定义的形状,比如图片的轮廓来定义,从而实现独特的视觉效果。这样的技术通常用于游戏、图形用户界面设计或者任何...
对于“窗口创建”,在MFC中,我们可以使用CWnd类作为基础,自定义我们需要的窗口类。比如,可以扩展CWnd类来创建一个包含控件树和Tab页的窗口。控件树通常使用CTreeCtrl类实现,它表示一个层次结构的列表,用户可以...
在这个“VC实现创建时即隐藏主窗口”的示例中,我们将探讨如何在基于Visual C++(VC)的单文档接口(Single Document Interface, SDI)应用程序中实现这一功能。 首先,我们需要理解SDI。SDI是一种用户界面模式,...
### VC窗口函数与窗口风格设定函数详解 在Visual C++(VC)开发环境中,窗口的创建、管理和控制是实现用户界面的重要组成部分。本篇将详细阐述VC中的窗口函数及其如何设置窗口风格,以便开发者能够更好地理解和应用...
总的来说,透明和半透明窗口的实现涉及到Windows编程的基本概念和技巧,包括窗口类的定义、窗口创建、消息处理以及对Windows API的熟练运用。通过理解这些原理和实践,你可以在自己的应用程序中创造出各种富有创意的...
2. **设置透明度**:在窗口创建后,调用SetLayeredWindowAttributes函数设置透明度。例如,将窗口设置为50%透明: ```cpp SetLayeredWindowAttributes(hwnd, RGB(255, 255, 255), 127, LWA_ALPHA); ``` 这里的...
MFC库封装了许多Windows API,使得开发者可以更高效地实现各种功能,比如创建窗口、处理消息、数据库访问等。在本实例中,我们将探讨如何使用MFC和VC++来创建一个非矩形形状的窗口,即“多边形窗口”。 创建多边形...
本资源“VC创建非矩形窗口 源码”提供了实现这一功能的源代码,适合对Windows API和MFC(Microsoft Foundation Classes)有一定了解的开发者参考学习。 在Windows系统中,默认情况下,应用程序的窗口都是矩形形状,...
在VC++编程中,创建和显示窗口是应用程序的基础操作,特别是在多线程环境中,这将涉及到线程同步、窗口消息处理等复杂概念。本篇将深入讲解如何在VC++的线程中创建并显示窗口,以及相关的技术要点。 首先,我们要...
在标题“vc窗口的实现”中,我们关注的是如何使用VC++的MFC(Microsoft Foundation Classes)库或者直接使用Windows API来创建一个基本的窗口。描述中提到的“最简单的代码”可能是指一个基础的“Hello, World!”...
一旦窗口创建成功,我们可以通过窗口句柄(HWND)对窗口进行进一步的操作。 在描述中提到的"SetWindowPos",这是Windows API中的一个重要函数,用于改变窗口的位置、大小以及Z顺序。Z顺序决定了窗口在屏幕上的叠加...
这个程序涉及到的核心知识点包括窗口创建、组件添加以及消息处理,这些都是构建Windows应用程序的基础。 首先,让我们了解窗口创建的过程。在Windows编程中,窗口是用户界面的基本元素。创建一个窗口需要以下几个...
- **创建子窗口**:为每个子窗口创建CWnd派生类,定义它们各自的特性并处理它们的内容显示。 - **注册消息映射**:在消息映射中添加处理用户交互(如拖动拆分条)的命令。 - **构建窗口**:在主窗口的OnCreate()...
"VC窗口拆分并加载相应的窗口"这一技术允许开发者将一个大的主窗口分割成多个独立的部分,每个部分可以加载不同的子窗口或视图,以实现更灵活的用户界面。 1. **窗口拆分组件**:在VC++中,TSplitter控件是实现窗口...
以上就是实现“VC窗口写字,字体向左运动,变色”的基本步骤。通过这种方式,你可以创建一个动态的文字显示效果,结合实际需求调整参数,如字体大小、颜色变化速度、运动速度等,以满足不同场景的应用。
创建窗口时,我们需要注册窗口类并创建窗口实例。 对于渐显渐隐效果,主要涉及两个关键部分:动画控制和时间管理。在VC6.0中,我们可以使用SetWindowPos函数来改变窗口的位置和大小,配合透明度调整,实现窗口的渐...
总结来说,“VC窗口置顶程序例子”是一个教学资源,旨在教授如何利用VC++和Windows API创建一个始终保持在屏幕最前面的窗口。通过学习和实践这个例子,开发者可以掌握窗口管理的核心技巧,这对于开发桌面应用程序和...
这个"VC窗口置顶src_VS2010.rar"压缩包可能包含了一个示例项目或源代码,用于演示如何在Visual Studio 2010中实现这一功能。让我们先理解窗口置顶的基本概念,然后逐步讲解如何通过VC进行实现。 窗口置顶,也称为...
- 为每个子窗口创建CView派生类,并在CSplitterWnd中注册它们。 - 在CView派生类中重写OnSize函数,以在主窗口大小改变时调整子窗口大小。 - 在OnSizing函数中加入代码来限制子窗口的最小和最大尺寸。 - 编译并...