社区
ATL
帖子详情
请问为什么我写ocx控件,在一个工程里使用时,我写的函数啊都出不来,就是看不到,也不能用!急!!!
starwillis
2003-08-20 04:33:29
如题
...全文
29
1
打赏
收藏
请问为什么我写ocx控件,在一个工程里使用时,我写的函数啊都出不来,就是看不到,也不能用!急!!!
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
blastball
2003-08-20
打赏
举报
回复
ocx项目中 在有个圈的地方右击,添加方法
VC++常用的共用
函数
100多页
相关网站 7 设置窗口最大最小 7 设置窗口标题 7 去掉主菜单 7 修改应用程序图标 7 系统只能允许
一个
程序运行 7 在状态栏中添加
时
间 8 研究调用存储过程 8 得到本机的IP地址 9 vc调用chm文件 10 最高窗口的实现 10 防止Edit框中的Password不保密 11 在同一系统中显示GB字符和BIG5字符 12 改变颜色(整个窗体的
控件
) 13 改变
工程
表头栏 13 ◆如何找开
一个
DiaLog的窗口◆ 13 ◆得到系统中设置的窗口颜色◆ 14 ◆如何让点下去的菜单成为V状态◆ 14 ◆如何调用WINDOWS的颜色板◆ 14 ◆如何产生
一个
MDI的主窗口◆ 15 ◆如何让
一个
文本
控件
显示出值◆ 15 ◆如何让
一个
控件
显示出相应的值◆ 16 ◆在调试中怎么样MESSAGEBOX
一个
数字◆ 16 ◆如何控制
控件
的焦点◆ 16 ◆如何对析构
函数
中对象进行释放◆ 16 ◆如何关闭
一个
模态窗口◆ 17 ◆如何将
一个
提示的声音发到声卡上◆ 17 ◆如何得到打开exe的带的参数◆ 17 ◆如何在框架上建立
一个
工具条◆ 17 ◆如何生成
一个
主窗口下方的状态条◆ 18 ◆如何让Cscrollview类中控制其可以流动区域大小◆ 19 ◆MFC中
控件
的一些基本控制方法◆ 19 ◆如何让
一个
数字型变量化为字符型变量◆ 19 ◆如何
使用
“拉动条”,“上下选择”◆ 19 ◆如何
使用
postmessage来异步触发某事件◆ 21 ◆如何
使用
Sendmessage来异步触发某事件◆ 22 ◆如何修改父类的相关
控件
属性◆ 22 ◆如何在程序中得到
控件
的名◆ 22 ◆如何控制菜单的事件程序◆ 22 ◆如何
使用
控件
中的数据录入的控制属性◆ 23 ◆哪些
函数
是文档、视图相互处理用的◆ 23 ◆如何建立
一个
基于对话框一程序◆ 23 ◆如何建立
一个
线程◆ 24 ◆如何让窗口产生
一个
图标(从应用程序资源中取出)◆ 24 ◆如何得到
一个
edit的录入的值◆ 24 ◆如何启动TIMER事件◆ 25 ◆如何
使用
ctrllist
控件
实现表格◆ 25 ◆如何从INI文件中得到值◆ 25 ◆如何将图标文件
写
到窗口中◆ 26 ◆如何得到本机的IP地址◆ 26 ◆如何
使用
全局变量◆ 26 ◆如何让
一个
字符加上回车、换行◆ 26 ◆如何定义、
使用
结构◆ 26 ◆如何在任意程序中显示MessageBox◆ 27 ◆如何在程序判断出debug状态◆ 27 ◆当对话框中有
一个
滚动条是,当滚动滚动条
时
的消息控制
函数
◆ 27 ◆将
一个
CWnd指针转换成
一个
控件
ID(整数)注意用GetDlgItem()
函数
是从
一个
控件
ID转换成
一个
CWnd的指针◆ 28 ◆如果在对话框中自定义
一个
消息的方法,假设对话框名为CXX◆ 28 ◆消息传递◆ 29 ◆在
一个
函数
引用另外的
一个
对话框◆ 29 ◆全局
函数
的申明问题◆ 29 ◆在应用程序中*APP.CPP中的InitInstance()的事件◆ 29 ◆给执行文件加
一个
图标◆ 30 ◆如何在全局
函数
中通过传入的窗口句柄操作窗口◆ 30 ◆如何使桌面文字背景透明?◆ 30 ◆怎样才能在VC
里
产生
一个
唯一的字符串◆ 31 ◆如何隐藏进程(在系统状态栏和进程列表
里
不可见)◆ 31 ◆如何得到
一个
确定大小的视?◆ 31 ◆如何实现点击窗口任意地方拖动窗口?◆ 32 ◆如何在启动
时
阻止MDI应用程序创建
一个
新文档?◆ 33 ◆如何在多文档MFC程序中制作独立的File|New菜单?◆ 33 ◆如何检测视是否处于分割状态?◆ 34 ◆如何使程序保持极小状态?◆ 34 ◆如何确定当前进程实例是否为唯一实例?◆ 35 ◆如何向
一个
文档附加多个视?◆ 35 ◆如何获得文件的图标、属性、大小、类型等参数?◆ 36 ◆如何得到鼠标下面的窗口?◆ 37 ◆设置鼠标的形状◆ 38 ◆在对话框中设置编辑EDIT的值◆ 38 1. 如何获取应用程序的实例句柄? 38 2. 如何通过代码获得应用程序主窗口的指针? 38 3. 如何在程序中获得其他程序的图标? 38 4. 如何编程结束应用程序?如何编程控制windows的重新引导? 39 5.怎样加载其他的应用程序? 39 6. 确定应用程序的路径 39 7. 获得各种目录信息 40 8. 如何自定义消息 40 9. 如何改变窗口的图标? 40 10. 如何改变窗口的 缺省风格? 40 11. 如何将窗口居中显示? 41 12. 如何让窗口和 MDI窗口一启动就最大化和最小化? 41 13. 如何使程序保持极小状态? 41 14. 如何限制窗口的 大小? 41 15. 如何使窗口不可见? 41 16. 如何使窗口始终在最前方? 41 17、如何创建
一个
字回绕的CEditView 42 18、通用
控件
的显示窗口 42 19、移动窗口 42 20、重置窗口的大小 42 21、如何单击除了窗口标题栏以外的区域使窗口移动 43 22、如何改变视窗的背景颜色 43 23、如何改变窗口标题 44 24、如何防止主框窗口在其说明中显示活动的文档名 44 25、如何获取有关窗口正在处理的当前消息的信息 45 26、如何创建
一个
不规则形状的窗口 45 27、如何在代码中获取工具条和状态条的指针 47 28、如何使能和禁止工具条的工具提示 47 29、如何设置工具条标题 48 30、如何创建和
使用
无模式对话框 48 31、如何在对话框中显示
一个
位图 49 32、如何改变对话或窗体视窗的背景颜色 49 33、如何获取
一个
对话
控件
的指针 50 34、如何禁止和使能
控件
50 35、如何改变
控件
的字体 50 36、如何在OLE
控件
中
使用
OLE_COLOR数据类型 51 37、在不
使用
通用文件打开对话的情况下如何显示
一个
文件列表 51 38、为什么旋转按钮
控件
看起来倒转 51 39为什么旋转按钮
控件
不能
自动地更新它下面的编辑
控件
52 40、如何用位图显示下压按钮 52 41、如何
一个
创建三态下压按钮 52 42、如何动态创建
控件
52 43、如何限制编辑框中的准许字符 53 44、如何改变
控件
的颜色 54 45、当向列表框中添加多个项
时
如何防止闪烁 55 46、如何向编辑
控件
中添加文本 55 47、如何访问预定义的GDI对象 55 48、如何获取GDI对象的属性信息 56 49、如何实现
一个
橡皮区矩形 56 50、如何更新翻转背景颜色的文本 58 51、如何创建
一个
具有特定点大小的字体 58 52、如何计算
一个
串的大小 59 53、如何显示旋转文本 59 54、如何正确显示包含标签字符的串 60 55、串太长
时
如何在其末尾显示
一个
省略号 60 56、如何快速地格式化
一个
CString对象 61 57、为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态 61 58、如何给系统菜单添加
一个
菜单项 61 59、如何确定顶层菜单所占据的菜单行数 62 60、在用户环境中如何确定系统显示元素的颜色 62 问:如何控制窗口框架的最大最小尺寸? 63 问:如何改变窗口框架的颜色? 63 问:如何将应用程序窗口置于屏幕正中? 64 问:VC6.0对VC5.0的兼容性? 64 问:打印和打印机的问题? 64 问:CRichEditCtrl滚动条的问题? 65 问:从数据库中读大于32k的内容? 65 问:如何获得CRichEditCtrl中字符的位置? 66 问:如何限制mdi子框架最大化
时
的大小? 66 问:如何切换视口而不破坏它们? 66 问:改变列表控制
时
发生闪烁现象? 68 问:处理列表
控件
可见项的问题? 68 问:产生线程的问题? 68 问:CFile
使用
了缓冲区吗? 69 问:DAO的密码? 69 问:如何知道CListBox什么
时
候滚动了? 70 问:视口的不活动性如何处理? 70 问:如何
使用
COleClientItem的IDispatch接口? 70 问:关于用户自定义的消息
使用
? 71 问:在打开
一个
文档
时
退出? 71 问:在CListCtrl
控件
中多选择项的删除? 71 问:工作线程的登录状态? 72 问:如何控制菜单的大小? 72 问:改变LVIS_SELECTED的状态颜色? 73 问:如何只存储文档的某一部分? 73 问:保存工具条菜单有bug吗? 73 问:Tip of the day的bug 73 问:如何让我的mfc应用程序可以在最上面? 74 问:如何增加视图中ActiveX
控件
的事件处理
函数
? 75 问:如何创建
一个
动态的Tree
控件
? 75 问:SDI程序开始
时
不打开文档? 75 问:List
控件
中整栏选择? 75 问:如何重载MRU文件? 76 问:CImageList
控件
中图象橙色被显示为黄色? 76 问:无法正确改变应用程序的图标? 78 问:工具条状态的问题? 78 问:在SDI应用程序中
使用
Active
控件
? 79 问:有RichEdit
控件
的对话框无法正常显示? 79 问:DLL中的模板成员
函数
? 79 问:CFormView中的上下文帮助? 80 问:CArchive类的WriteObject
函数
问题? 80 问:RegisterWindowMessage中的BroadcastSystemMessage如何处理? 80 问:CListCtrl中选择变化
时
如何获得通知? 81 问:如何向ATL-COM对象传送
一个
数组? 81 问:如何选择CTreeCtrl中的节点文本进行编辑? 82 问:如何改变默认的光标形状? 82 问:如何用键盘滚动分割的视口? 83 问:如何在线程中处理状态条? 83 问:如何阻止WINDOWS关闭? 83 问:如何使
一个
按钮Disable? 83 问:怎样从MFC扩展动态链结库(DLL)中显示
一个
对话框? 84 问:想隐藏用户界面怎么办? 85 问:如何实现SDI与MDI的转换? 85 问:CDC中的竖排文本? 86 问:如何激活变灰的弹出菜单? 86 问:线程消息? 87 问:TreeCtrl控制的显示速度太慢? 87 怎样使窗口总是浮现在最上面? 88 改变拖放
时
的光标外形? 89 如何定位到最新的记录上? 90 MVC和Doc-View? 90 被禁止(Disable)的
控件
如何改变其文本或背景色? 90 有ODBC的查找
函数
吗? 91 多个MRU菜单的问题 91 校验框类问题 93 CFormView类的Fold按钮 94 视的背景色 94 隐藏
控件
台程序 94 修改SDI窗口标题 95 焦点问题 95 从
一个
OCX
调用另
一个
OCX
的方法。 95 得到视 96 字符转化
时
间 96 二进制还是文本方式? 99 发送消息 99 怎样知道菜单运行
时
的状态 99 DLL编译出错 100 通用
控件
的显示窗口 100 如何禁止和使能
控件
100 如何在OLE
控件
中
使用
OLE_COLOR数据类型 100 在不
使用
通用文件打开对话的情况下如何显示
一个
文件列表 100 为什么旋转按钮
控件
看起来倒转 101 为什么旋转按钮
控件
不能
自动地更新它下面的编辑
控件
101 如何动态创建
控件
101 如何显示旋转文本 101 在TreeList中
使用
Edit功能 102 TreeList control中
使用
check box 103 有关属性对话框(property sheet )的几个提示 108 在MFC加入"这是什么?"的帮助提示 111 精通工具条 112 如何改变视窗的背景颜色 112 为MFC应用程序添加全屏幕显示功能 112 VC常用数据类型
使用
转换详解 114 用Visual C++操作INI文件 117 单文档加入背景图 119 更新窗体方法 120 更改窗口
控件
的能动和
不能
动(以按钮
控件
为例) 120 窗口响应键盘事件 120 密码框输入受保护 121 最高窗口的实现 122 实现窗口动态
写
入汉字和改变汉字颜色形状 123
VB6.0动态加载ActiveX
控件
漫谈
VB6.0动态加载ActiveX
控件
漫谈 深圳 罗汉军 罗德昌 熟悉VB的朋友对
使用
ActiveX
控件
一定不会陌生,众多
控件
极大地方便了编程, 但唯一的缺陷是
不能
动态加载
控件
,必须在设计
时
通过引用,将
控件
放置在窗体上。 VB6.0已能够解决该问题,只是帮助中没有明确说明,并且没有描述到一些关键功 能,由于以前的版本中可以动态创建进程外服务:如果对象是外部可创建的,可在 Set 语句中用 New 关键字、CreateObject 或 GetObject 从部件外面将对象引用赋予变 量。 如果对象是从属对象,则需
使用
高层对象的方法,在 Set 语句中指定
一个
对象引 用: Dim xlApp1 As Excel.Application Set xlApp1 = New Excel.Application 或 Dim xlApp As Object '定义存放引用对象的变量。 Set xlApp = CreateObject("excel.application") xlApp.Visible = True ---- 这些语法很容易造成误导,以为动态加载ActiveX
控件
也是此方法,可能有朋 友也象我一样利用CreateObject尝试了无数次,却无功而返,不知微软公司是出于何种 考虑,动态加载ActiveX
控件
是扩展
控件
集合的方式实现,通过实际摸索,终于就如 何实现动态ActiveX
控件
找出了一条切实可行的方法,下面以
一个
具体的实例来详细说 明。 一、ActiveX
控件
---- ActiveX
控件
是 Visual Basic 工具箱的扩充部分。
使用
ActiveX
控件
的方 法与
使用
其它标准内装的
控件
,如 CheckBox
控件
,完全一样。在程序中加入 ActiveX
控件
后,它将成为开发和运行环境的一部分,并为应用程序提供新的功能。 ---- ActiveX 部件通过客户端/服务器关系与应用程序— 及与部件相互之间— 交 互作用。客户端是
使用
部件功能的应用程序代码或部件。服务器是部件及其关联的对象。 例如,假设应用程序
使用
ActiveX
控件
来提供
一个
标准的雇员窗体,供公司的多种 应用程序
使用
。提供雇员窗体的 ActiveX
控件
就是服务器,
使用
这个
控件
的应用程序 就是服务器的客户端。 二、加载方法 ---- VB6.0中对Controls 集合进行了扩展,以前版本中Controls 集合在窗体上列 举出已加载的
控件
,这在迭代过程中是很有用的。Controls 集合标识
一个
叫做 Controls的内在窗体级变量。如果忽略可选的 object 所在处的整数,则关键字 Controls 必须包括在内。我们通常在窗口中
使用
如下代码: Text1.Text="Hello, world" 其实也可以
使用
如下代码达到同一目的: Controls(1).Text="Hello, world" ---- 在VB6.0中除了原来的Clear、Remove 方法外(很奇怪,为什么微软在VB5.0中 只提供这两种方法,而没有提供Add方法,因为没有Add,这两种方法也就没什么用处), 增加了Add方法,该方法就是用于动态加载
控件
的: Controls.Add(progid as String, Name as String); progid: ActiveX部件的ProgID,如:"VB.CheckBox"; Name:ActiveX部件加载后的名称,如: "MyCheckBox"; 若要在窗体上添加
一个
名为MyButton的按钮,可以
使用
: dim oControl as Object '窗体级变量 注意:这
里
声明为Object对象类型 Private Sub LoadControl() Set oControl = Controls.Add ("VB.CommandButton", "MyButton") oControl.Left = 10 oControl.Top = 10 oControl.Visible = True '使
控件
可见 End Sub ---- 这是VB6.0的标准语法,它在例程中也是如此演示的,不过该方法虽然现实了
控件
的动态加载,按钮显示在窗体上,可以象普通按钮一样按下去,但加载的
控件
不能
预先设计响应事件代码,如:事件Sub MyButton_Click()将是非法的,当然,可以将要 响应的事件封装在
控件
内部。就编程的观点来看该方法没什么大的用处,开发ActiveX
控件
的目的是为了资源共享,为了被其他开发人员利用,所以要提供必要的事件接口, 显然利用该方法不行,通过分析VBControls等相关对象,找出VBControlExtender对象 与EventInfo相结合能提供事件陷井捕捉,VBControlExtender对象对动态添加
控件
特 别有用,它提供了一套通用的属性、方法、事件给开发人员,它的
一个
突出特点是能编 程设计
控件
的事件,熟习类编程的朋友对带事件的对象声明一定不会陌生: ---- Dim WithEvents objElemt as CElemtVBControlExtender也不例外,声明的 语法一样,只不过它有个特殊的事件ObjectEvent(Info As EventInfo),它能捕捉到对 象
使用
RaiseEvent产生的所有事件,EventInfo数据结构映射了事件的名称、参数个数 和参数的值。VBControlExtender和 EventInfo相结合,采用Select Case 就可以预先 将不同类对象的事件放置一起,各自独立运作。将上面的代码改
写
一下就能提供Click 事件了: ---- Dim WithEvents oControl As VBControlExtender '带事件声明声明之后您 就可以在代码窗口的左上角的对象下拉框中发现该对象出现了,也就是说,该对象有了 事件或方法了,它的事件有DragDrop,DragOver ,LostFocus ,GotFocus , ObjectEvent和Validate,其中ObjectEvent是通用的事件捕捉。 Private Sub LoadControl() Set oControl = Controls.Add ("VB. CommandButton", "MyButton") oControl.Visible = True End Sub Private Sub oControl_ObjectEvent(Info As EventInfo) Select Case Info.Name Case "Click" 'Click事件 '您可以添加处理Click事件代码 MsgBox "您按了MyButton!" Case Else ' 其他事件 ' Handle unknown events here. End Select End Sub ---- 当然对微软提供的标准
控件
能采用该方法添加,大家都不会怀疑,但自己开 发的
控件
也能吗?答案是肯定的,我们可以用
一个
实际的例子进行说明。 三、实例描述 ---- 假设
一个
本地网络的监控系统,需要在原理图与实物示意图间切换,原理图 包括组网结构、传输资源、监控主机等,而实物示意图包括路由器、设备、采集器等, 当然两种图的事件要一致,如双击某个设备图形将显示给设备的实
时
数据等,为了简化 维护,将原理图与实物示意图封装成ActiveX
控件
,由于每种图需要加载许多图形控 件,消耗资源较大,
不能
同
时
加载,需要将其分解为两个
控件
,在切换
时
首先卸载
一个
控件
,然后加载另
一个
控件
,所以要实现动态加载ActiveX
控件
。 ---- 原理图
控件
为--Theory.
ocx
,对应
工程
为CTheory; ---- 实物图
控件
为---Fact.
ocx
,对应
工程
为CFact; ---- 注意:为了简化,在设计
控件
时
不设置许可证关键字。 ---- 实物图
控件
上的图形对象可以被拖动,拖动后的位置信息通过事件 ChangePosition来通知拥有该
控件
的窗体,以便下次加载能显示在最后位置,实物 图和原理图
控件
都有双击事件完成的工作相同,其他事件此处忽略。 ---- 四、具体示例 ---- 1、准备工作 ---- 对
控件
Theory.
ocx
、Fact.
ocx
进行注册(利用Regsvr32.exe注册); ---- 建立窗体frmTest.frm ,在窗体上放置按钮cmdLoad
Ocx
—“原理图” ---- 2、声明窗体级变量与加载
函数
LoadControl Dim WithEvents oControl As VBControlExtender '地图仿真
控件
对象 Dim mblnTheory As Boolean '是否显示原理图 Private Function LoadControl(intType As Integer) If Not oControl Is Nothing Then '首先判断对象是否存在,若存在则卸载 Controls.Remove("MapView") '卸载
控件
,此操作非常重要 End If If intType = 0 Then Set oControl = Controls.Add ("CTheory. Theory", "MapView") Else Set oControl = Controls.Add ("CFact.Fact", "MapView") End If oControl.Height = 3500 oControl.Width = 6500 oControl.Top = 100 oControl.Visible = True End Function Private Sub Form_Load() mblnTheory = True End Sub ---- 3、为按钮cmdLoad
Ocx
编
写
代码 Private Sub cmdLoad
OCX
_Click() If mblnTheory Then Call LoadControl(0) mblnTheory = False cmdLoad
OCX
.Caption = "实物图" Else Call LoadControl(1) mblnTheory = True cmdLoad
OCX
.Caption = "原理图" End If End Sub ---- 4、为事件ChangePosition编
写
代码 Private Sub oControl_ObjectEvent (Info As EventInfo) Select Case Info.Name Case "ChangePosition" MsgBox CStr(Info.EventParamters.Item( 1).Value) + ":" + _ CStr(Info.EventParamters.Item(2).Value) Case "DbClick" '双击处理代码 Case Else ' End Select End Sub ---- 注意: EventInfo的参数EventParamters集合中是以1开始的,一般来说,微 软新的集合一般是以1开始的,而旧的是以0开始的,如RdoErrors.Item(0)。 ---- 5、关闭窗口前卸载
控件
Private Sub Form_Unload(Cancel As Integer) Controls.Remove("MapView") Set oControl = Nothing End Sub ---- 6、特别注意 ---- 通过Controls.Add方法添加的ActiveX
控件
一定
不能
在该
工程
中有该
控件
的任 何引用,否则系统将出错。 四、小结 ---- 通过
使用
动态加载ActiveX
控件
使用
庞大的应用程序变得很小,将不同的 ActiveX
控件
进行各种组合,使应用程序更加灵活多变,如您的应用系统要处理三十种门禁, 而某个具体的用户可能只有一种或两种门禁,根本没必要首先将所有门禁包含到应用 中,可将各个门禁独立封装,只安装注册需要的组件,就象Windows的自定义安装一样。 微软的未来技术基础是分布式的组件技术(DCOM),将会把代码的重用发挥得淋漓尽致。 您不妨试一试动态加载,也许会产生令您惊喜的效果! ---- 本代码在Win98、VB6.0(英文版)上编译、运行。
VC++常用功能实例
相关网站 7 设置窗口最大最小 7 设置窗口标题 7 去掉主菜单 7 修改应用程序图标 7 系统只能允许
一个
程序运行 7 在状态栏中添加
时
间 8 研究调用存储过程 8 得到本机的IP地址 9 vc调用chm文件 10 最高窗口的实现 10 防止Edit框中的Password不保密 11 在同一系统中显示GB字符和BIG5字符 12 改变颜色(整个窗体的
控件
) 13 改变
工程
表头栏 13 ◆如何找开
一个
DiaLog的窗口◆ 13 ◆得到系统中设置的窗口颜色◆ 14 ◆如何让点下去的菜单成为V状态◆ 14 ◆如何调用WINDOWS的颜色板◆ 14 ◆如何产生
一个
MDI的主窗口◆ 15 ◆如何让
一个
文本
控件
显示出值◆ 15 ◆如何让
一个
控件
显示出相应的值◆ 16 ◆在调试中怎么样MESSAGEBOX
一个
数字◆ 16 ◆如何控制
控件
的焦点◆ 16 ◆如何对析构
函数
中对象进行释放◆ 16 ◆如何关闭
一个
模态窗口◆ 17 ◆如何将
一个
提示的声音发到声卡上◆ 17 ◆如何得到打开exe的带的参数◆ 17 ◆如何在框架上建立
一个
工具条◆ 17 ◆如何生成
一个
主窗口下方的状态条◆ 18 ◆如何让Cscrollview类中控制其可以流动区域大小◆ 19 ◆MFC中
控件
的一些基本控制方法◆ 19 ◆如何让
一个
数字型变量化为字符型变量◆ 19 ◆如何
使用
“拉动条”,“上下选择”◆ 19 ◆如何
使用
postmessage来异步触发某事件◆ 21 ◆如何
使用
Sendmessage来异步触发某事件◆ 22 ◆如何修改父类的相关
控件
属性◆ 22 ◆如何在程序中得到
控件
的名◆ 22 ◆如何控制菜单的事件程序◆ 22 ◆如何
使用
控件
中的数据录入的控制属性◆ 23 ◆哪些
函数
是文档、视图相互处理用的◆ 23 ◆如何建立
一个
基于对话框一程序◆ 23 ◆如何建立
一个
线程◆ 24 ◆如何让窗口产生
一个
图标(从应用程序资源中取出)◆ 24 ◆如何得到
一个
edit的录入的值◆ 24 ◆如何启动TIMER事件◆ 25 ◆如何
使用
ctrllist
控件
实现表格◆ 25 ◆如何从INI文件中得到值◆ 25 ◆如何将图标文件
写
到窗口中◆ 26 ◆如何得到本机的IP地址◆ 26 ◆如何
使用
全局变量◆ 26 ◆如何让
一个
字符加上回车、换行◆ 26 ◆如何定义、
使用
结构◆ 26 ◆如何在任意程序中显示MessageBox◆ 27 ◆如何在程序判断出debug状态◆ 27 ◆当对话框中有
一个
滚动条是,当滚动滚动条
时
的消息控制
函数
◆ 27 ◆将
一个
CWnd指针转换成
一个
控件
ID(整数)注意用GetDlgItem()
函数
是从
一个
控件
ID转换成
一个
CWnd的指针◆ 28 ◆如果在对话框中自定义
一个
消息的方法,假设对话框名为CXX◆ 28 ◆消息传递◆ 29 ◆在
一个
函数
引用另外的
一个
对话框◆ 29 ◆全局
函数
的申明问题◆ 29 ◆在应用程序中*APP.CPP中的InitInstance()的事件◆ 29 ◆给执行文件加
一个
图标◆ 30 ◆如何在全局
函数
中通过传入的窗口句柄操作窗口◆ 30 ◆如何使桌面文字背景透明?◆ 30 ◆怎样才能在VC
里
产生
一个
唯一的字符串◆ 31 ◆如何隐藏进程(在系统状态栏和进程列表
里
不可见)◆ 31 ◆如何得到
一个
确定大小的视?◆ 31 ◆如何实现点击窗口任意地方拖动窗口?◆ 32 ◆如何在启动
时
阻止MDI应用程序创建
一个
新文档?◆ 33 ◆如何在多文档MFC程序中制作独立的File|New菜单?◆ 33 ◆如何检测视是否处于分割状态?◆ 34 ◆如何使程序保持极小状态?◆ 34 ◆如何确定当前进程实例是否为唯一实例?◆ 35 ◆如何向
一个
文档附加多个视?◆ 35 ◆如何获得文件的图标、属性、大小、类型等参数?◆ 36 ◆如何得到鼠标下面的窗口?◆ 37 ◆设置鼠标的形状◆ 38 ◆在对话框中设置编辑EDIT的值◆ 38 1. 如何获取应用程序的实例句柄? 38 2. 如何通过代码获得应用程序主窗口的指针? 38 3. 如何在程序中获得其他程序的图标? 38 4. 如何编程结束应用程序?如何编程控制windows的重新引导? 39 5.怎样加载其他的应用程序? 39 6. 确定应用程序的路径 39 7. 获得各种目录信息 40 8. 如何自定义消息 40 9. 如何改变窗口的图标? 40 10. 如何改变窗口的 缺省风格? 40 11. 如何将窗口居中显示? 41 12. 如何让窗口和 MDI窗口一启动就最大化和最小化? 41 13. 如何使程序保持极小状态? 41 14. 如何限制窗口的 大小? 41 15. 如何使窗口不可见? 41 16. 如何使窗口始终在最前方? 41 17、如何创建
一个
字回绕的CEditView 42 18、通用
控件
的显示窗口 42 19、移动
pb开发的验证码识别程序 + 实用的pb webbrowser
使用
pb11.5开发 含两个pbl:aaa.pbl是pb对web浏览器
控件
的
使用
操作。
里
面有个set_proxy.
ocx
控件
(设置代理),是我用vb做的
ocx
,因为我用pb实现ip代理
不能
执行成功,所以只能用vb做了个,pb来调用。 create_yzm.pbl是验证码识别程序,包含两部分:创建验证码识别库和利用识别码进行识别两个功能。 是demo版本,所以把功能都用按钮区分开了,可以一步步进行执行。 对不了解验证码识别过程的人来说:可以看看下面: 验证码识别首先是把验证码图片放到本地,然后用图形
函数
把图片
一个
个点的颜色值取出,根据设置的阀值,对图片进行黑白化处理,如果有噪点,进行去噪处理。 然后把图片中的文字
一个
个取出,进行字模处理,任何图片都是
一个
个点组成,黑白图片就是0和1了,处理后存放到识别库文件中。放N个。 这个东西就可以用来对未知的文字进行比对识别了。
flash在C#中的应用
很多光盘上的程序,比如电脑迷光盘,开头总有一段动画,用来展现企业品牌和LOGO之用。这个动画是Flash做的,而且嵌入到程序中简直做到无缝融合,因为右键点击它也不会有那特有而烦人的Flash右键菜单。 因此将Flash融合到WinForm中能够增强程序的多媒体效果和炫丽的外观。现在我们就来看看在C#桌面程序中如何插入Flash视频,而且去掉烦人的右键菜单。 首先要插入Flash就必须
使用
Flash
控件
,在工具栏右键选择“选择项…”,然后在“COM组件”面板下点击“浏览”按钮,在本机电脑C:\WINDOWS\system32\Macromed\Flash\目录
里
选择Flash8.
ocx
(也有可能是Flash9F.
ocx
,版本不同所致),然后点击确定就可以了。但到这
里
还没有完,因为要
使用
Flash
控件
必须注册它。 在CMD
里
面输入如下: regsvr32 C:\WINDOWS\system32\Macromed\Flash\Flash8.
ocx
系统会提示注册成功,这个
时
侯就可以在VS2008
里
面
使用
该
控件
了! 打开VS2008,新建
一个
Windows程序,然后把刚才我们选择的Flash
控件
Shockwave Flash Object拖到窗体中,这
时
窗体中会出现
一个
白色的矩形框,Name属性我们设置为Myflash,在
里
面可以播放我们需要的swf文件。 注意到该
控件
主要有几个属性: Name属性,这个是所有对象都会有的。 Menu属性,这个是Flash菜单项,默认值为true,也就是右键的
时
候会出现完整的Flash菜单,如果设置为False,则只出现最简的菜单(设置与关于)。 Move属性,这个属性是用来指定要播放的Flash文件的。 Playing属性,指定是否装在影片之后马上播放。 Quality属性,设置影片的质量。 Scalemode属性,设置影片的缩放模式。 Visible属性,设置影片
控件
的可视与否。 接下来我们在窗体中放置
一个
按钮,Text属性设置为LoadSwf。双击添加事件代码如下: OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Flash文件|*.swf"; DialogResult dr = ofd.ShowDialog(); if (dr == DialogResult.OK) { Myflash.Movie = ofd.FileName; Myflash.Play(); } 这样当程序运行的
时
候点击按钮会要我们选择
一个
SWF文件,选择好后确定就自动播放了! 当然,我们还可以添加一些按钮,分别为Play,Pause Play按钮的播放功能如下: This.Myflash.Play(); Pause按钮的暂停功能如下: This.Myflash.StopPlay(); 这
里
就不再啰嗦了,各位园友可以自行去研究一些常用的功能。下面我们主要来讲解如何消去烦人的Flash右键菜单! 消去Flash右键菜单有两种方法(本人愚笨,到目前只发现这两种): 方法一: 这个方法比较复杂,也比较繁琐,主要是用到API
函数
的调用。代码如下: #region 去掉Flash右键菜单,API
函数
的声明 private const int GWL_WNDPROC = -4; public delegate IntPtr FlaWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); private IntPtr OldWndProc = IntPtr.Zero; private FlaWndProc Wpr = null; [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, FlaWndProc wndProc); [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern IntPtr CallWindowProc(IntPtr wndProc, IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); private IntPtr FlashWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam) { if(msg == 516) //516就是对应鼠标的右键,当然你也可以用0X0204右键鼠标的16进制编码 return (IntPtr)0; //什么都不做 return CallWindowProc(OldWndProc, hWnd, msg, wParam, lParam); } #endregion 将以上代码放在窗体声明字段的地方。 注:要调用API
函数
就必须引用
一个
命名空间: using System.Runtime.InteropServices; 然后在窗体的载入事件
里
面添加如下代码: private void Flash_Load(object sender, EventArgs e) { this.Wpr = new FlaWndProc(this.FlashWndProc); this.OldWndProc = SetWindowLong(Myflash.Handle, GWL_WNDPROC, Wpr); //关联flash
控件
} 如此则大功告成,看看是不是把Flash右键菜单给去掉了!! 方法二: 这个方法很简单,也很灵活,主要用到继承和重
写
等面向对象的核心内容。 首先声明
一个
类,让它去继承AxShockwaveFlashObjects.AxShockwaveFlash,该类是实例化Flash
控件
生成的类。该类中包含各种Flash的事件和属性,在这
里
我们只对右键菜单的事件感兴趣,因此我们去重
写
该事件。 类的代码如下: public class FlashRightKey : AxShockwaveFlashObjects.AxShockwaveFlash { //定义
一个
公共类FlashRightKey(类名自己定义)来继承AxShockwaveFlashObjects.AxShockwaveFlash(在实例化Shockwave Flash Object
控件
后生成)类 protected override void WndProc(ref Message m) //重载WndProc方法(此方法即消息处理机制) { if (m.Msg == 0X0204) //0×0204即鼠标右键的16进制编码 return; //返回并不输出 else base.WndProc(ref m); //如果不是右键的话则返回正常的信息 } } 类
写
好了,我们要在Flash
控件
里
面
使用
它,必须在实例化Flash
控件
的
时
候用如下代码(
写
在Flash.Designer.cs文件相应的地方): private FlashRightKey MyFlash2; this.MyFlash2 = new Namespace.FlashRightKey(); 注:Namespace为
工程
项目的命名空间。 剩下的就和不用我多说了,大功告成,实现了Flash
控件
去掉右键菜单。 以上代码在 XP+VS2008+Flash8播放器 调试通过。 本文也只是抛砖引玉,至于如何获取点击事件以及和其他
控件
的通信则是比较高深一点的知识了,各位朋友互相勉励,想更高深的知识挺进!
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章