有没有高手愿意远程教我使用vc++vc 6.0 win7万分感谢。 QQ957735532

:转载时请以超链接形式标明文章原始出处和作者信息及本声明
&&&讲CLIPS嵌入VC里的文章有不少,但却大多只介绍了一些基本步骤。初入CLIPS和VC时看的是云里雾里,扑朔迷离,多走了些许弯路。最近因论文需要想结合VC与CLIPS做一个故障诊断专家系统,初步设想是:将VC做程序界面,CLIPS作为内部推理引擎,把两者的各自优势利用起来。但看了许多类似资料后,发现完全不能实现两者的联合,于是花了点时间尝试了一番,终于成功实现两者的结合。在此,特将学习心得和嵌入步骤尽量详细的写下来,供有需要的朋友参考。
&& CLIPS的开发者在开发之初就已经考虑到了相关问题,为CLIPS与其他高级语言的混合编程提供了许多支持。将CLIPS与VC++进行混合编程的方法有两种:一是直接嵌入式,因为CLIPS本身就是用C语言系统编写的软件;第二种方法是采用动态链接库的方式实现两者的结合。两者的繁简程度有所不同,一般来说第一种方法比第二种要复杂一些,在使用直接嵌入式的混合编程方式必须通过CLIPS提供的DefineFunction()函数将用户自定义的函数加入CLIPS中,并在CLIPS中进行编译,通过把参数传给CLIPS,最后从CLIPS中得到返回值。在这种方式中,所有的外部函数都必须向CLIPS声明。我本人也尝试过第一种方式的链接,在编译的时候,需要将CLIPS的source文件夹里的文件全部拷到工程目录下。在这里,我不对第一种方法做过多的说明了,下面主要讲第二种方法的实现。
&& 在写步骤之前,我有句很重要的话,请一定看清楚!---请注意版本的匹配问题。
&& 我们需要两个文件,一个是CLIPS的DLL动态库文件,一个是包装类文件CLIPWrap。CLIPWrap文件是由Mark Tomlinson编写的,在【注:此站点已经被永久性关闭了,不知何故。】的VC板块里可以下载到该文件夹的,CLIPS的DLL文件同样在该网站里可以down到。检查下载的clipwrap文件夹,会发现有一个clipwrap文件外还有两个文件,分别是clipsmfc.h和clipsmfc.cpp文件,clipwrap内还有这样的两个文件:Clipsmfc_old.h和Clipsmfc_old.cpp。前面的两个文件与后面的DLL不匹配,所以,使用clipwarp文件夹里面的clipsmfc_old.h和clipsmfc_old.cpp文件。使用的时候,将这两个文件拷贝到工程目录下,改一下名字,把后缀_old去掉即可。为与之clipwrap匹配,DLL文件这里我下载的是(OLD) 32-bit Windows 95/NT CLIPS DLL文件。【如果用clipsmfc.h和clipsmfc.cpp与新的CLIPS.dll配合,编译无错误但运行时会首先跳出对话框:CLIPSWrap::GetProcAddress,内容为:unable to lacates CLIPS entry point for function:InitializeCLIPS,将新CLIPS.dll换成6.1.0.61版的dll时编译通过,运行成功。】
&&& 好啦,需要的文件都已经下载完毕,现在就开始着手使用它们了!
&&& 1.首先,新建一个MFC对话框程序,命名为ClipsTest。
&&& 2.将clipwarp文件夹里面的dynclips.h和dyaload.h两个头文件拷贝到VC++6.0的安装路径下vc98文件夹下的include文件夹里面去。
&&& 3.将下载的clips.dll和clips.lib文件拷贝到ClipsTest工程目录下。
&&& 4.将clipwarp文件夹里面的rsvarcol.cpp和Rsvarcol.h拷贝到ClipsTest工程目录下。
&&&&5.由于CLIPS程序需要使用多线程序(Multithreaded libraries),因此需对内嵌CLIPS的程序项目(Project)进行正确的设置。其方法为:先择Project菜单中的Settings项,然后选择C/C++标签页,在Category下选择Code Generation,然后在Use Runtime Library下选择Debug Multithreaded DLL(对于Debug版)或Multithreaded(对于Release版)。注意这里是选择Debug Multithreaded DLL。对于不采用MFC编程的选择Debug Multithreaded,使用静态链接库链接。
&&& 6.设置动态链接。在project/setting里面选择&连接&,在对象/模块一栏里添加上clips.lib。
&&& 7.在project里选择add files,将clipsmfc.cpp和clipsmfc.h文件添加到工程里面来。
&&& 8.在使用到CLIPS函数的程序头文件里加上#include "clipsmfc.h"。这里即是在ClipsTestDlg.h文件的最上端加上即可。
&&& 可能出现的错误提示:
&&& 1.错误指向Rsvarcol.h,将改为:&Rsvarcol.h&。
&&& 2.unexpected end of file while looking for precompiled header directive。右键点工程名,选设置,然后选c/c++属性页,再选catagory选单中选 precompiled header ,将选项置成no use。
&&& 现在应该就OK,可以使用CLIPS的包装类CCLIPWrap了!
&&& 测试加载是否成功,通过往OnInitDialog函数里写入代码进行。贴出部分代码如下:
&&& BOOL CClipsTestDlg::OnInitDialog(){&CDialog::OnInitDialog();&CString sD&CString m_&&&//m_display用来接收显示成功或失败的信息&CCLIPSWrap *m_pClips=new CCLIPSWrap();&CStringArray m_&&&& if(m_pClips-&CLIPSInit())& //初始化CLIPS&&sDisplay="CLIPS动态库加载成功!";&else&&sDisplay="CLIPS加载失败!";&//MessageBox(sDisplay);&&& m_display=sD&&& m_pClips-&SetRouteBuffer(&m_ddisplay,sDisplay);&UpdateData(FALSE);&int iErrC&CString m_eFile="auto.clp";& //添加一个clp文件到工程目录下&m_pClips-&CLIPSClear();&iErrCode=m_pClips-&CLIPSLoad(m_eFile);&if (iErrCode!=CCLIPSWrap::READ_OK)&{&&switch(iErrCode)&&{&&case CCLIPSWrap::READ_FAIL:&&&MessageBox("由于读取失败,未能成功供加载规则库!");&&&&&case CCLIPSWrap::PARSE_FAIL:&&&MessageBox("由于分解失败,未能成功加载规则库!");&&&&&case CCLIPSWrap::BAD_LOAD_NAME:&&&MessageBox("由于规则库文件名不正确,未能成功加载!");&&&&&case CCLIPSWrap::READ_NOT_INIT:&&&MessageBox("CLIPS没有初始化,未能成功!");&&&&&}&&m_pClips-&CLIPSExit();&&&return FALSE;&}&else &&& //MessageBox("成功");&m_display+="\r\n 成功加载知识库,现在可以运行!";&&& m_Display.SetWindowText(m_display);&//这里我设置了一个edit控件,并关联control变量&UpdateData(FALSE);&&&&&&&&&&&&&&&&&&&&&//m_Display&m_pClips-&CLIPSReset();&return TRUE;
&&& 全部编译,运行,便可在edit控件里看到&CLIPS动态库加载成功!成功加载知识库,现在可以运行!&的成功提示消息了!
&&& 以上运行环境为:CLIPS6.10版的DLL,VC++6.0debug版。
&&&&有需要CLIPS相关资料的可以回复留下你的电子邮箱,我会尽快发过去。
【相关网站介绍使用wrap的步骤】&:The instructions given here pertain to Microsoft's Developer Studio.
Properly linking a CLIPS program requires the use of Multithreaded libraries.(貌似这里选择这个会编译错误)While working on a project, go to the Project menu item, select Settings (or press Alt-F7), click the C/C++ tab. Under the heading of Category select the Code Generation option. Under the heading of Use run-time library select Debug Multithreaded for Debug builds or Multithreaded for Release builds.
There are two ways to use the class wrappers.
Include the wrapper directly in your project.
Under the Project menu item, select Add To Project | Files. Find and select Clipsmfc.cpp, make sure that dynclips.h and dynaload.h appear in your VC\Include directory. Also, make sure that the #include statement for Clipsmfc.h is coded properly.
Build a wrapper library and include it in your project.
Build the .lib file from Clipsmfc.cpp. Next, under the Project menu item, select Settings (or press Alt-F7), click the Link tab and under the heading Object/library modules include the name of the .lib file.
引用地址:QQprint 使用vc++6.0编写的模拟QQ截图的程序,基本实现了 所有功能. 2D Graphic 2D图形编程 238万源代码下载-
&文件名称: QQprint
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 1978 KB
&&上传时间:
&&下载次数: 99
&&提 供 者:
&详细说明:使用vc++6.0编写的模拟QQ截图的程序,基本实现了QQ截图的所有功能.-Prepared using vc++6.0 program simulation QQ screenshots, basically all the features of the QQ screenshots.
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&QQ截图\CatchScreen\CatchScreen.aps&&......\...........\CatchScreen.cpp&&......\...........\CatchScreen.dsp&&......\...........\CatchScreen.dsw&&......\...........\CatchScreen.h&&......\...........\CatchScreen.ncb&&......\...........\CatchScreen.opt&&......\...........\CatchScreen.plg&&......\...........\CatchScreen.rc&&......\...........\CatchScreenDlg.cpp&&......\...........\CatchScreenDlg.h&&......\...........\Debug\CatchScreen.exe&&......\...........\.....\CatchScreen.ilk&&......\...........\.....\CatchScreen.obj&&......\...........\.....\CatchScreen.pch&&......\...........\.....\CatchScreen.pdb&&......\...........\.....\CatchScreen.res&&......\...........\.....\CatchScreenDlg.obj&&......\...........\.....\MyEdit.obj&&......\...........\.....\StdAfx.obj&&......\...........\.....\Track.obj&&......\...........\.....\vc60.idb&&......\...........\.....\vc60.pdb&&......\...........\MyEdit.cpp&&......\...........\MyEdit.h&&......\...........\ReadMe.txt&&......\...........\res\arrow_m.cur&&......\...........\...\backd.bmp&&......\...........\...\backd3.bmp&&......\...........\...\CatchScreen.ico&&......\...........\...\CatchScreen.rc2&&......\...........\resource.h&&......\...........\StdAfx.cpp&&......\...........\StdAfx.h&&......\...........\Track.cpp&&......\...........\Track.h&&......\...........\Debug&&......\...........\res&&......\CatchScreen&&QQ截图
&[]:很好,推荐下载&[]:很好,推荐下载
&近期下载过的用户:
&&&&&&&&[]
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - vc++实现的截图程序,由鼠标左键选择区域,双击保存为bmp,可运行。经过测试
&[] - vc++6.0记录屏幕影像和声音,还可截图保存为jpg、bmp,编译全通过
&[] - 屏幕截图 qq的源代码 大家可以互相参阅
&[] - vc++仿QQ屏幕静态截图功能
VC++仿QQ屏幕静态截图功能
VC++仿QQ屏幕静态截图功能
&[] - QQ 静态截图程序模拟实现,主要是实现屏幕截取图片等
&[] - 这是一个图像截取的工具,实现了截取图像保存为BMP或者JPEG的功能,按照自定义的方式进行图像的截取,较方便!
&[] - 动态的vc++窗体分栏效果
动态的VC++窗体分栏效果,作者:郭尚君。也就是把窗体分成几个部分,你框架一样的窗体,鼠标拖动十字框架交叉点即可改变框架的布局大小,控制灵活
&[] - windows截屏程序,可以将用户区的图像截图保存成BMP图像
&[] - 最新版完整模拟QQ截屏的VB源代码,支持截图编辑(可以再截图中画矩形形、椎园、文本、箭头);带撤销,重做功能,可以说一点都不比QQ截屏逊色!
&[] - 利用GDI+写的windows控件组,包括,进度条,按钮,编辑框,界面非常漂亮,颜色非常鲜艳求vc++6.0相配的msdn library ,要是32位win7能装的,万分感谢啊!网上下的装上都没有文字!(\大哭)_百度知道3127人阅读
这几天要在公司远程家里的电脑,家里的电脑是使用路由器拨号的。所以远程桌面遇到了那个经典的问题IP IP IP 是动态的怎么办??????,
查了点资料又花生壳的等。。映射动态IP的试下好像不太管用。公司网速不快远程最理想的当属QQ,可是家里没人谁按远程协助按钮?(有人也涉及到隐私问题呵呵)网查了一推自动QQ远程协助软件 不是木马就是不好用!算了作为一名程序袁还是自己动手吧!!网查了一推资料和问其他VC高手终于搞定,写的比较简陋,窗口名称和鼠标点击位置都是写死的,就是为了快而简单(20行代码呵呵),,能达到要求就OK了(就我自己用呵呵)。。
原理:就是监听QQ聊天窗体的显示,用FindWindow(&类名&,&窗口标题&);得到窗口句柄判断& 要监视的窗体状态 。然后模拟鼠标点击& “远程协助按钮”
代码:1.首先来个定时器每3秒检查一次(回调函数要先声明后使用) 环境VC++6.0
void CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime );//声明回调函数
SetTimer(1,3000,(TIMERPROC)TimerProc);//用回调函数处理,此时对话框的消息处理函数不再处理。3s
2.接下来检查聊天窗口状态,模拟点击相应的位置。这里涉及到取窗口的 类名和窗口标题 (想我这样对VC不是很熟的,可能不知道怎么弄。用WindowSpy就OK了),经测试QQ的聊天窗口的类名貌似都一样的,标题就是QQ好友的备注名称。坐标可用鼠标模拟软件获取。。
* 定时器回调函数
void CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime )
struct HWND__ * m_pWnd=FindWindow(&TXGuiFoundation&,&金色阳光&);//根据(类名,窗口标题)查找窗体返回句柄(窗口标题就是QQ好友的备注姓名)
if(m_pWnd)
if(!::IsIconic(m_pWnd)){//如果窗口不是最小化状态
//Sleep(3000);//等待3秒,待聊天窗口初始化完毕(以免点击到其他位置)
//AfxMessageBox(&找到窗体了,并且可见状态&);
mouseLeftClick(620,256);//单击远程按钮(位置信息可以用鼠标模拟点击软件获取)
mouseLeftClick(915,193);//单击最小化按钮 让窗口最小化 以免
}3.模拟鼠标点击
* 鼠标左键单击 坐标x,y
void mouseLeftClick(int x,int y){
SetCursorPos(x, y);// 位置
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
OK ,现在按照你设置好的QQ好友 ,用好友QQ登陆给你发个抖动窗口(让聊天窗口显示出来),接着你的电脑就会自动向好友发远程请求了。
用两个QQ就可以远程控制其他电脑了再也不用担心什么公网,动态IP& 路由端口映射等麻烦的问题了呵呵。。。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:119851次
积分:1474
积分:1474
排名:千里之外
原创:23篇
转载:20篇
评论:29条
(1)(1)(1)(1)(1)(2)(2)(2)(1)(2)(2)(2)(1)(1)(1)(2)(1)(3)(1)(1)(1)(1)(3)(3)(4)(3)哪位大虾能给发一个能用的VC6.0 邮箱 谢了_百度知道

我要回帖

更多关于 vc 6.0 win7 的文章

 

随机推荐