【无标题】

【云原生 从零开始学Kubernetes】七、资源清单与Namespace_managedfields 这里就只展示一个的查看方法,可以自己尝试一下去查看各种字段下的各种信息,不然篇幅太长!KIND: Pod# metadata 是对象,下面可以有多个字段FIELDS:# annotations 是注解,map 类型表示对应的值是 key-value 键值对,表示 key 和value 都是 String 类型的。 阅读详情

写在开篇

这几天有点忙,终于抽出时间更新了,之前已经通过这篇 《通过源码分析告诉你:当访问K8S API的代码运行在POD里的容器时,在集群内是如何进行身份验证的》 搞清楚了在集群内如何进行身份验证。那么,官方还提供了一个简单的应用示例,链接:https://github.com/kubernetes/client-go/tree/master/examples/in-cluster-client-configuration

本篇的主题是解读一下这个示例。结合之前的知识储备并等本篇讲完后,就会很清晰的知道集群内的POD访问API时是如何进行身份验证的。下次就要回到这篇 《关于ServiceAccount以及在集群内访问K8S API》 继续讲解接下来的实战内容了,有没有发现兜了个圈又兜回来了。

示例代码分析

针对官方提供的示例,我做了点小改造。这段代码是一个使用Kubernetes Go客户端(client-go)的示例程序,用于获取Kubernetes集群中所有Pod的信息,并每隔10秒打印一次Pod的数量和POD名称。

package main

import (
 "context"
 "fmt"
 "time"

 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 "k8s.io/client-go/kubernetes"
 "k8s.io/client-go/rest"
)

func main() {
 config, err := rest.InClusterConfig()
 if err != nil {
  panic(err.Error())
 }
 clientset, err := kubernetes.NewForConfig(config)
 if err != nil {
  panic(err.Error())
 }
 for {
  pods, err := clientset.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{})
  if err != nil {
   panic(err.Error())
  }
  for _, pod := range pods.Items {
   fmt.Printf("命名空间:%s POD名称:%s\n", pod.Namespace, pod.Name)
  }
  fmt.Printf("集群中有 %d 个 pod", len(pods.Items))
  time.Sleep(10 * time.Second)
 }
}

需要注意的事情,看这段代码的InClusterConfig函数,记得上次对它分析过:

config, err := rest.InClusterConfig()
if err != nil {
        panic(err.Error())
}

这段代码使用rest.InClusterConfig()函数获取当前运行环境下的Kubernetes集群的配置。如果获取配置时发生错误,通过panic抛出异常。

不信的话,编译后运行试试:

[root@workhost in-cluster-client-configuration]# ./app 
panic: unable to load in-cluster configuration, KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT must be defined

goroutine 1 [running]:
main.main()
        /root/project/gocode/src/in-cluster-client-configuration/main.go:17 +0x314

报错了。要解决这个问题,就是要将这个应用程序在POD内运行。

提示:报错的根本原因是因为这两个自定义变量是由K8S自身管理且定义在了POD里的容器内,只有将这个示例应用运行在POD里的容器才能正确加载自定义变量。

编译应用程序

[root@workhost src]# cd in-cluster-client-configuration/
[root@workhost in-cluster-client-configuration]# go mod init
go: creating new go.mod: module in-cluster-client-configuration
go: to add module requirements and sums:
        go mod tidy
[root@workhost in-cluster-client-configuration]# go mod tidy
[root@workhost in-cluster-client-configuration]# GOOS=linux go build -o ./app .
  • GOOS=linux:这将GOOS环境变量设置为linux,表示专门为Linux构建应用程序。
  • go build:这是Go语言的编译命令,用于编译Go源代码并生成可执行文件。
  • -o ./app:这是一个选项,指定编译输出的可执行文件的名称和路径。在这个命令中,-o表示指定输出文件,./app表示输出文件的路径和名称为当前目录下的app。
  • .:这是命令的最后一个参数,表示当前目录中的Go源代码文件。这告诉编译器从当前目录中的所有Go源文件中构建应用程序。

编译后:

[root@workhost in-cluster-client-configuration]# ls -l
total 43928
-rwxr-xr-x. 1 root root 44919028 May 23 08:59 app # 编译后得到的可执行二进制文件
-rw-r--r--. 1 root root       44 May 23 08:56 Dockerfile
-rw-r--r--. 1 root root     1909 May 23 08:59 go.mod
-rw-r--r--. 1 root root    47303 May 23 08:59 go.sum
-rw-r--r--. 1 root root     1750 May 23 08:57 main.go 

