首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Windows窗体应用程序设置中记录窗口位置

在Windows窗体应用程序设置中记录窗口位置的方法有多种,其中常见的方法是使用Windows事件跟踪(ETW)系统。在Windows中,ETW系统可以自动记录应用程序内部的操作和事件,使得我们可以根据这些信息推断应用程序的设置和运行时状态。在这里,我们将介绍如何使用ETW系统记录应用程序位置信息的方法。

  1. 首先,您需要确保Windows ETW系统已启用。在Windows 10中,可以通过以下步骤启用ETW系统:
  • 打开“控制面板”应用程序。
  • 在搜索框中输入 "事件追踪",然后从搜索结果中选择 "事件跟踪"。
  • 点击 "事件跟踪配置",进入"事件跟踪管理器" 窗口。
  • 在 "事件分类" 中,添加分类 "etw"。
  • 点击 "确定" 或应用更改,关闭窗口。
  • 再次点击 "确定",启用ETW。
  1. 在完成ETW系统配置之后,您可以在Windows窗体应用程序中使用一些常见的事件跟踪API来实现位置记录。例如,您可以使用以下代码记录应用程序的位置和尺寸信息:
代码语言:txt
复制

int32_t MainWindow::RecordPosition()

{

代码语言:txt
复制
   HRESULT hr;
代码语言:txt
复制
   ULONGLONG ullTag = RegisterWindowMessageA("PositionRecord");
代码语言:txt
复制
   IPropertyStore *pPropStore = nullptr;
代码语言:txt
复制
   hr = pView->get_Item(PKEY_DragDropSavePosition,&pPropStore);
代码语言:txt
复制
   if (SUCCEEDED(hr)) {
代码语言:txt
复制
       PROPVARIANT propVar = {0};
代码语言:txt
复制
       propVar.vt = VT_I4;
代码语言:txt
复制
       propVar.lVal = sizeof(HWND) + sizeof(INT32_T);
代码语言:txt
复制
       PROPERTYKEY pkey_Hwnd;
代码语言:txt
复制
       pkey_Hwnd.fmtid = PROGID_DragDrop;
代码语言:txt
复制
       pkey_Hwnd.pid = ullTag;
代码语言:txt
复制
       hr = pPropStore->SetValue(PKEY_Hwnd, &PKEY_DragDropSavePosition, PROPID_DragDropHwnd, &propVar);
代码语言:txt
复制
       pPropStore->Release();
代码语言:txt
复制
   }
代码语言:txt
复制
   return S_OK;

}

LRESULT MainWindow::WMSysCommandEventHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)

{

代码语言:txt
复制
   if (IDM_TRACKMOVESTATE == m_dwWMSysCommand) {
代码语言:txt
复制
       RECORDPOS();
代码语言:txt
复制
       return 0;
代码语言:txt
复制
   }
代码语言:txt
复制
   bHandled = FALSE;
代码语言:txt
复制
   return 0;

}

static HMONITOR WINAPI TrackMoveHelper(HMONITOR SourceMonitor, HDWP DisplayChange, POINT TrackPoint, MONITORINFOEXW& MonitorInfo_New)

{

代码语言:txt
复制
   // Do the actual tracking move
代码语言:txt
复制
   return S_FALSE;

}

void MainWindow::TRACKMOUSEMOVE(POINT Local)

