DJYGUI系列文章七:GDD窗口系统

news2025/2/25 19:03:43

目录

1 窗口分类及关系

2 窗口的客户区与非客户区

3 坐标系统

4 窗口句柄与窗口ID的作用与区别

5 窗口的关闭、销毁、退出过程

6 API说明

6.1 ScreenToClient: 屏幕坐标转换为客户区坐标

6.2 ClientToScreen: 客户区坐标转换为屏幕坐标

6.3 ScreenToWindow:屏幕坐标转换为窗口坐标

6.4 WindowToScreen: 窗口坐标转换为屏幕坐标

​​​​​​​6.5 GetDesktopWindow: 获得桌面窗口句柄

​​​​​​​6.6 GetWindowRect: 获得窗口矩形

​​​​​​​6.7 GetClientRect: 获得窗口客户区矩形

​​​​​​​6.8 GetClientRectToScreen: 取窗口客户区矩形的屏幕坐标

​​​​​​​6.9 GetWindowDC: 获得窗口绘图上下文

6.10 GetDC:获得窗口客户区绘图上下文

6.11 ReleaseDC: 释放一个绘图上下文

6.12 BeginPaint: 开始绘图

6.13 EndPaint: 结束绘图

6.15 DestroyWindow: 销毁窗口

6.16 MoveWindow: 移动窗口位置

6.18 IsWindowVisible: 判断窗口是否可见

6.19 InvalidateWindow: 设置窗口为无效状态

6.20 ShowWindow: 设置窗口为显示或隐藏状态

6.21 EnableWindow: 设置窗口为使能或禁止状态

6.22 GetParent: 获得父窗口句柄

6.23 GetWindow: 获得与指定窗口有特定关系的窗口句柄

6.24 GetDlgItem: 获得窗口中指定ID的子窗口的句柄

6.25 SetWindowText:设置窗口文字

​​​​​​​6.26 GetWindowText:获得窗口文字

​​​​​​​6.27 GetWindowFromPoint: 获得指定屏幕坐标位置所在的窗口

​​​​​​​6.28 SetFocusWindow:设置当前焦点窗口

6.29 GetFocusWindow:获得当前焦点窗口

​​​​​​​6.30 IsFocusWindow:判断指定窗口是否为当前焦点窗口

​​​​​​​6.31 DefWindowProc: 系统默认的窗口消息处理函数


1 窗口分类及关系

        GDD中窗口分为三大类:桌面窗口、主窗口、控件。

        桌面窗口是整个系统唯一的一个全局根窗口,它在系统启动时,由系统自动创建,如果用户要对桌面窗口进行操作,可以先通过GetDesktopWindow获得桌面窗口句柄。可以使用相应的窗口API函数集对其进行操作。

        主窗口由用户创建,是用户图形窗口程序必须创建的第一个窗口。是所有控件的载体,也负责整个用户窗口程序的消息事件收集与派发。

        控件是在主窗口创建之后,由用户创建。控件不是必须的,一个窗口系统必须至少有一个主窗口,而控件则是用户按实际应用情况,是否使用;控件和主窗口一样,都是使用CreateWindow函数来创建它,与创建主窗口不同的是:当需要创建的窗口为控件时,必须指定该窗口为WS_CHILD风格,需要指明控件所属的父窗口,以及为每个控件指定一个同级窗口中的唯一ID,具体请参考CreateWindow: 创建窗口。GDD提供了一些常用标准控件给用户使用,如按钮、复选框、单选框等。

        三种不同类型窗口示例如图 2-1所示:

图 2-1GDD三种窗口示意图

2 窗口的客户区与非客户区

        窗口区域分为客户区与非客户区两部分。在一个窗口中,标题栏,边框就是窗口的非客户区,中间区域称为客户区。它们的关系如图 2-2所示:

 图 2-2 客户区示意图

3 坐标系统

        GDD的所有坐标都是像素数坐标,有三种坐标系统,相互之间是可以转换的,这三种坐标系统分别是:屏幕坐标,窗口坐标,客户坐标。

        屏幕坐标以屏幕左上角为坐标原点,水平方向为X值,垂直方向为Y值构成坐标系。

        窗口坐标以窗口左上角为坐标原点,水平方向为X值,垂直方向为Y值构成坐标系。

        客户坐标以窗口客户区左上角为坐标原点,水平方向为X值、垂直方向为Y值构成坐标系。

