当前位置: 首页 > news >正文

2501,20个窗口常用操作

窗口是屏幕上的一个矩形区域.窗口分为3种:覆盖窗口,弹窗和子窗口.每个窗口都有由系统绘画的"非客户区"和应用绘画的"客户区".

MFC中,CWnd类为各种窗口提供了基类.

1,通过窗柄取得CWnd指针

可调用Cwnd::FromHandle函数,通过窗柄取得Cwnd指针.

void CDemoDlg::OnButton1()
{HWND hWnd = GetSafeHwnd();//取得当前窗口的句柄CWnd* pWnd = CWnd::FromHandle(hWnd);//通过`窗柄`取得`CWnd`指针CString strText = _T("");strText.Format("pWnd=0x%X\nthis=0x%X\n",pWnd,this);AfxMessageBox(strText);
}

2,取得应用主窗口的指针

CWinThread::m_pMainWnd保存主窗口指针.可首先调用AfxGetApp函数取得应用的指针,然后通过应用指针取得主窗口的指针.

void CDemoDlg::OnButton2()
{CDemoApp* pApp = (CDemoApp*)AfxGetApp();//取得应用指针CWnd* pMainWnd = pApp->m_pMainWnd;//取得主窗口指针CString strText = _T("");strText.Format("pMainWnd=0x%X\nthis=0x%X\n",pMainWnd,this);AfxMessageBox(strText);
}

3,取得指定点的窗口

可调用CWnd::WindowFromPoint函数,取得指定点的窗口.
a,在CDemoDlg类中重载CWnd::PreTranslateMessage函数.