制作镜像

Dockerfile内容:

FROM debian
COPY ./app /app
ENTRYPOINT /app

构建镜像和推送到私有仓库:

docker build -t 192.168.11.254:8081/library/example-app:v1 .
docker push 192.168.11.254:8081/library/example-app:v1

在K8S运行

[root@k8s-b-master ~]# kubectl run --rm -i example-pod --image=192.168.11.254:8081/library/example-app:v1
pod "example-pod" deleted
error: timed out waiting for the condition

居然超时了,没有获取到POD。官方示例中提到,如果在K8S集群上启用了RBAC,就需要创建角色绑定。就此看来是因为权限问题导致。那先确定一下k8s集群是否启用了RBAC:

[root@k8s-b-master kubernetes]# kubectl api-versions | grep rbac
rbac.authorization.k8s.io/v1
[root@k8s-b-master kubernetes]# kubectl get roles,rolebindings --all-namespaces
NAMESPACE     NAME                                                                            CREATED AT
kube-public   role.rbac.authorization.k8s.io/kubeadm:bootstrap-signer-clusterinfo             2023-04-30T03:23:50Z
kube-public   role.rbac.authorization.k8s.io/system:controller:bootstrap-signer               2023-04-30T03:23:48Z
kube-system   role.rbac.authorization.k8s.io/extension-apiserver-authentication-reader        2023-04-30T03:23:48Z
...

这些输出提供了与RBAC授权相关的信息,包括可用的API版本以及集群中的角色和角色绑定配置,所以是启用了RBAC的。

注意:如果是使用kubeadm搭建的k8s集群,那么rbac默认都是启用的。如果是二进制搭建的,那就不一定了,这将取决于您的配置和部署选择。

接下来,创建一个名为"default-view"的ClusterRoleBinding:

kubectl create clusterrolebinding default-view --clusterrole=view --serviceaccount=default:default
  • default-view:ClusterRoleBinding的名称。在这个例子中,ClusterRoleBinding将被命名为"default-view"。
  • –clusterrole=view:选项,指定要绑定的ClusterRole。这里指定了"view" ClusterRole,它具有查看(view)集群资源的权限。ClusterRole是一组权限的集合,可以授予用户、组或服务账号特定的权限。
  • –serviceaccount=default:default:选项,指定要绑定到ClusterRole的ServiceAccount。这里指定了"default:default",表示将"default"命名空间下的"default" ServiceAccount与ClusterRole进行绑定。

总之,这个命令将创建一个名为"default-view"的ClusterRoleBinding,将"default"命名空间下的"default" ServiceAccount与"view" ClusterRole进行绑定。这意味着"default" ServiceAccount将具有查看集群资源的权限。这可以用于授予特定的ServiceAccount对集群资源的只读访问权限,而无需授予其他更高级的权限。

创建完角色绑定后继续运行:

[root@k8s-b-master ~]# kubectl run --rm -i example-pod --image=192.168.11.254:8081/library/example-app:v1
If you don't see a command prompt, try pressing enter.
命名空间:default POD名称:example-pod
命名空间:default POD名称:goweb-7db674b88c-d544x
命名空间:default POD名称:goweb-7db674b88c-j5hd6
命名空间:default POD名称:goweb-7db674b88c-v2z5r
命名空间:default POD名称:nginx
命名空间:kube-system POD名称:calico-kube-controllers-567c56ff98-pb4dj
命名空间:kube-system POD名称:calico-node-7kqhw
命名空间:kube-system POD名称:calico-node-hbbs4
命名空间:kube-system POD名称:calico-node-pngws
命名空间:kube-system POD名称:calico-node-r8vp9
命名空间:kube-system POD名称:calico-node-sfws4
命名空间:kube-system POD名称:calico-node-skktr
命名空间:kube-system POD名称:calico-node-wm2lt
命名空间:kube-system POD名称:coredns-c676cc86f-lkw8r
命名空间:kube-system POD名称:coredns-c676cc86f-ncnnn
命名空间:kube-system POD名称:etcd-k8s-b-master
命名空间:kube-system POD名称:kube-apiserver-k8s-b-master
命名空间:kube-system POD名称:kube-controller-manager-k8s-b-master
命名空间:kube-system POD名称:kube-proxy-8hw4f
命名空间:kube-system POD名称:kube-proxy-9qsc8
命名空间:kube-system POD名称:kube-proxy-b4vjj
命名空间:kube-system POD名称:kube-proxy-d7lh9
命名空间:kube-system POD名称:kube-proxy-nmdxd
命名空间:kube-system POD名称:kube-proxy-ql2kf
命名空间:kube-system POD名称:kube-proxy-stfff
命名空间:kube-system POD名称:kube-scheduler-k8s-b-master
集群中有 26 个 pod命名空间:default POD名称:example-pod
命名空间:default POD名称:goweb-7db674b88c-d544x
命名空间:default POD名称:goweb-7db674b88c-j5hd6
命名空间:default POD名称:goweb-7db674b88c-v2z5r
命名空间:default POD名称:nginx
命名空间:kube-system POD名称:calico-kube-controllers-567c56ff98-pb4dj
命名空间:kube-system POD名称:calico-node-7kqhw
命名空间:kube-system POD名称:calico-node-hbbs4
命名空间:kube-system POD名称:calico-node-pngws
命名空间:kube-system POD名称:calico-node-r8vp9
命名空间:kube-system POD名称:calico-node-sfws4
命名空间:kube-system POD名称:calico-node-skktr
命名空间:kube-system POD名称:calico-node-wm2lt
命名空间:kube-system POD名称:coredns-c676cc86f-lkw8r
命名空间:kube-system POD名称:coredns-c676cc86f-ncnnn
命名空间:kube-system POD名称:etcd-k8s-b-master
命名空间:kube-system POD名称:kube-apiserver-k8s-b-master
命名空间:kube-system POD名称:kube-controller-manager-k8s-b-master
命名空间:kube-system POD名称:kube-proxy-8hw4f
命名空间:kube-system POD名称:kube-proxy-9qsc8
命名空间:kube-system POD名称:kube-proxy-b4vjj
命名空间:kube-system POD名称:kube-proxy-d7lh9
命名空间:kube-system POD名称:kube-proxy-nmdxd
命名空间:kube-system POD名称:kube-proxy-ql2kf
命名空间:kube-system POD名称:kube-proxy-stfff
命名空间:kube-system POD名称:kube-scheduler-k8s-b-master
集群中有 26 个 pod命名空间:default POD名称:example-pod
命名空间:default POD名称:goweb-7db674b88c-d544x
命名空间:default POD名称:goweb-7db674b88c-j5hd6
命名空间:default POD名称:goweb-7db674b88c-v2z5r
命名空间:default POD名称:nginx
命名空间:kube-system POD名称:calico-kube-controllers-567c56ff98-pb4dj
命名空间:kube-system POD名称:calico-node-7kqhw
命名空间:kube-system POD名称:calico-node-hbbs4
命名空间:kube-system POD名称:calico-node-pngws
命名空间:kube-system POD名称:calico-node-r8vp9
命名空间:kube-system POD名称:calico-node-sfws4
命名空间:kube-system POD名称:calico-node-skktr
命名空间:kube-system POD名称:calico-node-wm2lt
命名空间:kube-system POD名称:coredns-c676cc86f-lkw8r
命名空间:kube-system POD名称:coredns-c676cc86f-ncnnn
命名空间:kube-system POD名称:etcd-k8s-b-master
命名空间:kube-system POD名称:kube-apiserver-k8s-b-master
命名空间:kube-system POD名称:kube-controller-manager-k8s-b-master
命名空间:kube-system POD名称:kube-proxy-8hw4f
命名空间:kube-system POD名称:kube-proxy-9qsc8
命名空间:kube-system POD名称:kube-proxy-b4vjj
命名空间:kube-system POD名称:kube-proxy-d7lh9
命名空间:kube-system POD名称:kube-proxy-nmdxd
命名空间:kube-system POD名称:kube-proxy-ql2kf
命名空间:kube-system POD名称:kube-proxy-stfff
命名空间:kube-system POD名称:kube-scheduler-k8s-b-master
集群中有 26 个 pod
...
...
...

本文转载于WX公众号:不背锅运维(喜欢的盆友关注我们):https://mp.weixin.qq.com/s/N3ArZ-T62yUZClf2UN5Qrg