三种坐标关系示意图 2-3如下:

 图 2-3 GDD三种坐标示意图

​​​​​​​​​​​​​​

4 窗口句柄与窗口ID的作用与区别

        在窗口程序中,用户会经常和窗口句柄,窗口ID打交道,窗口句柄是由系统自动分配的,无需用户干预,对窗口操作访问,都只能通过句柄进行;而窗口ID,是在创建窗口时,由用户指定的一个任意32位数,一般用于对同级窗口(兄弟窗口)间的标识区分,同级窗口间,它们的ID需由用户创建窗口时保证唯一性,对于不同父窗口下的子窗口,它们的ID是可以重复的;例如一个窗口A和窗口B,它们都可以创建一个指定ID为1的子窗口,这是合法的,另外补充一点,窗口ID是针对来标识子窗口的,因此,桌面窗口及所有主窗口是没有ID标识的概念的,当用户创建一个主窗口时,系统会忽略CreateWindow函数的ID参数值,具体请参数 CreateWindow 函数。

5 窗口的关闭、销毁、退出过程

        这个步骤流程如下:

        1.发送MSG_CLOSE消息,该消息可以由系统产生(比如用户点击窗口的” ×” 按钮,也可以是用户主动发送MSG_CLOSE消息(使用SendMessage函数)。

        2.用户在窗口过程函数中响应MSG_CLOSE消息,在这一步中,用户还能决定是否继续真正关闭和销毁窗口,如果不需要,则直接丛该消息响应过程中返回,否则,用户需调用DestroyWindow函数来继续销毁窗口。

        3.响应MSG_DESTROY消息,该消息是由DestroyWindow函数产生的,到了这里,窗口关闭、销毁已经是“无可挽回”的地步,用户可以在这里做一些资源释放工作,如果销毁的是主窗口,用户必须要在MSG_DESTROY消息响应过程中调用PostQuitMessage函数,如果是子窗口,则不需要调用,子窗口关闭、销毁过程也至此结束。

        4.如果是主窗口,由于在MSG_DESTROY中调用了PostQuitMessage函数,该函数会产生一条MSG_QUIT消息,当主窗口消息循环中的GetMessage函数获得到MSG_QUIT消息时,会在该函数返回前销毁主窗口,并返回FALSE,如是,整个窗口消息循环至此结束。

6 API说明

6.1 ScreenToClient: 屏幕坐标转换为客户区坐标

BOOL ScreenToClient(HWND hwnd,POINT *pt,s32 count);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

pt: 需要转换的坐标点,该参数兼作为转换的输入和输出参数。

count: 需要转换的坐标点数量。

返回值:

TRUE:成功; FALSE:失败。

说明:

如果函数返回失败,原因可能是窗口句柄无效,参数pt指针为NULL;另外,该函数不关心需要转换的坐标是否在窗口可视范围内。

​​​​​​​6.2 ClientToScreen: 客户区坐标转换为屏幕坐标

BOOL ClientToScreen(HWND hwnd, POINT *pt, s32 count);

头文件:

gdd.h

参数:

Hwnd: 窗口句柄。

pt: 需要转换的坐标点,该参数兼作为转换的输入和输出参数。

count: 需要转换的坐标点数量。

返回值:

TRUE:成功; FALSE:失败。

说明:

如果函数返回失败,原因可能是窗口句柄无效,参数pt指针为NULL;另外,该函数不处理需要转换的坐标是否在窗口可视范围内。

​​​​​​​6.3 ScreenToWindow:屏幕坐标转换为窗口坐标

BOOL ScreenToWindow(HWND hwnd,POINT *pt,s32 count);

头文件:

gdd.h

参数:

hwnd: 窗口句柄.

pt: 需要转换的坐标点,该参数兼作为转换的输入和输出参数。

count: 需要转换的坐标点数量。

返回值:

TRUE:成功; FALSE: 失败。

说明:

如果函数返回失败,原因可能是窗口句柄无效,参数pt指针为NULL;另外,该函数不处理需要转换的坐标是否在窗口可视范围内。

​​​​​​​6.4 WindowToScreen: 窗口坐标转换为屏幕坐标

BOOL WindowToScreen(HWND hwnd,POINT *pt,s32 count);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

pt: 需要转换的坐标点,该参数兼作为转换的输入和输出参数。

count: 需要转换的坐标点数量。

返回值:

TRUE:成功; FALSE:失败。

说明:

如果函数返回失败,原因可能是窗口句柄无效,参数pt指针为NULL;另外,该函数不处理需要转换的坐标是否在窗口可视范围内。

​​​​​​​6.5 GetDesktopWindow: 获得桌面窗口句柄

HWND GetDesktopWindow(void);

头文件:

gdd.h

参数: 无。

返回:

桌面窗口句柄。

​​​​​​​6.6 GetWindowRect: 获得窗口矩形

BOOL GetWindowRect(HWND hwnd,RECT *prc);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

prc: 矩形缓冲区。

返回值:

TRUE:成功; FALSE:失败。

说明:

该函数获得窗口边界在屏幕上的矩形位置,以屏幕坐标表示。

​​​​​​​6.7 GetClientRect: 获得窗口客户区矩形

BOOL GetClientRect(HWND hwnd,RECT *prc);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

prc: 矩形缓冲区。

返回值:

TRUE:成功; FALSE:失败。

说明:

该函数获得窗口客户区矩形,以客户区坐标表示,所以获得的矩形左上角坐标恒为0,0;矩形右下角坐标所指示的为客户区宽度和高度。

​​​​​​​6.8 GetClientRectToScreen: 取窗口客户区矩形的屏幕坐标

BOOL GetClientRectToScreen(HWND hwnd,RECT *prc);

头文件:

gdd.h

参数:

hwnd: 窗口坐标。

prc: 矩形缓冲区。

返回值:

TRUE:成功; FALSE:失败。

说明:

该函数获得窗口客户区边界在屏幕上的矩形位置,以屏幕坐标表示。

​​​​​​​6.9 GetWindowDC: 获得窗口绘图上下文

HDC GetWindowDC(HWND hwnd);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

返回值:

窗口绘图上下文句柄。

说明:

该函数获得的绘图上下文,可以在整个窗口范围内(非客户区+客户区)绘图。绘图上下文的原点坐标(0,0)为窗口边界最左上角,在结束绘图后,需调用ReleaseDC来释放该绘图上下文。

6.10 GetDC:获得窗口客户区绘图上下文

HDC GetDC(HWND hwnd);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

返回值:

窗口客户区绘图上下文句柄。

说明:

该函数获得的绘图上下文,只能在窗口客户区范围内绘图,绘图上下的原点坐标(0,0)为窗口客户区边界最左上角,在结束绘图后,需调用 ReleaseDC 来释放该绘图上下文。

6.11 ReleaseDC: 释放一个绘图上下文

BOOL ReleaseDC(HWND hwnd,HDC hdc);

头文件:

gdd.h

参数::

hwnd: 绘图上下文所属的窗口句柄。

hdc: 需要释放的绘图上下文句柄。

返回值:

TRUE:成功; FALSE:失败。

说明:

该函数只能释放由 GetWindowDC,GetDC 所返回的绘图上下文句柄。

6.12 BeginPaint: 开始绘图

HDC BeginPaint(HWND hwnd);

头文件:

gdd.h

参数:

hwnd: 需要开始绘图的窗口句柄。

返回值:

绘图上下文句柄。

说明:

该函数只在窗口过程函数的 MSG_PAINT 消息中使用,指示客户区开始绘图;该函数返回的绘图上下文句柄,只能在窗口客户区范围内绘图, 原点坐标(0,0)为窗口客户区边界最左上角, 在结束绘图后,需调用 EndPaint 来释放该绘图上下文。

6.13 EndPaint: 结束绘图

BOOL EndPaint(HWND hwnd,HDC hdc);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

hdc: 需要结束绘图的绘图上下文句柄。

返回值:

TRUE:成功; FALSE:失败。

说明:

该函数只在窗口过程函数的 MSG_PAINT 消息中与 BeginPaint 成对使用,指示绘图结束并释放由BeginPaint所返回的绘图上下文句柄。

6.14 CreateWindow: 创建窗口

HWND CreateWindow(WNDPROC *pfWinProc,LPCWSTR Text,u32 Style,

s32 x, s32 y, s32 w, s32 h,HWND hParent,u32 WinId,const void *pdata);

头文件:

gdd.h

参数:

pfWinProc: 窗口过程函数地址。

Text: 窗口标题文字。

Style: 窗口风格属性标记,高16位为窗口公共风格属性标记,所有窗口适用;低16位窗口私有的风格属性标记,代表窗口的私有行为或外观,对于不同类型的窗口,私有风格属性值所代表的含义,仅作用于本身,不可以用于其它不同类型的窗口;不管是公共还是私有风格属性,系统都定义了相关的宏常量供用户使用,对于窗口公共风格属性,可以是以下值的组合:

WS_CHILD: 设定该标志,则创建为子窗口/控件;

WS_VISIBLE: 设定该标志,则窗口为可见的;

WS_DISABLE: 设定该标志,刚窗口为禁止状态,将不会响应外部的输入消息,如键盘,鼠标消息等等;

WS_BORDER: 设定该标志,则窗口会包含并显示外边框;

WS_DLGFRAME: 设定该标志,则窗口会包含并显示内边框;

WS_CAPTION: 设定该标志,刚窗口会包含并显示标题栏;

私有风格属性有以下定义,详情见gdd.h。

// 按钮风格

BS_TYPE_MASK        类型掩码;

BS_NORMAL           常规按钮;

BS_HOLD            自锁按钮;

BS_RADIO            单选按钮;

BS_SURFACE_MASK     外观掩码;

BS_NICE             美观风格;

BS_SIMPLE           简朴风格;

BS_FLAT             平面风格;

BS_PUSHED           按钮按下;

// 复选框风格

CBS_SELECTED        复选框选中。

x,y,w,h: 指示窗口的位置和大小,位置是相对于该窗口所属的父窗口的客户区偏移量,即使用的是客户区坐标表示。大小表示窗口的水平和垂直方向所占的像素数量。

hParent: 父窗口句柄,如果是创建主窗口(没有指定WS_CHILD属性),该参数设为NULL。

WinId: 用户指定的窗口ID,如果是主窗口,该参数会被忽略; 如果是同一级子窗口,则需要为每个指定为不同ID,如果指定了一个已有的同级窗口ID,该函数将创建窗口失败,返回NULL。

pData: 用户自定义的窗口私有数据,该参数会传入窗口过程的MSG_CREATE消息的param1中,如果不需要窗口私有数据,可以将该参数设为NULL。

返回值:

新创建的窗口句柄;如果创建失败,该函数返回NULL。

6.15 DestroyWindow: 销毁窗口

void DestroyWindow(HWND hwnd);

头文件:

gdd.h

参数:

hwnd: 需要销毁的窗口句柄。

说明:

该函数用来销毁一个窗口,除了销毁窗口本身,也会销毁窗口所属的所有子窗口和定时器,如果用户不调用该函数来销毁所创建的子窗口,当主窗口退出时,也会自行销毁所有子窗口和定时器,如果所销毁的窗口是焦点窗口,那么它所在的父窗口的焦点窗口对象会被设为NULL。

6.16 MoveWindow: 移动窗口位置

BOOL MoveWindow(HWND hwnd,s32 x, s32 y);

头文件:

gdd.h

参数:

hwnd: 需要移动的窗口句柄。

x,y: 移动后,新的坐标位置。

返回值:

TRUE:成功; FALSE:失败。

说明:

该函数使用的坐标是相对于父窗口的客户区位置,即父窗口的客户区坐标。如果移动一个窗口并超出它所属的父窗口客户区范围,那么,超出的部分是会被裁剪的(不可见).如图2-4所示:

 图2-54窗口裁剪示意图

6.17 OffsetWindow: 偏移窗口位置

BOOL OffsetWindow(HWND hwnd,int dx,int dy);

头文件:

gdd.h

参数:

hwnd: 需要偏移的窗口句柄。

dx,dy: 水平,垂直方向的偏移量。

返回值:

TRUE:成功; FALSE:失败。

说明:

当dx为负数时,窗口向左偏移,否则向右偏移;当dy为负数时,窗口向上偏移,否则向下偏移。

6.18 IsWindowVisible: 判断窗口是否可见

BOOL IsWindowVisible(HWND hwnd);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

返回值:

TRUE:窗口可见; FALSE:窗口不可见。

说明:

如果一个窗口为不可见,那么它所属的所以子窗口也都为不可见,即便子窗口设置了WS_VISIBLE标记。更多的内容,请参考ShowWindow函数说明。

6.19 InvalidateWindow: 设置窗口为无效状态

BOOL InvalidateWindow(HWND hwnd,BOOL bErase);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

bErase:是否重绘窗口背景。

返回值:

TRUE:成功; FALSE:失败。

说明:

设置窗口为无效状态,即意味着窗口需要进行重绘,该函数会给指定的窗口产生一条异步方式的窗口绘制消息:MSG_PAINT,MSG_PAINT是属于低优先级处理的消息,只有当其它消息处理完成后(MSG_TIMER除外,这个优先级更低),才会处理窗口绘制操作,如果系统因繁忙导致前面的绘制消息未能及时处理,系统将对后续重复的同一个窗口的多个绘制消息合并为一个,以减少系统负担,以过滤掉不必要的多余的绘制过程。当bErase参数为TRUE时,窗口过程将会在执行MSG_PAINT前,发送一条MSG_ERASEBKGND消息,用于窗口背景重绘,用户可以在窗口过程函数中,响应MSG_ERASEBKGND消息来实现窗口背景的绘制工作。

6.20 ShowWindow: 设置窗口为显示或隐藏状态

BOOL ShowWindow(HWND hwnd,BOOL bShow);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

bShow: 显示标记,当为TRUE时,设置窗口为显示状态(可见状态);为FALSE时,将设置窗口为隐藏状态。

返回值:

TRUE: 成功; FALSE:失败。

说明:

该函数为设置窗口是否显示或隐藏,即设置或清除窗口的WS_VISIBLE标记,需要注意的是:如果该窗口所属的父窗口为隐藏状态(不可见),那么它的所有子窗口都不会被显示,即便子窗口设置为显示状态(WS_VISIBLE);改变父窗口的显示状态标志时,并不会改变它所属的子窗口显示状态标志。例如,假设起先一个父窗口A和它的一个子窗口B都为隐藏状态(不可见,无WS_VISIBLE标记),这时,如果将父窗口设置为显示状态(可见,设置了WS_VISIBLE标记),那么此时,它的子窗口B仍然不会显示出来。总结来说,一个窗口真正可见,除了窗口本身具备可见属性(WS_VISIBLE)之外,还必须它的所有上级父窗口同时都具备可见属性。

6.21 EnableWindow: 设置窗口为使能或禁止状态

BOOL EnableWindow(HWND hwnd,BOOL bEnable);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

bEnable: 标记状态,当为TRUE时,设置窗口为使能状态;为FALSE时,设置窗口为禁止状态。

返回值:

TRUE:成功; FALSE:失败。

说明:

该函数为设置窗口是否使能或禁止,即设置或清除窗口的WS_DISABLE标记,当窗口为禁止状态(设置了WS_DISABLE标记)时,它将不能接收到外部输入事件产生的消息,如键盘,鼠标/触摸屏产生的消息,但如果用户通过SendMessage/PostMessage函数强制向窗口发送这类消息,窗口是可以正常接收到的;一个窗口只有当他的上级所有父窗口及窗口本身都使能时,该窗口才真正允许接收到外部输入事件产生的消息,这种关系与ShowWindow函数类似。需要注意的是禁止状态的窗口是可见的并且能绘制。

6.22 GetParent: 获得父窗口句柄

HWND GetParent(HWND hwnd);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

返回值:

父窗口句柄。

6.23 GetWindow: 获得与指定窗口有特定关系的窗口句柄

HWND GetWindow(HWND hwnd,int nCmd);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

nCmd: 说明指定窗口与要获得句柄的窗口之间的关系,该参数值可以是下列之一:

GW_CHILD: 获得z序顶端的子窗口。

GW_HWNDPREV: 获得z序上一个同级窗口。

GW_HWNDNEXT: 获得z序下一个同级窗口。

GW_HWNDFIRST: 获得z序顶层的同级窗口。

GW_HWNDLAST: 获得z序底层的同级窗口。

返回值:

特定关系的窗口句柄。

6.24 GetDlgItem: 获得窗口中指定ID的子窗口的句柄

HWND GetDlgItem(HWND hwnd,u32 id);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

id: 所属子窗口ID。

返回值:

子窗口句柄。

6.25 SetWindowText:设置窗口文字

void SetWindowText(HWND hwnd,const char *text,s32 max_len);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

text:需要设置的字符串内容。

max_len:最大字符串字节长度,如果该值是负数,则使用整个字符串实际字节长度;如果该值小于实际的字符串字节长度,且大于0,则字符串多余的部分将会被截断;如果该值大于实际的字符串字节长度,则按实际的字符串长度来处理。

返回值:

无。

​​​​​​​6.26 GetWindowText:获得窗口文字

char* GetWindowText(HWND hwnd,char *text,s32 max_len);

头文件:

gdd.h

参数:

hwnd: 窗口句柄。

text:输出的字符串缓冲区。

max_len:最大字符串字节长度,如果该值是负数,则使用窗口整个字符串实际字节长度;如果该值小于实际的字符串字节长度,且大于0,则字符串多余的部分将会被截断;如果该值大于窗口实际的字符串字节长度,则按实际的字符串长度来处理。

返回值:

字符串指针。

​​​​​​​6.27 GetWindowFromPoint: 获得指定屏幕坐标位置所在的窗口

HWND GetWindowFromPoint(POINT *pt);

头文件:

gdd.h

参数:

pt: 坐标位置点参数,该坐标值使用屏幕坐标。

返回值:

坐标所在的窗口句柄。

说明:

在多级窗口丛属关系中,该函数返回的窗口句柄,将会是坐标所在位置的最低级别的窗口。

​​​​​​​6.28 SetFocusWindow:设置当前焦点窗口

HWND SetFocusWindow(HWND hwnd);

头文件:

gdd.h

参数:

hwnd: 新的焦点窗口句柄,如果该值为NULL,则会清除当前焦点窗口。

返回值:

旧的焦点窗口句柄,如果当前无焦点窗口,返回NULL。

说明:

调用该函数时,新的焦点窗口,将会收到MSG_SETFOCUS消息,旧的焦点窗口,将会收到MSG_KILLFOCUS消息。当一个窗口设为当前焦点窗口时,才能收到键盘产生的消息:MSG_KEY_DOWN及MSG_KEY_UP。

6.29 GetFocusWindow:获得当前焦点窗口

HWND SetFocusWindow(HWND hwnd);

头文件:

gdd.h

参数:

无。

返回值:

当前焦点窗口句柄,如果当前无焦点窗口,返回NULL。

​​​​​​​6.30 IsFocusWindow:判断指定窗口是否为当前焦点窗口

BOOL IsFocusWindow(HWND hwnd);

头文件:

gdd.h

参数:

无。

返回值:

TURE:指定的窗口是当前焦点窗口;FALSE:指定的窗口不是当前焦点窗口。

​​​​​​​6.31 DefWindowProc: 系统默认的窗口消息处理函数

u32 DefWindowProc(MSG *pMsg);

头文件:

gdd.h

参数:

pMsg: 需要处理的消息。

返回值:

消息处理结果。

说明:

在窗口过程中函数中,对于用户不感兴趣的消息,需调用该函数,交由系统默认处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/25070.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux篇【11】:linux下的线程

目录 一.linux下的线程 1.linux下的线程概念 (1)教材上粗略的 线程 定义 (2)线程的引入 (3)线程真正定义 以及 示意图 (4)linux 和 windows等其他操作系统的线程对比 2.重新定…

22-python异常

异常一. 了解异常二. 异常的写法2.1 语法2.2 快速体验2.3 捕获指定异常2.3.1 语法2.3.2 体验2.3.3 捕获多个指定异常2.3.4 捕获异常描述信息2.3.5 捕获所有异常2.4 异常的else2.5 异常的finally三. 异常的传递四. 自定义异常五. 总结一. 了解异常 当检测到一个错误时&#xff…

Hibernate多表的关联关系、懒加载

一、一对多关系:插入: “一”的一方为主表,“多”的一方为副表,主表关联副表,应该在主表中加入副表对象作为属性。 根据顾客ID插入顾客信息 (一) ,同时将顾客名下所有订单插入 &…

Python实现人脸识别检测,对主播进行颜值排行

前言 嗨嗨,我亲爱的家人们 今天来整点不一样的,嘿嘿 用Python简单实现对人脸识别的检测,对某平台主播照片进行评分排名 应该对女主播这个词不陌生吧,怎么说应该还是蛮多人看过一些女主播吧 我无聊的时候也会看看,…

2009年数学二真题复盘

选择题: 间断点的判断的前置芝士: 间断点的定义 设函数f(x)在点的去心领域内有定义,若f(x)满足以下条件之一: 在x=没有定义在x=有定义,但是不存在,或者存在,但是极限值不等于函数值。 类型定义 相关概念第一类间断点

CMS垃圾回收器

概述 CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动JVM参数加上-XX:UseConcMarkSweepGC,这个参数表示对于老年代的回收采用CMS。CMS采用的基础算…

SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.13 j2cache 相关配置

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇5 整合第三方技术5.13 j2cache 相关配置5.13.1 j2cache 相关配置5.13…

直播绿幕抠图的例子(绿幕抠图直播实例参考)

阿酷TONY / 2022-11-21 / 长沙 什么是绿幕抠图: 设定绿幕或绿布,做直播软件抠图,这时绿幕绿布就可以被实时的抠掉,绿色就变成透明了,只剩下绿幕外的人物,此时添加上直播的背景画质,就实现了绿…

Git——Git常用命令

目录 常用命令概览 1. 设置用户签名 2. 初始化本地库 2.1 初始化本地库 2.2 查看文件 2.3 查看隐藏文件 2.4 进入到下一个目录 3. 查看本地库状态 4.添加暂存区 4.1 删除文件 5. 提交本地库 5.1 将暂存区的文件提交到本地库 6. 查看版本信息的命令 7.修改文件 8. 历史版本…

【Python入门指北】服务器信息清洗

服务器信息清洗 文章目录服务器信息清洗一、 subprocess 执行本机命令二、 获取服务器的硬件基础信息1. 基础信息2. 厂家和产品信息3. CPU 信息3.1 查看物理CPU型号3.2 查看物理CPU颗数3.3 查看每颗物理 CPU 的核心数4. 内存信息练习内存处理参考代码一、 subprocess 执行本机命…

智云通CRM:如何提前识别哪些客户爱说“不”?

有人说,做业务是最好的锻炼意志力方法,因为做业务的人经常会被客户拒绝甚至会扫地出门。被拒绝时,业务员一定要擦亮眼睛,善于察言观色,洞察客户的心理活动。透过观察了解客户为什么说“不”,客户拒绝情况有…

聚观早报 | 推特临时培训员工应对世界杯;世界杯足球内置传感器

今日要闻:推特临时培训员工应对世界杯;京东靠降本增效实现转亏为盈;世界杯足球内置传感器;艾格重返迪士尼CEO职位;特斯拉明年或开启收购计划 推特临时培训员工应对世界杯 据消息, 2022年世界杯拉开帷幕,推特的使用量即将激增,其维…

陆地卫星(Landsat)计划:50多年的星球档案

陆地卫星计划:陆地卫星1号至陆地卫星9号 1967年,NASA(美国国家航空与航天局) 提出了“地球资源技术卫星”计划,从此开始了在理论上对地球资源技术卫星系列的可行性研究,于是,陆地卫星 (Landsat…

汽车安全气囊设计?Abaqus/Part特殊建模方法-附案例step-by-step教学

作者 | 邓怡超 Abaqus/Part基于特征的建模功能可以说非常齐全,基本能够满足一般的分析要求,更复杂的模型则可以通过与专业三维建模软件之间的接口来导入,今天要说的是部件的另外一种建模方法。 有一种类型的分析,部件自身的初始…

坚持自学软件测试,半年的辛苦没有白费,不过才拿到10k的offer

找软件测试的工作只用了一周的时间,因为自己的年纪已经25岁,所以在简历上包装了两年的工作经验,但是我学的技术水平自认为还可以,因为我当时自学时用的教程比较有深度。 之所以要转行,我相信做机械工作的朋友都明白&a…

神经网络-前向传播Forward propagation

前向传播Forward propagation 前向传播算法就是: 将上一层的输出作为下一层的输入,并计算下一层的输出,一直到运算到输出层为止 在正式介绍前向传播前,先简单介绍计算图(Computational Graph)的概念。 yw…

LiDAR 完整指南介绍:激光探测和测距

什么是激光探测和测距 (LiDAR)? LiDAR 的全称是 Light Detection and Ranging (激光探测及测距),LIDAR 是一种主动测量方式,主要由激光发射部分、接收部分组成、信号处理部分组成,从其名称可以发现 LIDAR 的两个主要基本功能是测…

关于我的家乡网页设计主题题材——梧州14页HTML+CSS网页

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有…

iOS关于列表布局的几种实现方式小结

式 ,功能的要求是最多六行,动态展示。当时想到的方案是,抽象出一个cell,初始化六个标签,动态的控制显示和隐藏,这样功能上没有问题,就是代码有些冗余。请教了身边的美女同事,她那边的思路是用UI…

SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.17 发送多部件邮件

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇5 整合第三方技术5.17 发送多部件邮件5.17.1 发送多部件邮件5.17.2 添…