{

代码语言:txt
复制
   // Register tracking window handle and mouse position in Property Store to track mouse movement
代码语言:txt
复制
   // This will capture position at the next TRACKMOUSEMOVE() call
代码语言:txt
复制
   HRESULT hr;
代码语言:txt
复制
   PROPVARIANT propVar = {0};
代码语言:txt
复制
   propVar.vt = VT_I4;
代码语言:txt
复制
   propVar.lVal = sizeof(HWND) + sizeof(INT32_T);
代码语言:txt
复制
   PROPERTYKEY pkey_Hwnd;
代码语言:txt
复制
   pkey_Hwnd.fmtid = PROGID_DragDrop;
代码语言:txt
复制
   pkey_Hwnd.pid = ullTag;
代码语言:txt
复制
   hr = pView->put_Item(PKEY_DragDropHwnd,&PKEY_DragDropHwnd,PKEY_DragDropSavePosition,PropVar);
代码语言:txt
复制
   // Release the window Handle for Property Store
代码语言:txt
复制
   pView->Release();
代码语言:txt
复制
   // Set the window handle value in the mouse position Property Store
代码语言:txt
复制
   // This helps to capture the position at the same mouse position at the next TRACKMOUSEMOVE
代码语言:txt
复制
   PROPVARIANT tmpVar = PropVar;
代码语言:txt
复制
   tmpVar.vt = VT_BYREF| VT_UI4;
代码语言:txt
复制
   tmpVar.u4.lVal = Local.x + HWND_XPOS;
代码语言:txt
复制
   PropertyKey tmpKey = {PKEY_DragDropHwnd,nullptr,PKEY_DragDropSavePosition};
代码语言:txt
复制
   int res = pView->put_Item(PKEY_DragDropHwnd,&tmpKey,&tmpVar);
代码语言:txt
复制
   // Release the mouse position data in Property Store	

}

void MainWindow::SaveViewState()

{

代码语言:txt
复制
   // Use the event tracking to save the current position and size of the view
代码语言:txt
复制
   HRESULT hr;
代码语言:txt
复制
   ULONGLONG ullTag = RegisterWindowMessageA("ViewState");
代码语言:txt
复制
   IDropTarget *pDT = nullptr;
代码语言:txt
复制
   // Register object to receive WM_DROPFILES as Drop Events 
代码语言:txt
复制
   IDataObject *pDataobj = nullptr;
代码语言:txt
复制
   hr = GetDragDropTarget(GetSafeHwnd(), IID_PPV_ARGS(&pDT));
代码语言:txt
复制
   if (FAILED(hr)) throw;
代码语言:txt
复制
   hr = QueryInterface(pDT->GetSafeInterface(&pDataobj));
代码语言:txt
复制
   if (FAILED(hr)) throw;
代码语言:txt
复制
   const CLSID *pclsid= IID_PPV_ARGS(&IID_IDropTarget);
代码语言:txt
复制
   HGLOBAL hgDropGlobal = GlobalAlloc(0, FIELD_OFFSET(DropTarget,DataObject));
代码语言:txt
复制
   pDT->OnDrop(pclsid, pDataobj);
代码语言:txt
复制
   pDT->GetDropTarget()->GetInterface(IID_PPV\_ARGS(hgDropGlobal));
代码语言:txt
复制
   GlobalFree(hgDropGlobal);
代码语言:txt
复制
   // Register new ViewState
代码语言:txt
复制
   ULONGLONG ullViewStateTag = RegisterWindowMessageA("ViewState");
代码语言:txt
复制
   LONGLONG ullMinMaxX = 0x10016A5A2540 ull, ullMinMaxY = 0x10016A5A2548 ull, ullMinMaxW = 0x10016A5A1FE0 ull, ullMinMaxH = 0x10016A5A1FF8 ull;
代码语言:txt
复制
   CWindows::UpdateViewSizeMinMaxRect(ullMinMaxX, ullMinMaxY, ullMinMaxW, ullMinMaxH);
代码语言:txt
复制
   PropVariant propvar;
代码语言:txt
复制
   propvar.vt = VT_UI8;
代码语言:txt
复制
   propvar.ui8 = 0;
代码语言:txt
复制
   hr = pView->put\_PropVariant(PKEY\_DragDropSaveViewSizeMinMax rects, &propvar, ullTag);
代码语言:txt
复制
   // Record the ViewState as well 
代码语言:txt
复制
   CWindows::SetPropData(PKEY\_DragDropSaveViewState rects, &propvar, ullTag);
代码语言:txt
复制
   // Set the window handle value in the Viewstte Property Store
代码语言:txt
复制
   PROPVARIANT tmpVar = PropVar;
代码语言:txt
复制
   tmpVar.vt = VT_BYREF| VT_UI8;
代码语言:txt
复制
   tmpVar.u8 = 4096 ull;
代码语言:txt
复制
   propvar = PROPVARIANT(ullMinMaxW, ullMinMaxY, ullMinMaxX, ullMinMaxH);
代码语言:txt
复制
   hr = pView->put\_PropVariant(PKEY\_DragDropSaveViewState, &PKEY\_DragDropSaveViewState, propvar, ullTag);
代码语言:txt
复制
   // Release the window handle variable for Property Store
代码语言:txt
复制
   pView->Release();
代码语言:txt
复制
   // Release the dragged object data in Property Store
代码语言:txt
复制
   CWindows::DestroyDropGlobal(pDataobj);

}

