首页
学习
活动
专区
工具
TVP
发布
您找到你想要的搜索结果了吗?
是的
没有找到

线程调用窗体控件

此外,这条规则的结果是一个被包含的控件(如,包含在一个表单中的按钮)必须与包含它控件位处于同一个线程中。也就是说,一个窗口中的所有控件属于同一个 UI 线程。...这意味着您不能调用用户界面中任意控件上的任何方法,除非在该方法的文档说明中指出可以调用。该规则的例外情况(总有文档记录)非常少而且它们之间关系也不大。...UI控件";     } 如果您在 .NET Framework 1.0 版本中尝试运行这段代码,也许会侥幸运行成功,或者初看起来是如此。...这意味着辅助线程代码不再担心需要过多关注 UI 细节,而只要定期调用 ShowProgress 即可。 如果我提供一个设计为可从任何线程调用的公共方法,则完全有可能某人会从 UI 线程调用这个方法。...在这种情况下,没必要调用 BeginInvoke,因为我已经处于正确的线程中。调用 Invoke 完全是浪费时间和资源,不如直接调用适当的方法。

1.2K10

认识基本的mfc控件

而且很多常用的控件已经内置到操作系统当中了,在Visual C++中,这些常用控件已经简答到能用“拖放”这种窗口设计方法来将他们放置到一个对话框中。   ...有6个控件几乎在每个windows程序中都会出现:静态文本(Static Text)控件、编辑框(Edit Box)、按钮(Button)控件、复选框(Check Box)控件、单选按钮(Radio Button...)控件、下拉列表[又称组合框(Comno Box)]控件。...ID:标识控件,改变ID属性以便识别并且与其他控件互动 Caption:指明显示在控件上的文本 Visible:表明在程序运行时控件是否可见 Disanled:表明是否禁用控件。...如果禁用会让Caption中的文本只显示轮廓或者像是对话框表面上的凹痕。 Tab Stop:表明当用户使用tab键在对话框中移动时,这个控件是否被选中。

3.3K20

MFC 调用静态链接 MFC 的规则 DLL

简语: 最近学习了生成静态链接的dll及其调用,写一下笔录和大家分享,有错误的地方欢迎大家指出来 开发环境 VS2015 开发语言 C++ 开发步骤 以mfc的dll创建为例,先说明一下win32的dll...和mfc的dll在支持C上,win32可能比较好,实现的过程是一样的。...构建MFC的DLL项目 新建MFC DLL项目 ? 这边选择带静态链接MFC的规则DLL ? 默认生成了,头文件和源文件,右键def文件 ?...新建MFC调用客户端项目 这边是新建对话框的项目 ? 在新建项目下,建立一个目录这边是libDll,在改目录下分别建立inc和lib目录 ?...info.content = "this is test dll"; MyDllApp.InitTest(info, "8888"); return TRUE; // 除非将焦点设置到控件

2.4K20

mfc 创建模态对话框与非模态对话框

所谓模态对话框就是该对话框被创建后,其父窗口不能响应任何消息,无法操作,只有在关闭了新创建出来的窗口后才能继续操作其后面的父窗口。...而非模态对话框则不会有这种情况,非模态对话框创建完成后不影响父窗口的操作,两个窗口可以同时响应消息。 ---- 创建模态对话框 想创建一个模态对话框一共分三步。...1、在资源视图中创建一个对话框资源 2、给该对话框资源创建一个类,继承于 CDialog 类,命名为 CMyDialog 图片 3、在想创建该对话框的地方添加如下代码   // 模态对话框...CMyDialog dialog; dialog.DoModal(); 这样一个模态对话框就创建好了,在这个对话框中,你还可以添加其他控件,对每个控件做消息响应,这些消息响应函数会写在你创建的 CMyDialog...创建非模态对话框 创建非模态对话框相对简单,我们可以不需要自己派生一个 CDialog 的子类再调用子类的 DoModal(这个函数是模态对话框使用的),如果我们已经在资源视图创建好了对话框资源,那么直接使用如下代码就可以创建一个非模态的对话框

20910

MFC的自定义控件控件封装

MFC实现CListBox的继承实现自定义效果 目标 - 实现有背景颜色项的列表 思路 需要知道CListBox的每个item的绘制方法 需要知道CListBox的item的测量方法 查看源码找到关键的量重写的方法...参考https://www.jianshu.com/p/e2fe069cfe35这边MFC的定义控件步骤 再创建控件类的时候,父类要选择CListBox 有个不一样的是在界面上的控件,可以是CListBox...,也可以是Custom Control,只需要在控件属性的class 写成我们自定义的类名。...,设置对应的控件属性, 列表控件才能显示数据,该方法必须调用,才可以正常显示数据 BOOL CColorListBox::InitControl(CWnd* pWnd) { if (pWnd =...MeasureItem(LPMEASUREITEMSTRUCT lpMIS) { lpMIS->itemHeight = ::GetSystemMetrics(SM_CYMENUCHECK); } 在对话框调用