BOOL CDemoDlg::PreTranslateMessage(MSG* pMsg)
{if (pMsg->message == WM_MOUSEMOVE){CPoint point(LOWORD(pMsg->lParam),HIWORD(pMsg->lParam));::ClientToScreen(pMsg->hwnd, &point);//按屏幕坐标转换客户区坐标OnMouseMove(0,point);}return CDialog::PreTranslateMessage(pMsg);
}

b,在CDemoDlg类中添加WM_MOUSEMOVE消息处理函数.

void CDemoDlg::OnMouseMove(UINT nFlags, CPoint point)
{CWnd* pWnd = WindowFromPoint(point);//取得指定点的窗口if (pWnd != NULL){TRACE("%d\n",pWnd);if (IsChild(pWnd)){CString strText = _T("");pWnd->GetWindowText(strText);SetWindowText(strText);}}CDialog::OnMouseMove(nFlags, point);
}

4,最大化和最小化窗口

可调用CWnd::SendMessage函数发送最大化或最小化窗口消息,来最大化和最小化窗口.

LRESULT SendMessage(
UINT message,//发送的消息,值为`WM_SYSCOMMAND`时表示`系统命令消息`.
WPARAM wParam = 0,//当`消息`值为`WM_SYSCMMAND`,参数`字参`值为`SC_MAXIMIZE,SC_MINIMIZE`,
LPARAM lParam = 0 );//`SC_RESTORE`时分别表示`最大化窗口,最小化窗口,恢复窗口`.void CDemoDlg::OnButton3()
{//最大化窗口SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0);
}
void CDemoDlg::OnButton4()
{//最小化窗口SendMessage(WM_SYSCOMMAND,SC_MINIMIZE,0);
}
void CDemoDlg::OnButton5()
{//恢复窗口SendMessage(WM_SYSCOMMAND,SC_RESTORE,0);
}

5关闭窗口

可调用CWnd::SendMessage函数,发送WM_CLOSE消息来关闭窗口.框架调用CWnd::OnClose函数处理WM_CLOSE消息.
默认,OnClose调用函数CWnd::DestroyWindow函数来关闭窗口.

void CDemoDlg::OnButton6()
{//关闭窗口SendMessage(WM_CLOSE,0,0);
}
void CDemoDlg::OnClose()//添加`WM_CLOSE`消息处理函数
{//判断是否关闭if (IDYES == MessageBox(_T("是否关闭窗口?"),NULL,MB_YESNO)){CDialog::OnClose();}
}

6设置窗口的大小和位置

可通过两个方法设置窗口大小和位置:1.调用CWnd::SetWindowPos函数;2.调用CWnd::MoveWindow函数.

void CDemoDlg::OnButton7()
{//设置窗口的大小和位置SetWindowPos(NULL,0,0,320,200,SWP_NOZORDER);
}
void CDemoDlg::OnButton8()
{//设置窗口的大小和位置MoveWindow(0,200,200,320);
} 

7居中显示窗口

可调用CWnd::CenterWindow函数居中显示窗口.

void CDemoDlg::OnButton9()
{//居中显示窗口CenterWindow();
} 

8顶层显示窗口

可调用CWnd::SetWindowPos函数顶层显示窗口,按最顶层设置对话框窗口的层次.

void CDemoDlg::OnButton10()
{//设置窗口层次SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);//`SWP_NOSIZE`:表示窗口保持当前的大小,`SWP_NOMOVE`:表示窗口保持当前的位置
}

9设置窗口图标

首先调用CWinApp::LoadIcon函数加载图标资源,然后调用CWnd::SetIcon函数设置图标.

void CDemoDlg::OnButton11()
{//加载图标HICON hIcon = AfxGetApp()->LoadIcon(IDI_ICON);//设置图标SetIcon(hIcon,FALSE);//`假`:设置程序小图标,`真`:设置任务栏大图标
} 

10取得和设置窗口的标题

可分别调用CWnd::GetWindowTextCWnd::SetWindowText函数,取得和设置窗口标题.

void CDemoDlg::OnButton12()
{CString strText = _T("");GetWindowText(strText);//取得窗口标题SetDlgItemText(IDC_TEXT,strText);//设置编辑框文本
}
void CDemoDlg::OnButton13()
{CString strText = _T("");GetDlgItemText(IDC_TEXT,strText);//取得编辑框文本SetWindowText(strText);//设置窗口标题
}

11显示或隐藏窗口的标题栏

可调用CWnd::ModifyStyle函数显示或隐藏窗口的标题栏.

void CDemoDlg::OnButton14()
{//删除标题栏风格ModifyStyle(WS_CAPTION,0,SWP_FRAMECHANGED);
}
void CDemoDlg::OnButton15()
{//添加标题栏风格ModifyStyle(0,WS_CAPTION,SWP_FRAMECHANGED);
}

12改变窗口形状

标准窗口形状矩形的.要改变窗口的形状,首先调用CRgn类的成员函数创建相应形状的区域,然后调用CWnd::SetWindowRgn函数按窗口区域设置它.
可分别用CRgn类的CreateRectRgn,CreateEllipticRgn,CreatePolygonRgnCreateRoundRectRgn函数来创建矩形,椭圆形,多边形和圆矩形区域.

void CDemoDlg::OnButton16()
{CRect rect;GetClientRect(rect);//创建矩形区域CRgn rgn;rgn.CreateRectRgn(rect.left,rect.top,rect.right,rect.bottom);//设置窗口的区域SetWindowRgn((HRGN)rgn,TRUE);
}
void CDemoDlg::OnButton17()
{CRect rect;GetClientRect(rect);//创建椭圆形区域CRgn rgn;rgn.CreateEllipticRgn(0,0,rect.Width(),rect.Height());//设置窗口的区域SetWindowRgn((HRGN)rgn,TRUE);
}
void CDemoDlg::OnButton18()
{CRect rect;GetClientRect(rect);CPoint point[6];point[0].x = 0;point[0].y = rect.Height() / 2;point[1].x = rect.Width() / 3;point[1].y = 0;point[2].x = 2 * rect.Width() / 3;point[2].y = 0;point[3].x = rect.Width();point[3].y = rect.Height() / 2;point[4].x = 2 * rect.Width() / 3;point[4].y = rect.Height();point[5].x = rect.Width() / 3;point[5].y = rect.Height();//创建多边形区域CRgn rgn;rgn.CreatePolygonRgn(point,6,ALTERNATE);//设置窗口的区域SetWindowRgn((HRGN)rgn,TRUE);
}
void CDemoDlg::OnButton19()
{CRect rect;GetClientRect(rect);//创建圆矩形区域CRgn rgn;rgn.CreateRoundRectRgn(0,0,rect.Width(),rect.Height(),rect.Width() / 2,rect.Height() / 2);//设置窗口的区域SetWindowRgn((HRGN)rgn,TRUE);
}

13设置窗口的透明区域

设置窗口透明区域,首先调用CRgn::CreateRectRgn创建一个区域,然后调用CRgn::CombineRgn函数,去掉需要透明的区域,最后调用CWnd::SetWindowRgn函数按窗口区域设置它.

void CDemoDlg::OnButton20()
{CRect rect1;GetWindowRect(rect1);CRect rect2;GetClientRect(rect2);ClientToScreen(rect2);CRgn rgn1;rgn1.CreateRectRgn(rect1.left,rect1.top,rect1.right,rect1.bottom);CRgn rgn2;rgn2.CreateRectRgn(rect2.left,rect2.top,rect2.right,rect2.bottom);CRgn rgn;rgn.CreateRectRgn(0,0,1,1);rgn.CombineRgn(&rgn1,&rgn2,RGN_DIFF);//设置窗口区域SetWindowRgn((HRGN)rgn,TRUE);
}

14透明窗口

要实现透明窗口,首先调用CWnd::ModifyStyleEx函数,添加窗口的WS_EX_LAYERED(0x00080000)扩展风格,然后调用SDKSetLayeredWindowAttributes函数设置窗口的透明和透明色.

void CDemoDlg::OnButton21()
{//添加`WS_EX_LAYERED(0x80000)`扩展风格ModifyStyleEx(0,0x80000);//加载`User32.DLL`动态链接库HMODULE hModule = LoadLibrary("User32.DLL");if (hModule != NULL){typedef BOOL (WINAPI *FUNC)(HWND,COLORREF,BYTE,DWORD);//取得`SetLayeredWindowAttributes`函数指针FUNC func = (FUNC)GetProcAddress(hModule,"SetLayeredWindowAttributes");if (func != NULL){func(GetSafeHwnd(),0,128,2);}FreeLibrary(hModule);}
}

15窗口闪烁

可调用CWnd::FlashWindow函数闪烁窗口.

void CDemoDlg::OnButton22()
{//设置计时器SetTimer(1,1000,NULL);
}
void CDemoDlg::OnButton23()
{//关闭计时器KillTimer(1);//窗口返回原状态FlashWindow(FALSE);
}
void CDemoDlg::OnTimer(UINT nIDEvent)
{if (nIDEvent == 1){//窗口从一个状态闪烁到另一个状态FlashWindow(TRUE);}CDialog::OnTimer(nIDEvent);
}

16图片窗口

要实现图片窗口,首先调用CRgn::CreateRectRgnCRgn::CombineRgn函数创建并合并多个区域,然后调用CWnd::SetWindowRgn函数按窗口区域设置它.

VC对话框如何添加WM_ERASEBKGND消息(OnEraseBkgnd函数):

void CDemoDlg::OnButton24()
{CRect rect;GetWindowRect(&rect);//加载位图CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP);//将位图选入设备环境CDC dc;CDC *pDC = GetDC();dc.CreateCompatibleDC(pDC);dc.SelectObject(&bmp);//将位图中黑色区域变成透明区域CRgn rgn1;rgn1.CreateRectRgn(0,0,rect.Width(),rect.Height());for (int x = 0;x < rect.Width();x++){for (int y = 0;y < rect.Height();y++){COLORREF cr = dc.GetPixel(x,y);if (cr == RGB(0,0,0)){CRgn rgn2;rgn2.CreateRectRgn(x,y,x+1,y+1);rgn1.CombineRgn(&rgn1,&rgn2,RGN_XOR);}}}//设置窗口区域SetWindowRgn((HRGN)rgn1,TRUE);ReleaseDC(pDC);
}//添加`WM_ERASEBKGND`消息处理函数
BOOL CDemoDlg::OnEraseBkgnd(CDC* pDC)
{CRect rect;GetWindowRect(&rect);CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP);CDC dc;dc.CreateCompatibleDC(pDC);dc.SelectObject(&bmp);pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);return TRUE;
}