Qt-无标题窗口         今天学习了下无标题窗口,于是来记录下我的学习过程首先建立一个Qt Widgets Application继承QWidget类创建完后直接运行就得到了如下效果那么,既然是无标题窗口就要去掉窗口栏啊,于是加上setWindowFlags(Qt::FramelessWindowHint | Qt::WindowMinimizeButtonHint);去掉标题栏,但是这样整个窗口就不能移动... 阅读详情

相关推荐

C# 移动无标题栏无边框窗体的3种方法

目录 第一种:手工移动 第二种:调用系统API 1.引入下面代码 前提需要引入命名空间using System.Runtime.InteropServices 2.增加鼠标按下事件发送消息,让系统误以为按下是标题栏 第三种,重写 WndProc 第一种:手工移动 直接通过修改窗体位置从而达到移动窗体的效果 //定义一个位置信息Point用于存储鼠标位置 private Point mPoint; /// <summary>

SabreWulf 2886

容器技术-Kubernetes

之前通过docker swarm的介绍,让大家对容器平台引擎有了一个基本的认识,下面来主要介绍和学习当前比较流行docker平台管理引擎Kubernetes,这也是当前云计算最火的基础技术架构。 一、通过一个实例来认识K8S 在正式的介绍K8S之前,先通过一个例子,让大家对K8S有一个浅显的认识,这里有一个网站,是kubernetes.io 开发的一个交互式教程,通过 Web 浏览器就能使用预...

zphdgqs的博客 445

SAP S/4HANA 可扩展性 – 面向初学者的简化指南

可扩展性(Extensibility)是 SAP ECC 和 SAP S/4HANA 的一项关键功能。它使客户能够通过定制其业务流程来创造竞争优势,并使合作伙伴能够通过量身定制的解决方案来丰富核心 ECC 或 S/4HANA。在过去的几十年中,SAP 的 on-premise 版本客户和合作伙伴主要使用经典的 ABAP 扩展性来扩展他们的 ERP 解决方案。经典扩展性允许 ABAP 开发人员使用甚至修改所有 SAP 对象。尽管经典扩展性非常强大和灵活,但在当今的云世界中,它已不再是一个好的选择。

SAP学习成长之路的博客 1810

在k8s中使用Namespaces

使用Namespaces 创建 #通过命令行直接创建 $ kubectl create namespace new-namespace # 通过文件创建 $ cat my-namespace.yaml apiVersion: v1 kind: Namespace metadata: name: new-namespace $ kubectl create -f ./my-namespace.yaml 注意:命名空间名称满足正则表达式a-z0-9?,最大长度为63位 删除 $ kubectl del

拒绝熬夜啊的博客 1392

科研作图不发愁:手把手教你用PyMOL给蛋白-DNA互作图‘美颜’(附完整配色与标注方案)

本文详细介绍了如何使用PyMOL对蛋白-DNA互作结构图进行专业美化,包括从PDB文件加载、结构展示与标注、互作位点突出显示到高质量渲染输出的完整流程。通过具体案例(PDB ID:8SSS)演示了锌指结构域区分、关键残基标注和互作距离测量等实用技巧,帮助科研人员制作可直接用于期刊投稿的高质量示意图。

weixin_42523792的博客 554

4 种永远不要触碰 Kubernetes 命名空间

公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !Kubernetes 随带许多( Namespace )命名空间。一些命名空间很重要,事关你的 Kuber...

easylife206的专栏 1969

思科华三设备组网思科生成树PVST发BPDU导致全网闪断

一、故障现象 1.思科PVST BPDU报文导致全网闪断。 2.光衰低时不同品牌网络设备无法兼容导致接入交换机中断。 二、网络拓扑 图1 网络拓扑图 组网结构为H3C汇聚,接入交换机有思科,也有H3C,而且与汇聚直连的接入交换机下面串接了较多的交换机,或者hub。 三、排查思路 1.回忆一下最近做了什么事情,什么时候开始出的问题。 将网络汇聚交换机从思科换为H3C,H3C汇聚和思科接入对接出问题...

Silence_always的博客 7490

k8s给default serviceaccount绑定cluster-admin操作命令

zxl-test: namespace default: 默认的sa名称 system:serviceaccount: 是固定写法 kubectl create clusterrolebinding zxl-test-cluster-admin-binding --clusterrole=cluster-admin --user=system:serviceaccount:zxl-test:default kubectl create clusterrolebinding zxl-test-clust

学亮编程手记 1531