代码语言:txt
复制

上述代码中的函数 RecordPosition() 用于记录应用程序的窗体位置信息,函数 TrackMoveHelper() 负责记录应用程序的窗体位置并进行移动操作;函数 TRACKMOUSEMOVE() 用于向 Windows 事件跟踪系统中注册鼠标的位置以记录窗体位置信息;函数 SaveViewState() 负责使用 Windows 事件跟踪系统保存应用程序的窗体位置和尺寸信息。这些函数的实现需要使用 ETW 系统提供的 API,具体使用方法可以参照 ETW 技术的官方文档。

  1. 在实现窗口位置记录之后,您可以使用 TRACKMOUSEMOVE() 函数在应用程序中触发 wm_mousemove 触发事件以持续记录应用程序的窗体位置,或者使用函数 SaveViewState() 在应用程序退出之后立即记录应用程序的窗体位置和尺寸信息。

这些方法可以帮助您记录Windows窗体应用程序的设置和运行时状态,以便您能够更好地管理应用程序的窗口位置和大小信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【愚公系列】2023年11月 Winform控件专题 Form控件详解

欢迎 点赞✍评论⭐收藏前言Winform控件是Windows Forms的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、...|下面案例演示了如何在 WinForms 中使用 AutoScroll 属性:using System;using System.Drawing;using System.Windows.Forms;namespace...2.常用场景WinformForm控件常用场景包括:窗体显示:Form是Winform中最基本的控件之一,用于显示应用程序窗体应用程序设置:Form可用于显示应用程序设置窗口。...MDI应用程序:使用Form可以创建MDI父窗体,作为多文档界面应用程序的主窗口。模式窗口:Form可作为模式窗口使用,即在窗体弹出时阻止用户与其它窗体交互。...Form1类是我们的主窗体,它继承自System.Windows.Forms.Form。 我们还使用了Windows Forms设计工具来构建我们的Winform应用程序

2.3K21

【愚公系列】2023年11月 Winform控件专题 Label控件详解

欢迎 点赞✍评论⭐收藏前言Winform控件是Windows Forms的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、...;myLabel.Location = new Point(10, 10); // 设置Label控件在窗体位置this.Controls.Add(myLabel); // 将Label控件添加到窗体...在设计窗体时,选择需要添加AutoEllipsis属性的控件,比如Label或Button等。在属性窗口中找到AutoEllipsis属性并将其设置为True。...以下是使用ContextMenuStrip的步骤:在设计界面上,从工具箱拖拽一个ContextMenuStrip控件到窗体上。在属性窗口中添加菜单项。...记住AutoSize为true时2.常用场景WinformLabel控件常用场景有:显示文字:Label控件可以用于显示文本信息,窗口标题、提示信息、作者信息等。