17动画窗口

可调用SDK动画窗口函数,实现动画窗口.

BOOL CDemoDlg::OnInitDialog()
{CDialog::OnInitDialog();//...居中窗口CenterWindow();//显示动画窗口AnimateWindow(GetSafeHwnd(), 3000, AW_BLEND);return TRUE;
}

18桌面窗口

可调用CWnd::GetDesktopWindow函数,取得桌面窗口.

void CDemoDlg::OnButton25()
{//取得桌面窗口CWnd* pWnd = CWnd::GetDesktopWindow();//取得窗口大小CRect rect;pWnd->GetClientRect(rect);CString strText = _T("");strText.Format(_T("桌面窗口大小:%dX%d"),rect.Width(),rect.Height());AfxMessageBox(strText);
}

19最小化桌面所有窗口

窗口中可利用快捷键Win+M最小化所有窗口.因此,可通过向任务栏窗口发送ID0x1F5(Win+M)的WM_HOTKEY消息,来最小化桌面所有窗口.
首先调用CWnd::FindWindow函数取得窗口,然后调用CWnd::SendMessage函数向窗口发送消息.

void CDemoDlg::OnButton26()
{//取得任务栏窗口CWnd* pWnd = CWnd::FindWindow(_T("Shell_TrayWnd"),NULL);//发送`ID`为`0x1F5(Win+M)`的`WM_HOTKEY`消息pWnd->SendMessage(WM_HOTKEY,0x1F5);
}

