摘要:今天看到淘宝UED团队发布了一个Chrome扩展,用于支持在Chrome浏览器点击"和我联系"按钮会弹出旺旺的聊天窗口。我把这个扩展下载了下来,发现里面使用了插件,不理解这个"npwangwang.dll"对应的代码就不能理解这个扩展,Google官方文档中没有怎么讲插件的开发,也找不到什么好的实例。如果淘宝将这个扩展的源代码公开就好啦,刚好一直想研究下Mozilla NPAPI的使用,毕竟Javascript的接口很有限。Chrome OS的右上角要显示很多系统信息,比如电池的电量,这通过浏览器扩展没法完成,我想要直接调用系统接口就应该通过插件来完成。
阅读全文
随笔分类 - VC/MFC
摘要:问题一解决方案:在编activex控件时,可以用到Active X control test container来测试activex控件,这在VisualStudio 6里面是很方便查找的,工具菜单下面就有。但是在visaul studio 2008 里面TSTCON32.exe这个文件却消失了。那它是没了吗,不是的。而是微软把它放在了例子程序里面,需要自己编译。详细目录:比如我装在C盘里面,VC的例子在 “C:\Program Files\Microsoft Visual Studio 9.0\Samples\2052\AllVCLanguageSamples.zip”,吧这个文件解压缩以后
阅读全文
摘要:1,环境的配置 参考这篇bolg:http://blog.csdn.net/mythma/archive/2008/08/31/2857664.aspx工程 / 调试 / 命令:C:/Program Files/Internet Explorer/iexplore.exe工程 / 调试 / 命令参数:E:/RYF resource/activexApp/a.html注意:命令参数必须是绝对路径! 使用绝对路径打开ie时候,会报“诊断错误!”2,生成ocx时候我写activex使用了opencv库,添加了opencv的dll路径的环境变量,所以并没有将dll拷贝到生成的ocx文件夹!报错:1&g
阅读全文
摘要:不知道是不是微软的粗心大意,VS2008中竟然没有ActiveX控件测试容器。幸好需要在IE中测试控件,就不需要那个测试容器啦。1. 生产测试控件的HTML:<HTML><HEAD><TITLE>Test</TITLE></HEAD><BODY><OBJECT ID="MyActiveX" WIDTH=800 HEIGHT=600CLASSID="CLSID:5228A02F-8FBD-424C-B457-EEBD4E748504"> <PARAM NAME=&qu
阅读全文
摘要:问题: 我在学习编程过程中,在ocx静态调用Dynamic Link Library,链接提示错误:Project:error PRJ0050:未能注册输出。请尝试启用“每个用户的重定向”,或用提升权限从命令提示窗口中注册该组件。以为是win7中权限问题,可以看了属性没什么问题? 解答: 根据所述,肯定不是权限问题,而是由于在ocx中引用的dll,没有放在生成ocx控件的目录中,链接就出现了找不到的提示信息。另外查询的资料供参考如下:[c++]"Project : error PRJ0050: 未能注册输出。请确保您有修改注册表的相应权限"错误的解决原创空间, 软件技术,
阅读全文
摘要:为了使软件版本号的最后一位,即修订号与由svn管理的代码库修订号保持一致并自动更新,可以利用VS2005的生成事件和 svn 中的 subwcrev 程序实现,步骤如下:工具/原料Visual Studio 2005 SVN 客户端(TortoiseSVN 或其他 ) 步骤/方法编写一个模板文件,比如取名为 version_template.h,内容如下#ifndef _VERSION_H_#define _VERSION_H_#define VER_MAJOR 1#define VER_MINOR 0#define VER_REVISION $WCREV$#endif //!_VERSION
阅读全文
摘要:一.IDE基础配置1.字体VC6中“Tools→Options→Format→Font”配置字体;VC2005中“工具→选项→环境→字体和颜色”配置字体。编写代码一般采用等宽字体,等宽点阵(位图)字体,相对矢量字体而言具有兼容性好和显示清晰的优点。常用的编程等宽字体包括Fixedsys(VC6和notepad御用字体)、Consolas、YaHei Mono。VC6默认可选字体只有Fixedsys和Terminal,可通过修改注册表来改字体,在HKEY_CURRENT_USER/Software/Microsoft/DevStudio/6.0/Format下面有几个子键,可以修改Source
阅读全文
摘要:VC的工程设置解读Project--Settings VC工程设置可能会直接影响到工程的正确性,有时是BUG产生的直接原因,在出现莫名其妙的错误,首先应考虑到是否是工程设置有问题,这无论对于开发还是测试,都是很必要的,本文大致介绍一下工程设置选项。 工程选项的快捷建是Alt+F7, 左边的列表可以选择要设置的工程编译方式(Debug或Release),如果多个工程,还可以选择要设置的工程。 右边是一个属性页,内容十分丰富,依次是: General , Debug , C/C++ , Link , Resource , MIDL , Browse Info , Custom Build ...
阅读全文
摘要:在调试 Visual Studio 2008 程序时,经常有一些动态链接库(即 dll 文件)需要加载到工程里,这样才能依赖第三方库进行程序调试。这些动态链接库,往往都是测试版本或是开发中的版本,或者会有若干个版本;这个时候,如果直接把 dll 所在目录加到 PATH 里,则会有潜在冲突的危险;如果直接拷贝到 Visual Studio 的目录下,假如测试工程太多,每次有新版本的动态链接库更新时,你需要更新若干次,拷贝、粘贴苦不堪言。在开发过程中,究竟怎样来让 Visual Studio 链接这些 lib 及 dll 文件会比较好呢?总体上来说,有几种方法可以改变 Visual Studio
阅读全文
摘要:DSW:全称是Developer Studio Workspace,最高级别的配置文件,记录了整个工作空间的配置信息,她是一个纯文本的文件,在vc创建新项目的时候自动生成 DSP:全称是Developer Studio Project,也是一个配置文件,不过她记录的是一个项目的所有配置信息,纯文本文件 OPT:与DSW、DSP配合使用的配置文件,她记录了与机器硬件有关的信息,同一个项目在不同的机器上的opt文件内容是不同的 CLW:记录了跟ClassWizard相关的信息,如果丢失了clw文件,那么在Class View面板里就没有类信息 PLG:实际上是一个超文本文件,可以用Int...
阅读全文
摘要:非模态对话框自动销毁的好方法在进行非模态对话框编程时,由于其需要通过new 一个对话框对象,然后调用Create函数来创建,这就牵涉到何时把对话框delete掉的问题,通过如下方法,可以让你不再担心对话框忘记delete掉而导致的内存泄漏问题。1、用ClassWizard在对话框中添加如下虚拟函数virtual void PostNcDestroy();这样就有了这样一个函数:void CAboutDlg::PostNcDestroy() {// TODO: Add your specialized code here and/or call the base classdelete this
阅读全文
摘要:先来看CreateEx函数:BOOL CWnd::CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName,LPCTSTR lpszWindowName, DWORD dwStyle,const RECT& rect, CWnd* pParentWnd, UINT nID,LPVOID lpParam /* = NULL */){return CreateEx(dwExStyle, lpszClassName, lpszWindowName, dwStyle,rect.left, rect.top, rect.right - rect.left,
阅读全文
摘要:总结OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别(转) 2009年09月22日 下午 08:33 第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDestroy()是CWnd基类的成员函数,即WM消息响应函数。从应用程序结构的角度,拿对话框来说,红色的X对应的是CWnd,而处于对话框中的“确定”、“取消”按钮则对应了CDialog。 第二,OnClose()和OnDestroy() 在单视图程序中,根据<<深入浅出MFC>>所讲,程序退出时执行的操作顺序为(从点X按钮开始)(1
阅读全文
摘要:win32直接操作的是句柄HANDLE,每个句柄就对应windows窗口,而vc对HANDLE进行类封装,间接操作的都是HANDLE,现在句柄只是类的一个成员变量。从句柄到指针 CWnd* pWnd=CWnd::FromHandle(hWnd); //a temporary CWnd object is created //and attached. pWnd->Attach(hWnd); //Attaches a Windows window to a CWnd object从指针到句柄 HWND hWnd=pWnd->GetSafeHandle(); hWnd=pWnd->
阅读全文
摘要:基于对话框的程序(mfc默认生成),重载OnEraseBkgnd函数,其它不动,若在OnPaint函数中不调用其基类的OnPaint函数,即注释掉CDialog::OnPaint();,代码如下: [cpp] view plaincopyprint?voidCDDDDlg::OnPaint(){if(IsIconic()){CPaintDCdc(this);//devicecontextforpainting SendMessage(WM_ICONERASEBKGND,reinterpret_cast<WPARAM>(dc.GetSafeHdc()),0);//Centericon
阅读全文
摘要:方法一:在OnPaint中StretchBlt具体是:注释掉CDialog::OnPaint()或放到结尾(原因何在呢?),并加入贴图代码[cpp] view plaincopyprint?voidCqqqqqDlg::OnPaint(){if(IsIconic()){CPaintDCdc(this);//devicecontextforpainting SendMessage(WM_ICONERASEBKGND,reinterpret_cast<WPARAM>(dc.GetSafeHdc()),0);//Centericoninclientrectangle intcxIcon=
阅读全文
摘要:设置对话框背景颜色及背景图片可在OnCtlColor(),OnEraseBkgnd(),OnPaint()里设置,对话框初始化完毕,显示时调用OnSize()->OnEraseBkgnd(),->OnPaint()->OnCtlColor(), 若想改变对话框大小,比如全屏显示ShowWindow(SW_SHOWMAXIMIZED);UpdateWindow();其中 ShowWindow会调用OnSize()->OnEraseBkgnd(),UpdateWindow();调用OnPaint()->OnCtlColor(),若对话框中没有设置消息响应OnErase
阅读全文
摘要:voidInvalidate( BOOL bErase = TRUE );该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时Windows会在应用程序的消息队列中放置WM_PAINT消息。MFC为窗口类提供了WM_PAINT的消息处理函数OnPaint,OnPaint负责重绘窗口。视图类有一些例外,在视图类的OnPaint函数中调用了OnDraw函数,实际的重绘工作由OnDraw来完成。参数bErase为TRUE时,重绘区域内的背景将被擦除,否则,背景将保持不变。和 Update.
阅读全文
摘要:MoveWindow只能设置窗口的大小和位置;SetWindowPos拥有MoveWindow的全部功能之外,还可以设置窗口的层叠关系(如,把指定的窗口放在所有窗口的最上层--always on top就可以用这个函数、或者把指定的窗口放在另一个窗口的下层,等等)。 没有什么优缺点可言,只是功能上的大小有别。你完全可以不用MoveWindow,而只用SetWindowPos;但是,在只要设置窗口大小或位置的情况下,你也完全可以使用MoveWindow.void MoveWindow( int x, int y, int nWidth, int nHeight, BOOL bRepaint =
阅读全文
摘要:1. 系统何时发送WM_PAINT消息? 系统会在多个不同的时机发送 WM_PAINT 消息:当第一次创建一个窗口时,当改变窗口的大小时,当把窗口从另一个 窗口背后移出时,当最大化或最小化窗口时,等等,这些动作都是由系统管理的,应用只是被动地接收该消息,在消息处理 函数中进行绘制操作;大多数的时候应用也需要能够主动引发窗口中的绘制操作,比如当窗口显示的数据改变的时候,这一 般是通过 InvalidateRect 和 InvalidateRgn 函数来完成的。 InvalidateRect 和 InvalidateRgn把指定的区域加到窗口的 Update Region 中,当应用的消息队列没有
阅读全文