当前位置: 首页 > 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…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程

基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...

python打卡day49@浙大疏锦行

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...