20取任务栏窗口

可调用CWnd::FindWinow函数,取得任务栏窗口.

void CDemoDlg::OnButton27()
{//取得任务栏窗口CWnd* pWnd = CWnd::FindWindow(_T("Shell_TrayWnd"),NULL);//取得窗口大小CRect rect;pWnd->GetClientRect(rect);CString strText = _T("");strText.Format(_T("任务栏窗口大小:%dX%d"),rect.Width(),rect.Height());AfxMessageBox(strText);
}

21显示或隐藏任务栏

显示或隐藏任务栏;首先调用CWnd::FindWindow函数取得窗口,然后调用CWnd::ShowWindow函数隐藏或显示窗口.

void CDemoDlg::OnButton28()
{//取得任务栏窗口CWnd* pWnd = CWnd::FindWindow(_T("Shell_TrayWnd"),NULL);//隐藏窗口if (pWnd->IsWindowVisible()){pWnd->ShowWindow(SW_HIDE);}
}
void CDemoDlg::OnButton29()
{//取得任务栏窗口CWnd* pWnd = CWnd::FindWindow(_T("Shell_TrayWnd"),NULL);//显示窗口if (!pWnd->IsWindowVisible()){pWnd->ShowWindow(SW_SHOW);}
}

22枚举桌面所有顶层窗口

BOOL CDemoDlg::OnInitDialog()
{CDialog::OnInitDialog();//...初化列表框控件CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);pList->ModifyStyle(LVS_ICON | LVS_SMALLICON | LVS_LIST,LVS_REPORT);pList->SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);pList->InsertColumn(0,_T("窗口类名"),LVCFMT_LEFT,115);pList->InsertColumn(1,_T("窗口标题"),LVCFMT_LEFT,150);return TRUE;
}

枚举桌面所有顶层窗口两个方法:

a,调用CWnd::GetDesktopWindowCWnd::GetWindow函数:首先调用CWnd::GetDesktopWindow函数,取得桌面窗口,然后调用CWnd::GetWindow函数,枚举所有子窗口.

void CDemoDlg::OnButton30()
{CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);pList->DeleteAllItems();pList->SetRedraw(FALSE);//取得桌面窗口CWnd* pDesktopWnd = CWnd::GetDesktopWindow();//取得第一个子窗口CWnd* pWnd = pDesktopWnd->GetWindow(GW_CHILD);while(pWnd != NULL){int nItem = pList->GetItemCount();//取得窗口类名CString strClassName = _T("");::GetClassName(pWnd->GetSafeHwnd(),strClassName.GetBuffer(256),256);strClassName.ReleaseBuffer();pList->InsertItem(nItem,strClassName);//取得窗口标题CString strWindowText = _T("");::GetWindowText(pWnd->GetSafeHwnd(),strWindowText.GetBuffer(256),256);strWindowText.ReleaseBuffer();pList->SetItemText(nItem,1,strWindowText);//继续取得下个子窗口pWnd =  pWnd->GetWindow(GW_HWNDNEXT);}pList->SetRedraw(TRUE);
}

b,调用SDKEnumWindows函数.

    //添加全局函数
BOOL CALLBACK EnumWndPorc(HWND hWnd,LPARAM lParam)
{if (hWnd == NULL){return FALSE;}CListCtrl* pList = (CListCtrl*)lParam;int nItem = pList->GetItemCount();//取得窗口类名CString strClassName = _T("");::GetClassName(hWnd,strClassName.GetBuffer(256),256);strClassName.ReleaseBuffer();pList->InsertItem(nItem,strClassName);//取得窗口标题CString strWindowText = _T("");::GetWindowText(hWnd,strWindowText.GetBuffer(256),256);strWindowText.ReleaseBuffer();pList->SetItemText(nItem,1,strWindowText);return TRUE;
}
void CDemoDlg::OnButton31()
{CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);pList->DeleteAllItems();pList->SetRedraw(FALSE);//枚举窗口::EnumWindows(EnumWndPorc,(LPARAM)pList);pList->SetRedraw(TRUE);
}

相关文章:

2501,20个窗口常用操作

