Jiangsheng的CSDN Digest (Jan 1 2006)-程序员宅基地

技术标签: xmlhttprequest  envdte  输入法  module  microsoft  vb.net  

CSDN 讨论总结系列:


MSXML4.DLL中成功发送,MSXML.DLL中接收失败 (VC/MFC ATL/ActiveX/COM )


MSXML4.DLL和MSXML.DLL都有IXMLHTTPRequest,为了让我的控件更具有移植性,我最终觉得使用MSXML.DLL。在改写程序中挺困难,我将要发送的数据保存在一个流中,让后通过IXMLHTTPRequest的SEND方法发送这个流,在我使用MSXML4.DLL时很顺利,但是现在服务器接收到的流字节为零。
为了方便大家帮我纠错,我把问题简单化了



#include
#include
#include

using std::cout;
using std::endl;

#import "msxml.dll"

int main()
{
::CoInitialize(0);
CComPtr spStr;
CComPtr spStm;
HRESULT hr= S_OK;
try {

DWORD STG_FLAG= STGM_TRANSACTED | STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_CREATE | STGM_DELETEONRELEASE;
if(FAILED(hr = ::StgCreateDocfile(NULL, STG_FLAG, 0, &spStr))) {
throwhr;
}

STG_FLAG= STGM_DIRECT | STGM_READWRITE | STGM_SHARE_EXCLUSIVE;
if(FAILED(hr = spStr->CreateStream(L"SendRequest", STG_FLAG, 0, 0, &spStm))) {
throwhr;
}

USES_CONVERSION;
LPSTR lpszVer= OLE2A(L"你好服务器,我是客户端TestHttp2!");
int cblen= lstrlenA(lpszVer);
char buf[10];memset(buf, 0, 10);
itoa(cblen, buf, 10);
spStm->Write(lpszVer, cblen, NULL);
spStm->Commit(STGC_DEFAULT);

CComPtr spHttp;
hr= spHttp.CoCreateInstance(__uuidof(MSXML::XMLHTTPRequest), NULL, CLSCTX_INPROC_SERVER);
hr= spHttp->open("POST", L"http://localhost:8080/root/serverAction.do?send=yes", false);
spHttp->setRequestHeader("Content-Length", buf);
spHttp->send(spStm.p);
} catch(HRESULT err) {
cout<< err << endl;
}
::CoUninitialize();
return0;
}


Commit之后没有seek到开头,读写共用一个流光标的


一个画图的ActiveX,但是只要一有滚动条,ActiveX控件里面就闪烁,怎么去掉这个闪烁(Web 开发 JavaScript )


VC6.0写的MFC ActiveX控件.
尽量用javascript方法解决.不改动ActiveX源代码.谢谢

参考资料
http://support.microsoft.com/kb/233391


如果你的控件包含多个窗口,创建控件的时候加上WS_CLIPCHILDREN风格。
如果控件的绘制过程是自画,那么尝试使用内存DC作为缓冲,以及捕获WM_ERASEBKGND并且直接返回,绕过默认的擦除过程。
参见
http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q310384

MFX做OCX,要求通过集合性质的属性提供参数给用户


在CToolBar上面创建一个IE作为广告。使用CHtmlView但是退出的时候总是提示内存出错(VC/MFC 界面)


我想在CToolBar上面创建一个IE作为广告。
使用CHtmlView但是退出的时候总是提示内存出错?
请问如何在CToolBar上面添加一个View类呢?我是直接new 的派生类


重载PostNCDestroy,不调用基类的处理。参见http://msdn.microsoft.com/msdnmag/issues/03/08/CQA/


在DLL中使用GDI+时GdiplusStartup和ShutDown在什么地方调用好(VC/MFC 界面)


在DLLMain里面调用可以吗?


DLLMain里面调用这两个函数会造成死锁。因为这两个函数会加载和卸载gdiplus.dll,而这又会调用DLLMain。参考http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/dllmain.asp
你可以导出调用这两个函数的函数,然后在外部调用导出的函数。


文本框的问题(VC/MFC 基础类 )


为什么CTRL+C CTRL+V 在文本框中不能用

