m_btTest1.Create(TEXT("Test1"),WS_CHILD|WS_VISIBLE,rcCreate,this,114);
m_btTest2.Create(TEXT("Test2"),WS_CHILD|WS_VISIBLE,rcCreate,this,112);
m_btTest3.Create(TEXT("Test3"),WS_CHILD|WS_VISIBLE,rcCreate,this,111);
m_btTest4.Create(TEXT("Test4"),WS_CHILD|WS_VISIBLE,rcCreate,this,113);
4个按钮位置是重叠的:先看到的是m_btTest4,但先响应的(点击有效)却是m_btTest1。
这是为什么呢?
原因就在于Create的时候,程序会指定每个控件的ZOrder值,先创建的ZOrder值最小,后面逐渐增大。
而关键点就在于:绘制时,按照ZOrder值由小到大层层绘制,最后绘制排在最上层的控件(m_btTest4),而响应时先处理ZOrder最小的控件(m_btTest1)。
经测试,绘制和响应顺序跟最后面的参数IDC编号(111~114)无关,此编号只是让按钮的响应能够对号入座。
即点击了m_btTest1的控件,程序就会去执行ID=114的相关代码(可由OnCommand函数来截获消息)。
而后m_btTest3又被放到了窗口顶层,而m_btTest2就会自动下移。此时的ZOrder顺序(由小到大)就会变为m_btTest3,m_btTest2,m_btTest1,m_btTest4。
到此为止,绘制时先看到的就是m_btTest4,而先响应的却变成了m_btTest3。
此处uFlags含有SWP_NOZORDER,则DeferWindowPos函数不会改变相应控件的ZOrder值,即绘制和响应顺序都不改变。
否则如果不加SWP_NOZORDER属性,则跟SetWindowPos的作用是一样的
const UINT uFlags=SWP_NOACTIVATE|SWP_NOZORDER|SWP_NOCOPYBITS|SWP_NOSIZE;
DeferWindowPos(hDwp,m_btTest1,NULL,0,0,0,0,uFlags|SWP_NOMOVE);
DeferWindowPos(hDwp,m_btTest2,NULL,0,0,0,0,uFlags|SWP_NOMOVE);
DeferWindowPos(hDwp,m_btTest3,NULL,0,0,0,0,uFlags|SWP_NOMOVE);
DeferWindowPos(hDwp,m_btTest4,NULL,0,0,0,0,uFlags|SWP_NOMOVE);
1. 创建4个按钮CRect rcCreate(0,0,80,80);m_btTest1.Create(TEXT("Test1"),WS_CHILD|WS_VISIBLE,rcCreate,this,114);m_btTest2.Create(TEXT("Test2"),WS_CHILD|WS_VISIBLE,rcCreate,this,112);m_btTest3
SetWindowPos(this->Handle, HWND_TOPMOST, 0, 0, 0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW|SWP_NOACTIVATE );
转自:https://www.cnblogs.com/findumars/p/3948315.html
//声明:
SetWindowPos(
hWnd: HWND; {窗口句柄}
hWndInsertAfter: HWND; {窗口的 Z 顺
序
}
X, Y: Integer; {位置}
VC在OnSize函数中可以根据当前窗口的大小,来改写窗口里面
子
控件
的位置、大小。
但是注意,OnSize在窗口启动过程中,会多次被调用,所以,不能简单的在该函数中调用GetDlgItem()获取
子
控件
的窗口指针。
最简单的方式,
设置
一个全局变量,初始化时
设置
为FALSE,在OnInitialUpdate()或者OnInit
Dialog
()后将其
设置
为TRUE,在OnSize函数里使用GetD
转自 http://www.jizhuomi.com/school/c/159.html打开“Resource View”视图,然后在资源中找到对话框IDD_ADDITION_
DIALOG
,双击ID后中间客户区域出现其模板视图。在主菜单中选择“Format”->”Tab Order”,或者按快捷键Ctrl+D,对话框模板上就会显示各个
控件
的Tab顺
序
数字。如下图:
上图中每个
控件
左上角都有一个
// TODO: 在此添加
控件
通知处理程
序
代码
/*方法1
if (FALSE == m_bIsCreate)//m_bIsCreate是CTestDlg 的bool类型成员,在构造函数中初始化为FALSE
{ //当多次点击ADD 按钮就不会增加或消失 一个DDD按钮,就不会因多次装载而报错。
CRect rcCreate(0,0,80,80);
m_btTest1.Create(TEXT("Test1"),WS_CHILD|WS_VISIBLE,rcCreate,this,114);
m_btTest2.Create(TEXT("Test2"),WS_CHILD|WS_VISIBLE,rcCreate,this,112);
m_btTest3.Cre
窗口的Z次
序
表明了重叠窗口堆中窗口的位置,这个窗口堆是按一个假象的轴定位的,这个轴就是屏幕向外延伸的Z轴。Z次
序
最上面的窗口覆盖所有其他的窗口,Z次
序
最底层的窗口被所有其他的窗口覆盖。应用程
序
设置
窗口在Z次
序
中的位置是通过把它放在一个给定窗口的后面,或是放在窗口堆的顶部或底部。
Windows系统管理三个独立的Z次
序
,一个用于顶层窗口,一个用于兄弟窗口,一个用于最顶层窗口。最顶层窗口覆盖
调整
子
控件
的Z-ORDER顺
序
,可以使用SetWindowPos这个函数一。SetWindowPosBOOL SetWindowPos(
HWND hWnd, // handle to window
HWND hWndInsertAfter, // placement-order handle
int X, // horizon...
两个按钮的Z
序
ZOrder的实现-Z顺
序
的vc实现
像vb可以很容易实现用代码调整
控件
的ZOrder,可是vc实现真是太麻烦了。现在终于变通实现了。还算简单。
另外还有C
MFC
TabCtrl的自绘 CTabCtrl的自绘
vc2008实现
油气生产物联网云平台解决方案是一种集成了物联网技术和云计算技术的解决方案,旨在提高油气生产过程的效率和安全性。该解决方案通过将各种传感器、控制器、执行器等设备连接到云平台上,可以实现数据的实时采集、传输、存储和分析,从而为油气生产提供更加智能化的管理和服务。
油气生产物联网云平台解决方案的主要特点包括:
数据采集和传输:通过各种传感器和设备采集油气生产过程中的各种数据,如温度、压力、流量等,并将数据通过物联网技术传输到云平台上。
数据存储和分析:云平台可以存储和分析大量的数据,提供实时的数据查询、统计和分析功能,帮助油气生产者更好地了解生产情况,发现和解决潜在问题。
智能管理和控制:基于云计算和大数据技术,油气生产物联网云平台可以实现智能化的管理和控制,如自动调节生产参数、预测设备维护周期等,提高生产效率和安全性。
远程监控和管理:油气生产物联网云平台可以提供远程监控和管理功能,油气生产者可以通过电脑、手机等终端随时随地查看和管理生产过程。
开放性和可扩展性:油气生产物联网云平台采用开放式架构设计,可以与各种不同的设备和系统进行集成,同时也可以随着技术的发展不断扩展和升级。
油气生产物联网云平台解决方案的应用范围非常广泛,可以应用于油气勘探、开采、运输、加工和销售等各个环节,提高油气生产的效率和安全性,降低运营成本,推动油气行业的数字化转型
印度第一次水体普查的数据集
数据说明:
根据官方声明,第一次水体普查于2017-18参考年在全国33个邦/中央直辖区进行,除了达曼和第乌、达德拉和纳加尔哈维里和拉克沙群岛。第一次水体普查的目的是通过收集有关水体所有重要方面的信息,包括其类型、状况、侵占状况使用情况、储存容量、储存填满状况等,建立一个关于所有水体的综合性国家数据库。普查还考虑到水体的各种用途,如灌溉、工业、养鱼、家庭/饮用、娱乐、宗教、地下水补给等。
此官方数据的贡献者是水资源、河流开发和恒河复兴部。
数据集是根据印度国家数据共享和无障碍政策发布的。
如果你想通过代码
设置
MFC
中的列表
控件
(List Control)的宽度和高度,可以使用 `CListCtrl` 类的 `SetWindowPos` 方法。
例如,要将列表
控件
设置
为宽度为 400 像素,高度为 300 像素,可以使用以下代码:
```cpp
CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST1); // 获取列表
控件
指针
pListCtrl->SetWindowPos(NULL, 0, 0, 400, 300, SWP_NOMOVE | SWP_NOZORDER);
这里的 `IDC_LIST1` 是列表
控件
的 ID,你需要将其替换为你自己的列表
控件
ID。`SWP_NOMOVE` 和 `SWP_NOZORDER` 是
设置
窗口位置和 Z 顺
序
的标志,这里
设置
为不改变窗口位置和 Z 顺
序
。
如果你希望在对话框初始化时自动
设置
列表
控件
的大小,可以在 `OnInit
Dialog
` 函数中调用上述代码。