使用R语言获取data.frame中指定列的数据

这里以"df"为例,包含三列数据:“列1”、“列2"和"列3”。通过以上代码,我们成功获取了"列1"和"列3"的数据,并将它们分别存储在了变量"column1"和"column3"中。假设我们有一个名为"df"的data.frame,其中包含了多个列,我们想要提取其中的某一列。符号,我们可以从data.frame中提取出"列2"的数据,并将其赋值给变量"column2"。符号,我们可以轻松提取出data.frame中特定列的数据,并将其存储在变量中供进一步的分析和处理使用。假设我们要获取"列2"的数据。

DevRevolt的博客 2321

WOFOST作物模型(7):6.0.6版本的PCSE使用(多层水分平衡和SNOMIN碳氮模型的集成)

wofost81文件结构如上,其中所需的参数可从github上获取然后input下有两个需要调用的功能函数py文件,需要拖到自己的运行py文件同级目录下在使用土壤模块SNOMIN进行作物生长模型模拟时,需要为土壤剖面的不同层次提供多种输入变量。这些变量通常不随年份变化,因此会统一在土壤文件中定义。本节将说明如何将这些输入变量整合到一个字典中,进而生成SNOMIN能够读取的土壤文件。

所有专家都曾始于新手 638

Delphi无标题窗体增强功能实现:让无标题窗体更具交互性

Delphi无标题窗体增强功能实现:让无标题窗体更具交互性 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在软件开发领域,Delphi 语言因其高效的执行速度和清晰的语法结构,一直受到开发者的喜爱。然而,在使用无标题窗体(borderstyle=bsnone)时,开发者常常面临一个问题:用户无法通过常规方式来移动或调整窗体大小。本项目正是为了解决这一难题而诞生,它提供...

gitblog_06708的博客 1033

PCL 加权局部最优投影(WLOP)简化算法

WLOP算法是一种点云重采样方法,通过迭代优化实现点云均匀化和特征保留。算法包含数据项(加权平均位置保持几何特征)和正则化项(排斥邻近点实现均匀分布)两部分。代码实现基于PCL库,通过KD树加速邻域搜索,使用高斯权重函数计算点位置更新。参数包括输出点比例、邻域半径、正则化权重和迭代次数。该算法不依赖网格信息,适合处理大规模扫描数据的预处理优化。

点云侠的博客 636

无标题栏窗口拖动的实现

普通的Windows应用程序窗口都具有统一的窗口风格,它们一般都包括:用户区和非用户区两部分。非用户区包括标题条、窗口边框、最大化按钮、最小化按钮、关闭按钮和系统默认的快捷键及鼠标支持等。利用鼠标的左键通过拖动窗口的标题条可以在屏幕上任意移动整个窗口,当光标停止在窗口边框上时可以改变窗口的大小。在一些比较经典的软件中,有一类特殊的无标题条的窗口。这种窗口不需要改变窗口的大小,但必须具有窗口客户区域

ArduousBonze的专栏 4062

某音私信接口二进制解析

本文探讨了某音私信接口的二进制请求处理过程,重点分析了请求体中的非文本字符和混合编码结构。文章详细描述了编码过程,包括使用Protocol Buffers的序列化方法将结构化数据转换为字节流,并通过Uint8Array包装成二进制数组。作者展示了如何提取和补全s.encode方法,并将其转化为Base64字符串以便在Python中解码执行

码王吴彦祖的博客 903

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

无标题窗口的拖动

普通的Windows应用程序窗口都具有统一的窗口风格,它们一般都包括:用户区和非用户区两部分。非用户区包括标题条、窗口边框、最大化按钮、最小化按钮、关闭按钮和系统默认的快捷键及鼠标支持等。利用鼠标的左键通过拖动窗口的标题条可以在屏幕上任意移动整个窗口,当光标停止在窗口边框上时可以改变窗口的大小。在一些比较经典的软件中,有一类特殊的无标题条的窗口。这种窗口不需要改变窗口的大小,但必须具有窗口客户区域

lianxiao1314的专栏 1003

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C#拖动无标题栏窗体

很长时间没有写博客了,今天又解决并测试通过了一个Delphi很简单的问题——无标题栏窗体的拖动 。其实是个很简单的问题,但是还是想写下来,一方面加深自己的记忆,一方面与朋友们分享!DeviceAnywhere在Ioicn发布了,反响似乎一般,我想是因为.net FrameWork环境的问题吧,希望Microsoft再出sp的时候把.net FrameWorkx.x集成到操作系统里吧,这样大家都方便