程序是基于FORMVIEW 的
好象在程序中添加下列代码就可以了
但我不知道为什么会这样?
void CRecieve::OnEditCut()
{
// TODO: Add your command handler code here
m_ctrlReceiveData.Cut();
}
 


去掉Accelerator加速键表的相关内容就可以了,因为Accelerator优先截取了你的输入
Accelerator——IDR_MAINFRAME——ID_EDIT_COPY, ID_EDIT_CUT之类。参见http://msdn.microsoft.com/msdnmag/issues/02/05/c/


如何使用mschart这个控件(VC/MFC ATL/ActiveX/COM )


我用vc编写程序,用到了这个控件显示图表。然后我将程序打包成setup以后,在一台空白机子上安装运行,发现控件不能创建。我的安装包里面有mschrt20.ocx这个控件,而且也是自动注册的,可是就是不行。
当mschrt20.ocx这个控件存在系统中,而且是注册过的,如果没有装vc,我的问题就出现了,如果装了vc,我的问题就不出现了,好晕!
还有我说明一下:我的mschart这个控件不是直接添加到对话框上的,而是以对象的形势创建生成的。如果是在对话框上添加这个控件,只要系统有mschrt20.ocx这个注册的控件,那么程序就会正常显示,但是如果我以对象的形式create一个控件,就不行


有的控件创建的时候需要证书。一般情况下在对话框上添加控件时会自动生成运行时证书,但是手动创建时需要在代码中手动添加证书。你可以单步跟踪MFC的对话框创建代码来查看证书内容。
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q151771

另外一种方法是手动修改注册表。参见http://www.2okok.com/Article/Print.asp?ArticleID=39494


在控件中调用IsDialogMessage出错(VC/MFC ATL/ActiveX/COM)


我在控件中开启了一个无模式对话框作为控件的界面,我在控件的PreTranslateMessage函数中写了如下代码:
return pMainWnd->IsDialogMessage(pMsg) || COleControl::PreTranslateMessage(pMsg);

结果是,当在IE中打开控件后,最小化IE,再还原,此时随便按一下键盘上的某一个键,则程序进入死循环,
CPU占百分之百,经过我的调试,发现是IsDialogMessage函数出错,证据如下:
Beep(1500, 100);
Sleep(200);
BOOL re = pMainWnd->IsDialogMessage(pMsg);
MessageBeep(0);
Sleep(200);
if (!re)
re = COleControl::PreTranslateMessage(pMsg);

return re;
当Beep(1500, 100);和MessageBeep(0);不成对出现的时候,证明IsDialogMessage进入了死循环。
注:在一对话框上使用这个控件完全没有上面的问题。


http://www.mvps.org/vcfaq/mfc/18.htm
http://support.microsoft.com/kb/q168777/


对操纵输入法的词库熟悉的朋友请进来(VC/MFC 基础类)


想对Microsoft (Simplified)- pinyin IME 3.0输入法的词库进行操纵----增加词组,删除词组,备份,不知道如何去做,请大家给点思路,先谢过!

我查到几个用来实现功能的API,但没有例子,不会用啊,

分别是:ImmGetRegisterWordStyle
ImmRegisterWord
ImmUnregisterWord


用LoadLibrary加载IME文件(那实际上是DLL),之后调用ImmRegisterWord函数。
在我的计算机上的微软拼音输入法 2003(v6.0.0.2527)的文件名是IMSC40A.IME。和其他回调一样,写一个
UINT CALLBACK 函数名(
LPCTSTR lpszReading,
DWORD dwStyle,
LPCTSTR lpszString,
LPVOID lpData
);

这样的函数,然后把函数地址作为EnumRegisterWordProc的参数。


VC++ 中哪些类具有排序功能(VC/MFC 基础类 )


我看CArray 类没有排序函数...


How to use the quick-sort function to sort MFC CArray-derived classes on the MFC and Visual C++ run-time library
http://support.microsoft.com/kb/216858


可以让TWebBrowser只下载代码而不执行吗(Delphi 网络通信/分布式开发)