窗口是屏幕上的一个矩形区域.窗口分为3种:覆盖窗口,弹窗和子窗口.每个窗口都有由系统绘画的"非客户区"和应用绘画的"客户区". 在MFC中,CWnd类为各种窗口提供了基类. 1,通过窗柄取得CWnd指针 可调用Cwnd::FromHandle函数,通过窗柄取得Cwnd指针. void CD…...

【gopher的java学习笔记】一文讲懂controller,service,mapper,entity是什么

刚开始上手Java和Spring时&#xff0c;就被controller&#xff0c;service&#xff0c;mapper&#xff0c;entity这几个词搞懵了&#xff0c;搞不懂这些究竟代表什么&#xff0c;感觉使用golang开发的时候也没太接触过这些名词啊~ 经过两三个月的开发后&#xff0c;逐渐搞懂了这…...

消息队列篇--通信协议篇--STOMP(STOMP特点、格式及示例,WebSocket上使用STOMP,消息队列上使用STOMP等)

STOMP&#xff08;Simple Text Oriented Messaging Protocol&#xff0c;简单面向文本的消息传递协议&#xff09;是一种轻量级、基于文本的协议&#xff0c;旨在为消息代理&#xff08;消息队列&#xff09;和客户端之间的通信&#xff08;websocket&#xff09;提供一种简单的…...

基于SpringBoot的租房管理系统(含论文)

基于SpringBoot的租房管理系统是一个集订单管理、房源信息管理、屋主申诉处理、用户反馈等多项功能于一体的系统。该系统通过SpringBoot框架开发&#xff0c;拥有完善的管理员后台、屋主管理模块、用户功能模块等&#xff0c;适用于房地产租赁平台或中介公司进行日常管理与运营…...

提升企业内部协作的在线知识库架构与实施策略

内容概要 在当前快速变化的商业环境中&#xff0c;企业对于提升内部协作效率的需求愈显迫切。在线知识库作为信息存储与共享的平台&#xff0c;成为了推动企业数字化转型的重要工具。本文将深入探讨如何有效打造与实施在线知识库&#xff0c;强调架构设计、知识资产分类管理及…...

【物联网】ARM核常用指令(详解):数据传送、计算、位运算、比较、跳转、内存访问、CPSR/SPSR、流水线及伪指令

文章目录 指令格式&#xff08;重点&#xff09;1. 立即数2. 寄存器位移 一、数据传送指令1. MOV指令2. MVN指令3. LDR指令 二、数据计算指令1. ADD指令1. SUB指令1. MUL指令 三、位运算指令1. AND指令2. ORR指令3. EOR指令4. BIC指令 四、比较指令五、跳转指令1. B/BL指令2. l…...

Jackson中@JsonTypeId的妙用与实例解析

在日常的Java开发中&#xff0c;Jackson库是处理JSON数据的常用工具。其中&#xff0c;JsonTypeId注解是一个非常实用的功能&#xff0c;它可以帮助我们更好地控制多态类型信息在序列化过程中的表现。今天&#xff0c;我们就来深入探讨一下JsonTypeId的用法&#xff0c;并通过具…...

Ubuntu 顶部状态栏 配置,gnu扩展程序

顶部状态栏 默认没有配置、隐藏的地方 安装使用Hide Top Bar 或Just Perfection等进行配置 1 安装 sudo apt install gnome-shell-extension-manager2 打开 安装的“扩展管理器” 3. 对顶部状态栏进行配置 使用Hide Top Bar 智能隐藏&#xff0c;或者使用Just Perfection 直…...

Java---入门基础篇(上)

前言 本片文章主要讲了刚学Java的一些基础内容,例如注释,标识符,数据类型和变量,运算符,还有逻辑控制等,记录的很详细,带你从简单的知识点再到练习题.如果学习了c语言的小伙伴会发现,这篇文章的内容和c语言大致相同. 而在下一篇文章里,我会讲解方法和数组的使用,也是Java中基础…...

Linux C++

一、引言 冯诺依曼架构是现代计算机系统的基础&#xff0c;它的提出为计算机的发展奠定了理论基础。在学习 C 和 Linux 系统时&#xff0c;理解冯诺依曼架构有助于我们更好地理解程序是如何在计算机中运行的&#xff0c;包括程序的存储、执行和资源管理。这对于编写高效、可靠的…...

gradio 合集

知识点 1&#xff1a;基本 Chatbot 创建 import gradio as gr 定义历史记录 history [gr.ChatMessage(role“assistant”, content“How can I help you?”), gr.ChatMessage(role“user”, content“What is the weather today?”)] 使用历史记录创建 Chatbot 组件 ch…...