Windows Mobile 开发历险 1962

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android设置activity全屏 | 无标题

1.设置activity无标题 方法一: 在Manifest.xml中为activity增加属性:  android:theme="@android:style/Theme.NoTitleBar" 方法二: 在activity的onCreate()中加入:requestWindowFeature(Window.FEATURE_NO_TITLE); 2.设置activity全屏

CNnumen 1万+

C#中的无标题栏窗体

所以谓的无标题栏窗体,与标题无关,看边框设置将窗体的FormBorderStyle属性设置为None就可以了,其它的一些属性只是一些显示样式.关于无标题栏窗体的拖动就用傻办法,至少我看到的都是这样的.关于这一方面的介绍不少,我就不在这里缀述了,如果有想要示例的,可以留下邮箱.

fqlove的专栏 1444

Android应用设置无标题栏的实现方式

去掉标题栏   第一,在代码中实现; requestWindowFeature(Window.FEATURE_NO_TITLE); 代码要写在setContentView()前。 第二,在xml文件中进行配置; 调用系统自带的样式; 实现全屏效果: android:theme="@android:style/Theme.NoTitleBar.Fullscree

三颗猴面包树 1501

【QT学习】如何移动无标题栏窗口?(图文详解)

本篇,作者将分享如何移动无标题栏的窗口。

孤生i的博客 3433

delphi技巧——移动无标题窗口

 delphi技巧——移动无标题窗口关键词:移动,消息,无标题                      作者:朱能文   我们都知道windows是通过标题栏来移动窗体的,当我们在标题栏上按下鼠标左键时,windows将发送wM_NCHitTest消息,来告诉系统要移动窗体。但我们在实际编程时,有时为了界面的需要或特殊的要求,窗体没有标题栏,我们必须通过程序来移动窗体。下面我将介

nwen的专栏 1282

使用OnNcHitTest消息实现无标题窗口的移动

<br />使用OnNcHitTest消息<br />实现无标题窗口的移动<br />////////////////////////////////////////////////////////////<br />UINT myWnd::OnNcHitTest(CPoint point)<br />{<br /> // TODO: 在此添加消息处理程序代码和/或调用默认值<br /> // rect 指定,鼠标点在什么地方时,可以移动窗口<br /> // 其实就是把这部分区域当成是 标题栏<br />

WINCOL的专栏 2535

Labview无标题栏鼠标拖动窗口程序:打造极致简洁交互体验

Labview无标题栏鼠标拖动窗口程序:打造极致简洁交互体验 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在当今快速发展的软件交互设计中,用户界面(UI)的简洁性和易用性越来越受到重视。Labview 无标题栏鼠标拖动窗口程序正是为了满足这种需求而诞生的一个开源项目。它通过巧妙地调用Windows API函数GetMessagePos,实现了在无标题栏状态下,用户可...

gitblog_06745的博客 1187

Delphi 无标题窗体增强功能实现

Delphi 无标题窗体增强功能实现 去发现同类优质开源项目:https://gitcode.com/ 资源简介 本资源提供了一种在 Delphi 开发环境中对无标题窗体(borderstyle=bsnone)进行增强的方法。默认情况下,无标题窗体不显示边框,用户无法通过常规方式移动或调整窗体大小。本资源通过特定的技术手段,为无标题窗体添加了边框,同时实现了窗体的拖拽调整大小和移动位置的功能。 功...

gitblog_06743的博客 433

android手机设置无标题后,程序挂掉 解决 (如何用最简短语句设置 手机 全屏无标题)

手机设置无标题后,总是挂掉,最初以为是布局的问题,换了还是不中,然后新建一个工程,发现还是不中!怎么回事?我以前是搞过着的啊,原来设置全屏无标题,这些语句一定要设在setContentView前面!谨记啊! 还是对这些知识不熟悉,所以我写到这,复习下! 设置无标题+全屏: requestWindowFeature(Window.FEATURE_NO_TITLE); int flag = Wi

yanzi1225627的专栏 3033
上一篇: 关于ServiceAccount以及在集群内访问K8S API
下一篇: 一篇就让小白入门K8S,使用Minikube来搭建本地的单节点K8S集群
不背锅运维
博客等级 码龄4年 38粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值