用WebBrowser.Navigate打开一个网页后可否只让其下载网页的代码,而不执行并显示出来啊,要保证能用(WebBrowser.Document as IHTMLDocument2)调用网页的元素。只是想要网页的源代码,网页的显示和执行都不要,当然,还有别的办法可以获得网页的源代码,但小弟做的这个动作非要用TWebBrower不可


只需要下载文件的话可以用URLDownloadToFile
只需要分析的话可以参考http://www.euromind.com/iedelphi/uilessparser.htm
也可以集成一个浏览器控件,在容器中处理DISPID_AMBIENT_DLCONTROL调用,返回DLCTL_DOWNLOADONLY标志,参考http://www.euromind.com/iedelphi/embeddedwb.htm。


VS2005中将自定义控件加入工具箱的问题(.NET技术 VB.NET )


按网上的资料在写了下列宏代码, 将一个自己写的控件加入工具箱:
---------------------------------------------------------------
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics

Public Module Module1

Public Sub main()

Dim toolbox As ToolBox = Application.DTE.Windows.Item(EnvDTE.Constants.vsWindowKindToolbox).Object

Dim tooltab As ToolBoxTab = toolbox.ToolBoxTabs.Add("My Controls")

DTE.ExecuteCommand("View.PropertiesWindow")
tooltab.Activate()
tooltab.ToolBoxItems.Item(1).Select()

tooltab.ToolBoxItems.Add("MyControl", "d:/Mycontrol.dll", vsToolBoxItemFormat.vsToolBoxItemFormatDotNETComponent)
End Sub
End Module
------------------------------------------------------------------------------

该代码在VS2003中能通过,并顺利将控件加入工具箱, 而在VS2005中只能建立新的Tab, 却不能加入控件, 但是如果先打开一下"Choose ToolBox Items"对话框, 然后关闭, 则上述代码能够通过.

曾试着在代码里添加:DTE.ExecuteCommand("Tools.AddRemoveToolboxItems") 来打开"Choose ToolBox Items"对话框, 但却不知如果将其自动关闭.


http://blogs.msdn.com/chetanc/archive/2005/10.aspx

参考http://www2.cnblogs.com/haozidong/default.html?page=2
 




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/techcrunch/article/details/2274263

智能推荐

台湾油研功率放大器AMN-D-20T_油研amnd20放大器中文说明书-程序员宅基地

文章浏览阅读424次。控制阀类型有先导溢流阀EDG,比例压力阀EBG,比例减压阀ERBG,10Ω系列比例流量阀EFCG,节能阀10Ω线圈EFBG,10Ω比例线圈用的小型功率放大器,供给电源DC24V.采用新回路方式,低发热功率放大器。_油研amnd20放大器中文说明书

里氏替换原则(Liskov Substitution Principle)_基类出现的地方 子类一定出现-程序员宅基地

文章浏览阅读723次。里氏替换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。简单明了的理解:所用引用基类的地方必须透明地使用其子类的对象。_基类出现的地方 子类一定出现

两个实用的C语言工具———编程学习必备篇_csdn-程序员宅基地

文章浏览阅读4.5k次,点赞17次,收藏8次。两个实用的C语言工具_csdn

Flask、Django、Tornado三大框架的对比_tornado flask di-程序员宅基地

文章浏览阅读3.9k次。前言之前面试的时候我提到过自己有Flask、Django、Tornado框架的使用经验,于是面试官很自然就问到了这三大框架的区别、各自的特点这样的问题。回答了几次总觉得自己回答得不是太好,有些点没有回答到,亦或是逻辑有点混乱,于是想要归纳总结一下。框架的特点FlaskFlask诞生于2010年,是Armin ronacher用Python语言基于Werkzeug工具箱编写的轻量级Web开发..._tornado flask di

简单实现接口自动化测试(基于python)_接口自动化测试怎么写-程序员宅基地

文章浏览阅读9.3k次,点赞21次,收藏192次。一、简介本文从一个简单的登录接口测试入手,一步步调整优化接口调用姿势,然后简单讨论了一下接口测试框架的要点,最后介绍了一下我们目前正在使用的接口测试框架pithy。期望读者可以通过本文对接口自动化测试有一个大致的了解。二、引言为什么要做接口自动化测试?在当前互联网产品迭代频繁的背景下,回归测试的时间越来越少,很难在每个迭代都对所有功能做完整回归。但接口自动化测试因其实现简单、维护成本低,容易提高覆盖率等特点,越来越受重视。为什么要自己写框架呢?使用requets + unitt_接口自动化测试怎么写