82911
  • C#学习笔记—— 常用控件说明及其属性、事件

    1、 窗体 的属性 1、常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序可通过Name属性来引用窗体。 (2) WindowState属性: 用来获取或设置窗体窗口状态。...24、多窗体程序设计 Windows应用程序很少只由一个窗体组成, 一般情况下一个应用程序均拥有很多个窗体。...(2)  在该对话框的【模板】下面的列表框        选中【Windows 窗体】图标,在【名称】文本框输入窗体名,然后单击【打开】按钮,即为应用程序添加了一个窗体。...25、MDI 应用程序设计 1.MDI应用程序的概念 在前面的章节,所创建的都是单文档界面(SDI)应用程序。这样的程序(记事本和画图程序)仅支持一次打开一个窗口或文档。...MDI程序应用程序窗口称为父窗口应用程序内部的窗口称为子窗口。虽然 MDI应用程序可以具有多个子窗口, 但是每个子窗口却只能有一个父窗口。此外,处于活动状态的子窗口最大数目是 1。

    9.7K20

    【愚公系列】2023年11月 Winform控件专题 LinkLabel控件详解

    欢迎 点赞✍评论⭐收藏前言Winform控件是Windows Forms的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、...一、LinkLabel控件详解LinkLabel(链接标签)控件是 Windows 窗体的一个标准控件,用于在窗体显示超级链接。...在 Winform ,可以通过“工具箱”的 LinkLabel 控件添加到窗体。在设计时,可以设置控件的属性,文本内容、字体、颜色、链接颜色、字体样式等。...3.具体案例一个可能的使用LinkLabel控件的案例是在一个应用程序窗体创建一个帮助文档展示部分。首先,打开Visual Studio并新建一个Windows Forms应用程序项目。...最后,为了完善用户体验,可以将窗体类的Load事件处理方法添加一些初始化代码,将Label控件的Visible属性设置为false,在启动应用程序时隐藏提示信息。

    59311

    可视化数据库设计软件有哪些_数据库可视化编程

    ) 数据库应用程序的结构与设计步骤 数据库应用程序结构 数据库应用程序由数据访问窗体控件、数据源控件和ADO.NET数据访问对象组成。...1.数据访问窗体控件 典型数据访问窗体控件有DataGridView,此外在第2章中介绍的许多控件(TextBox、Label、ComboBox、ListBox等)也可以设置数据源关联到数据表的字段...3.ADO.NET对象 数据库应用程序的设计步骤 1.创建解决方案的项目 2.添加Windows窗体 3.设计用户界面 4.创建事件处理程序和编译、调试、运行程序 数据源控件与数据访问窗体控件...2)BindingNavigator控件 1.BindingNavigator控件的作用 是一个数据记录导航控件,创建了一些标准化方法供用户搜索和更改 Windows 窗体的数据,与 BindingSource...(2)改变字段位置 单击“改变字段位置”按钮,可改变字段在数据表控件位置顺序。 (3)设置字段属性 在“编辑列”对话框右侧为每个字段的属性编辑器。

    6.7K40

    【愚公系列】2023年11月 Winform控件专题 TabControl控件详解

    欢迎 点赞✍评论⭐收藏 前言 Winform控件是Windows Forms的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框...1.属性介绍 1.1 Alignment TabControl控件的Alignment属性用于设置TabControl的标签(Tab)的位置。...选中TabControl控件,在属性窗口中找到Alignment属性,选择一个值作为标签的位置,例如Top、Bottom、Left或Right。...调整TabControl控件的大小和位置,以适应窗体的需求。...例如,以下示例代码演示了如何在Winform设置TabControl控件的Multiline属性: private void Form1_Load(object sender, EventArgs e

    2.1K11

    【愚公系列】2023年11月 Winform控件专题 RadioButton控件详解

    欢迎 点赞✍评论⭐收藏前言Winform控件是Windows Forms的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、...在设计视图中,从工具箱拖拽RadioButton控件到窗体上。可以使用属性窗口设置它的文本、位置、大小等属性。...在属性窗口中可以看到Name属性,可以给RadioButton控件取一个有意义的名字,来方便在代码引用它。..."Option 1",并将选中的圆圈位置设置为中间位置、靠左。...在应用程序设置页面,RadioButton控件可以用于使用户从选项中选择一项,以更改应用程序设置。在问卷调查应用程序,RadioButton控件可以用于让用户从多个选项中选择答案。

    28121

    c#实战教程_ps初学者入门视频

    用控件编制Windows应用程序很象搭积木,将控件放到窗体设置好属性,漂亮的界面就设计好了。...选中工具箱窗口Windows窗体类型下的Button条目,然后在标题为Forms.cs[设计]的窗口的Form1窗体按下鼠标左键,拖动鼠标画出放置Button控件的位置,抬起鼠标左键,就将Button...3.19 状态栏(StatusBar)控件 Windows应用程序的状态栏一般用来显示一些信息,时间,鼠标位置等。 1....3.21 快捷菜单(ContextMenu) 使用过Word程序的人都知道,在其程序窗口的不同位置单击右键,会出现不同弹出菜单,这个弹出菜单叫快捷菜单,这节介绍如何在应用程序增加快捷菜单。...当应用程序窗口用户区内容被破坏后需恢复时,Windows操作系统向应用程序发送Paint事件,应用程序应把在窗口用户区输出数据的语句放在Paint事件处理函数Windows发Paint事件时,能调用这些在窗口用户区输出数据的语句恢复被破坏的内容

    15.6K10

    【愚公系列】2023年11月 Winform控件专题 SplitContainer控件详解

    欢迎 点赞✍评论⭐收藏前言Winform控件是Windows Forms的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、...);在上面的示例设置SplitContainer控件的FixedPanel属性为Panel1,并将分隔条位置设置为100。....Size = new Size(300, 200);// 设置为垂直方向分割线splitContainer1.Orientation = Orientation.Vertical;// 将控件添加到窗体...2.常用场景SplitContainer控件是Windows Forms的一个容器控件,常用于将窗体分为两个可调整大小的区域,典型的场景包括:布局调整:SplitContainer控件可以用于窗体布局调整...分割窗口:SplitContainer控件可以用作分割窗口,将窗体分成两个区域用于不同的操作,比如左边是目录结构,右边是文件显示区域,用户可以在左边选择目录,右边就会显示对应的文件。

    1.4K12

    Qt 第一步 HelloWorld 的第一个程序

    在出现的窗体,项目选择 Application 应用程序,在中间内容部分,选择 Qt Widgets Application。别选错,选择了Console项目将会是控制台的应用程序。 ?...在项目内容,有一个层级结构,顶层是一个Hello,展开后分为如下部分: 后缀为 .pro 的文件:项目管理文件,例如项目设置项 Headers:包含项目头文件,mainwindow.h 为主窗口类头文件...如图所示,左侧当前区域显示为设计,这时将可以设计当前主窗口的UI界面,在左侧小部件中找到lable 标签拖拽至设计的窗体。 ?...双击label标签(在windows设计窗体上显示为TextLable),输入内容为HelloWorld: ?...当然我们也可以更改字体大小,在右下角属性面板,找到 font 相关属性: ? 如图点击设置可以更改字体大小,在粗体、下划线等选项勾选即可拥有相关属性。

    1.1K20

    Excel编程周末速成班第18课:使用用户窗体创建自定义对话框

    这些对话框在Office称为用户窗体,可以包含你在属于Excel应用程序本身以及其他Windows应用程序的对话框中看到的所有元素,它们提供了非常强大的编程工具,使你可以为Excel应用程序提供自定义的可视界面...本课程以及接下来的三节课将向你展示如何创建和使用用户窗体。 用户窗体概述 用户窗体由三个紧密相关的部分组成: 窗体本身代表带有标题栏以及Windows操作系统中所有窗口共有的其他组件的屏幕窗口。...注意:你不必通过拖动来指定窗体位置,而可以通过设置其Top和Left属性或StartUpPosition属性来指定它的位置。...如果为False,则用户可以在仍然显示该窗体时切换离开该窗体,并使用应用程序的其他部分(例如另一个窗体)。 StartUpPosition。首次显示时窗体位置。有关允许的设置,参见表18-2。...你学到了: 用户窗体可以包含许多其他Windows应用程序中使用的相同控件。 一个VBA工程可以包含所需的任意多个用户窗体窗体和控件具有指定其外观和行为的属性。

    11K30

    WPF窗口置顶

    ,所以我们要保证我们的窗口永远置顶就要做如下设置。...窗口永远置顶 Deactivated(推荐) 这不会在100%的时间内起作用,但它会在某种程度上改善这种情况.您可以Topmost = true在Window.Deactivated事件的处理程序设置...停用窗口后 (成为后台窗口) : 用户切换到当前应用程序的另一个窗口。 用户使用 ALT + TAB 或使用任务管理器切换到另一个应用程序窗口。 用户单击另一应用程序窗口的任务栏按钮。...Windows,需要通过处理事件来检测它们何时变为停用状态 Deactivated 。 第一次停用窗口后,它可能会在其生存期内重新激活和停用多次。...如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置

    2.3K30

    测试思想-系统测试 界面测试总结

    ,在Windows为平台开发的软件则以Windows平台为规范,在Mac苹果平台开发则以苹果平台为规范。可以说:界面遵循规范化的程度越高,则易用性相应的就越好。...系统常用的工具栏设置默认放置位置。 6. 工具栏太多时可以考虑使用工具箱。 7. 工具箱要具有可增减性,由用户自己根据需求定制。 8. 工具箱的默认总宽度不要超过屏幕宽度的1/5。...快捷键,一般不自己创新,F1总是帮助 菜单中常见组合 1):面向事务的组合有 Ctrl-D 删除 ;Ctrl-F 寻找 ;Ctrl -H替换;Ctrl-I 插入 ;Ctrl-N 新记录 ;Ctrl-S...父窗体或主窗体的中心位置应该在对角线焦点(附近)。 5. 子窗体位置应该在主窗体的左上角或正中。 6. 多个子窗体弹出时应该依次向右下方偏移,以显示出窗体标题为宜。 7....界面元素[如按钮,字体(通常使用的字体宋体9-12较为美观)]和主窗体的大小要与界面的大小和空间要协调[ 放置完控件后界面不应有很大的空缺位置]。 5.

    2.1K20

    Qt 第一步 HelloWorld 的第一个程序

    [在这里插入图片描述] 在出现的窗体,项目选择 Application 应用程序,在中间内容部分,选择 Qt Widgets Application。...别选错,选择了Console项目将会是控制台的应用程序。...为当前主窗口的界面文件,双击打开: [在这里插入图片描述] 如图所示,左侧当前区域显示为设计,这时将可以设计当前主窗口的UI界面,在左侧小部件中找到lable 标签拖拽至设计的窗体。...[在这里插入图片描述] 双击label标签(在windows设计窗体上显示为TextLable),输入内容为HelloWorld: [在这里插入图片描述] 当然我们也可以更改字体大小,在右下角属性面板...,找到 font 相关属性: [在这里插入图片描述] 如图点击设置可以更改字体大小,在粗体、下划线等选项勾选即可拥有相关属性。

    64110

    AWT的Container容器

    setVisible(Boolean b) 设置组件的可见性 三、容器演示 窗口容器(Frame) 一般情况下,GUI 程序至少包含一个窗体,它和所容纳的组件一起构成应用程序的交互界面。...在AWT ,通过 Frame 类实例化窗体对象;默认情况下,得到的窗体既没有大小,也是不可见的;所以必须调用窗体对象的setSize()方法设置大小,调用窗体对象的setVisible()方法设置可见性...frame.setBounds(100,100,500,300);:这是设置窗口位置和大小。setBounds方法接受四个参数,分别是窗口左上角的x坐标、y坐标,以及窗口的宽度和高度。...整个代码的功能是创建一个带有标题栏的窗口容器,位置在屏幕的(100,100),大小为宽度500和高度300。最后通过设置窗口可见,使窗口显示在屏幕上。...由于IDEA默认使用utf-8进行编码,但是当前我们执行代码是是在windows系统上,而windows操作系统的默认编码是gbk,所以会乱码,如果出现了乱码,那么只需要在运行当前代码前,设置一个jvm

    10910

    windows程序设计第五版_程序设计中三种基本结构

    结构WNDCLASS包含一个窗口类的全部信息,也是Windows编程中使用的基本数据结构之一,应用程序通过定义一个窗口类确定窗口的属性 基本信息 要得到某一窗口的WNDCLASS数据,可以用GetClassLong...要得到某一窗口窗口类,可以用GetClassName(); WNDCLASS的回调函数是窗体的消息处理函数: LRESULT CALLBACK WndProc(HWND hwnd, UINT msg...;//窗口菜单 LPCTSTR lpszClassName;// 窗口类名 } WNDCLASS, *LPWNDCLASS; 举例说明 #include //包含应用程序数据类型和数据结构的定义...CS_PARENTDC: 将子窗口的裁剪区域设置到父窗口的DC中去,这样子窗口便可以在父窗口上绘制自身。注意,这是子窗口还是从系统缓存获取DC,而不是使用父窗口的DC。...hCursor: 标识该窗口类的光标,hCursor必须是一个光标资源的句柄。若hCursor字段为NULL,则无论何时鼠标移到应用程序窗口时,应用程序必须显式设置光标形状。

    46710

    delphi vcl_delphi数据类型

    [+] 窗体应用程序类表示Form和Application对象,这些类是从TComponent派生而来,它们实际也是组件,单独地把它列举出来,以示与拖到窗体上的控件加以区别。...每个Delphi应用程序都有一个指向TApplication对象的指针,此指针称为Application,用TApplication类主要执行消息框,管理快捷帮助,为按钮和状态栏设置提示文本。...其继承关系如下: 2、TForm类 TForm类封装了VCL窗体窗体可用作主窗体、对话框、辅助窗口以及可以想像出的任何其他类型窗口。TForm是VCL的主要功能类。...10、GDI类 GDI(图形设备接口)类在Windows GUI应用程序起很大作用,这些类封装了位图、字体、设备描述环境(DCs)、画笔和笔等应用,它可以通过这些GDI对象把图形和文本在窗口上显示出来...下图显示了GDI类继承关系: 11、实用类(Utility Class) VCL包括很多实用类,这些实用类可以用在应用程序,实用类可以简化一些Windows编程。

    2.7K10

    【愚公系列】2023年11月 Winform控件专题 MenuStrip控件详解

    欢迎 点赞✍评论⭐收藏前言Winform控件是Windows Forms的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、...在Visual Studio中使用MenuStrip控件非常简单,只需要在窗体设计器拖拽一个MenuStrip控件到窗体上即可。...AllowItemReorder属性允许用户通过拖拽菜单项来重新排列它们的位置。当设置为true时,用户可以拖拽菜单项来改变它们的位置。当设置为false时,则不能拖拽菜单项。...例如,在代码设置MenuStrip的Text属性:MenuStrip1.Text = "我的菜单";在属性窗口设置MenuStrip的Text属性:选中MenuStrip控件,在属性窗口中找到Text...2.常用场景MenuStrip控件是Winform中常用的菜单控件,常用场景如下:应用程序主菜单:MenuStrip可以作为应用程序的主菜单,在窗体顶部添加一个水平的菜单栏,用于展示应用程序的主要功能和模块

    50511
    领券