996引擎 - NPC-动态创建NPC

996引擎 - NPC-动态创建NPC 创建脚本服务端脚本客户端脚本添加自定义音效添加音效文件修改配置参考资料有个小问题,创建NPC时没有控制朝向的参数。所以。。。自己考虑怎么找补吧。 多重影分身 创建脚本 服务端脚本 Mir200\Envir\Market_Def\test\test001-3.lua -- NPC八门名…...

论文阅读(十三):复杂表型关联的贝叶斯、基于系统的多层次分析:从解释到决策

1.论文链接&#xff1a;Bayesian, Systems-based, Multilevel Analysis of Associations for Complex Phenotypes: from Interpretation to Decision 摘要&#xff1a; 遗传关联研究&#xff08;GAS&#xff09;报告的结果相对稀缺&#xff0c;促使许多研究方向。尽管关联概念…...

代码随想录算法训练营第三十九天-动态规划-198. 打家劫舍

动规五部曲 dp[i]表示在下标为i的房间偷或不偷与前面所偷之和所能获得的最大价值递推公式&#xff1a;dp[i] std::max(dp[i - 2] nums[i], dp[i - 1])初始化&#xff1a;要给dp[0]与dp[1]来给定初始值&#xff0c;因为递推公式有-1与-2。dp[0] nums[0], dp[1] std::max(num…...

CF1098F Ж-function

【题意】 给你一个字符串 s s s&#xff0c;每次询问给你 l , r l, r l,r&#xff0c;让你输出 s s s l , r sss_{l,r} sssl,r​中 ∑ i 1 r − l 1 L C P ( s s i , s s 1 ) \sum_{i1}^{r-l1}LCP(ss_i,ss_1) ∑i1r−l1​LCP(ssi​,ss1​)。 【思路】 和前一道题一样&#…...

Python 函数魔法书:基础、范例、避坑、测验与项目实战

Python 函数魔法书&#xff1a;基础、范例、避坑、测验与项目实战 内容简介 本系列文章是为 Python3 学习者精心设计的一套全面、实用的学习指南&#xff0c;旨在帮助读者从基础入门到项目实战&#xff0c;全面提升编程能力。文章结构由 5 个版块组成&#xff0c;内容层层递进…...

vim交换文件的作用

1.数据恢复&#xff1a;因为vim异常的退出&#xff0c;使用交换文件可以恢复之前的修改内容。 2.防止多人同时编辑&#xff1a;vim检测到交换文件的存在,会给出提示&#xff0c;以避免一个文件同时被多人编辑。 &#xff08;vim交换文件的工作原理&#xff1a;vim交换文件的工作…...

[NOI1995] 石子合并

[NOI1995] 石子合并 题目描述 在一个圆形操场的四周摆放 N N N 堆石子&#xff0c;现要将石子有次序地合并成一堆&#xff0c;规定每次只能选相邻的 2 2 2 堆合并成新的一堆&#xff0c;并将新的一堆的石子数&#xff0c;记为该次合并的得分。 试设计出一个算法,计算出将 …...

真正的智能与那只蝴蝶

“蝴蝶效应”可以展开为对智能本质与大算力关系的追问&#xff0c;其中“蝴蝶”作为隐喻可能指向多重维度——从混沌理论的“蝴蝶效应”到庄子“物我两忘”的蝴蝶之梦。这种并置本身暗示了智能与宇宙秩序、认知边界之间的深刻张力。以下从三个层面展开分析&#xff1a;一、混沌…...

C++小病毒-1.0勒索(更新次数:2)

内容供学习使用,不得转卖,代码复制后请1小时内删除,此代码会危害计算机安全,谨慎操作 在C20环境下,并在虚拟机里运行此代码!&#xff0c;病毒带来后果自负! 使用时请删除在main()里的注释,并修改位置至C:\\(看我代码注释)//可以改成WIN Main() #include <iostream> #i…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...

41道Django高频题整理(附答案背诵版)

解释一下 Django 和 Tornado 的关系&#xff1f; Django和Tornado都是Python的web框架&#xff0c;但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架&#xff0c;鼓励快速开发和干净、实用的设计。它遵循MVC设计&#xff0c;并强调代码复用。Django有…...

【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space

问题&#xff1a;IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案&#xff1a;将编译的堆内存增加一点 位置&#xff1a;设置setting-》构建菜单build-》编译器Complier...