JavaScript大数运算】实现高精度计算的JavaScript算法_js 用什么类型运算大数据和精度要求高的数据-程序员宅基地

文章浏览阅读104次。总结起来,JavaScript中的大数运算是一个挑战,但通过使用字符串表示大数并手动实现算术运算,或者使用专门的JavaScript库,我们可以实现高精度的数值计算。这为处理更大范围的数值提供了可能,使我们能够在JavaScript中进行各种复杂的数值计算。无论是手动实现算法还是使用现有的库,都能帮助我们在JavaScript中实现高精度计算,处理更大范围的数值。在上述代码中,我们将大数表示为字符串,逐位相加,并处理进位。这样,我们可以避免JavaScript的数值限制,从而实现了高精度的加法运算。_js 用什么类型运算大数据和精度要求高的数据

随便推点

OpenGL纹理-12.5、纹理坐标-程序员宅基地

文章浏览阅读227次。12.5、纹理坐标12.5.1 坐标定义在绘制纹理映射场景时,不仅要给每个顶点定义几何坐标,而且也要定义纹理坐标。经过多种变换后,几何坐标决定顶点在屏幕上绘制的位置,而纹理坐标决定纹理图像中的哪一个纹素赋予该顶点。并且顶点之间的纹理坐标插值与基础篇中所讲的平滑着色插值方法相同。纹理图像是方形数组,纹理坐标通常可定义成一、二、三或四维形式,称为s,..._opengl 定义纹理坐标

如何设置代理ip服务器地址_代理服务器地址-程序员宅基地

文章浏览阅读711次。代理IP服务器具有很多优点和使用场景,在未来的发展中,随着网络技术的不断进步和应用场景的不断扩展,代理IP服务器将会发挥更加重要的作用。_代理服务器地址

用伪随机生成100个大写字母和100个个位数字_vb生成100个大写字母-程序员宅基地

文章浏览阅读294次。#include#include#includeusing namespace std;void RandomCharacter();void RandomFingure();int main(void){ RandomCharacter(); cout<<

Spring / Spring boot 异步任务编程 WebAsyncTask_spring boot webasynctask-程序员宅基地

文章浏览阅读372次。Spring / Spring boot 异步任务编程 WebAsyncTask今天一起学习下如何在Spring中进行异步编程。我们都知道,web服务器处理请求request的线程是从线程池中获取的,这也不难解释,因为当web请求并发数非常大时,如何一个请求进来就创建一条处理线程,由于创建线程和线程上下文切换的开销是比较大的,web服务器最终将面临崩溃。另外,web服务器创建的处理线程从头到尾默认是同步执行的,也就是说,假如处理线程A负责处理请求B,那么当B没有return之前,处理线程A是不可以脱身去_spring boot webasynctask

uni-app打包成Android Apk 过程详细_uniapp打包apk-程序员宅基地

文章浏览阅读6.5k次。重新运行npm run build:app-plus,生成新的app-plus内容,替换之前的www文件夹里的内容,并且打开里面的manifest.json 应该能看到id已经变成重新获取的appid了。在项目根目录新建一个文件夹,以 src/manifest.json 中的 appid 字段为文件名,然后在文件夹中创建一个 www 目录,将 app-plus 文件夹下的资源拷贝到 www 目录中。在assets右键新建一个文件夹apps,将 3.2 步骤的appid文件夹整个复制到 apps目录下。_uniapp打包apk

【中级软考】软件设计-考试介绍_软件设计师 以考代评 考完就是中级职称-程序员宅基地

文章浏览阅读457次。软件设计中级软考基本内容,通过一下几点进行介绍:1、软考好处2、软件设计证书模版3、流程4、考点分布5、考试形式_软件设计师 以考代评 考完就是中级职称

推荐文章

热门文章

相关标签