1.6K10

MFC ActiveX (ocx)控件的开发

与窗口控件通过发送消息通知其拥有者类似,ActiveX控件是通过触发事件来通知其包容器的。事件的触发通常是通过控件包容器提供的IDispatch接口来调用自动化对象的方法来实现的。...ActiveX控件提供的这些功能使得对其的使用将是非常方便的。本文下面即以MFC为工 具对ActiveX控件的开发进行介绍。 一、创建项目 1.打开VS2008新建MFC项目。...如果勾上,生成时会多出一个文件.lic , 只有拥有许可的用户才可以调用ocx插件。继续下一步。 ? ? 4.完成创建控件项目自动创建好MFC ActiveX程序框架。 ? ?...在start 事件中我们调用showcurrenttime 函数,函数实现已经给出。接着我们回调事件函数。 ? ?...3.反注册 反注册控件regsvr32  -u  控件路径XXX ? 到此我们OCX 控件制作就完成了。

5.4K80

MFC编程入门之六(对话框:创建对话框模板和修改对话框属性)

对话框,大家应该很熟悉了,在我们常用的软件中大多都有对话框界面,例如,360安全卫士的主界面其实就是对话框,知识它做了很多美工 方面的工作,将其大大美化了。    ...创建对话框主要分为两大步:    第一,创建对话框资源,主要包括创建新的对话框模板、设置对话框属性和为对话框添加各种控件;    第二,生成对话框类,主要包括新建对话框类、添加控件变量和控件的消息处理函数等...一、创建对话框的应用程序框架    之前创建的HelloWorld程序是单文档应用程序,生成了多种窗口,如果用它来讲创建对话框的话可能有些复杂,对大家单纯理解对话框有点 影响,所以这里就再创建一个基于对话框的应用程序...的Visual C++下选择MFC,中间窗口中选择MFC Application,然后在下面的Name编辑框中键入工程名称, 本例取名“Addition”,在Location编辑框中设置工程的保存路径...二、对话框模板    可见对于主对话框来说,创建对话框第一步中的创建新的对话框模板已经由系统自动完成了。

3.5K10

VC++编写ActiveX控件

(如果不用MFC框架,而用ATL框架来编写,甚至还可以脱离Windwos系统,不仅仅实现语言,甚至平台调用,这个笔者就没有仔细研究了)。     ...,这个也可以语言地进行调用。...里面最后一句话比较重要,就是用VC开发的OCX控件,你可以在其它语言里面都能调用,这样很好的实现了功能化组件的良好循环使用,而且还可以实现语言地调用(例如,你完全可以用C#调用C++开发的OCX控件)...2.自VC++生成的模板基础上自定义功能      所有的自定义功能基本上都来自于“MFC ClassWizard”类向导对话框。    ...3.2.1 通过VC++调用      利用VC6.0建立一个MFC的基本对话框应用程序      在完成程序向导后。执行下面的步骤: 1.

3.3K30

根据控件位置弹出对话框

实现效果 首先我们要知道如何获取控件尺寸和位置信息, 插件必须渲染好, final RenderBox box = globalKey.currentContext.findRenderObject...topLeftPosition = box.localToGlobal(Offset.zero); return topLeftPosition.dy; 可以通过 context.size获取当前控件的尺寸和位置...offset信息 下面是示例,通过context.size.height可以拿到child控件的高度 class HeightReporter extends StatelessWidget { final...'), ); } } 开始Demo 首先我们使用ListView.builder来创建很多靠右的按钮,不写itemCount就是无限循环的, 然后这些按钮就是我们的点击事件按钮,负责弹出对话框的...Duration get transitionDuration => _duration; } 然后push出来的内容就是Popup类,Popup类接收一个上下文context,用来获取点击的控件的位置

1.7K30

MFC中属性表单和向导对话框的使用

每次在使用MFC创建一个框架时,需要一步步选择自己的程序的外观,基本功能等选项,最后MFC会生成一个基本的程序框架,这个就是向导对话框;而属性表单则是另外一种对话框,表单上有多个属性页,每点击某一页,会显示该页的内容...,最好的例子是Visual C++6.0中的Option对话框; 属性表单的创建: 属性表单上由许多属性页组成,每个属性页都可以在可视化的编辑环境中编辑,需要添加的资源名称是对话框下面的IDD_PROPPAGE_LARGE...选项; 创建了资源,下面就是关联MFC的类,属性页的类是CPropertyPage,该类是继承于CDialog类,在使用时需要从CPropertyPage中派生。...MessageBox(TEXT("请选择你的工作地点")); return -1; } return CPropertyPage::OnWizardNext(); } 注意:将变量与控件相关联时为了获取控件返回的值需要调用...UpdateData()函数,当该函数参数为TRUE时会调用DoDataExchange,该函数会根据控件返回的值,动态更新变量的值; 一般情况下只有当用户点击完成时才保存用户输入的信息当用户点击取消时应该取消信息的保存

1.6K10
领券