摘要: #include <iostream>using namespace std;class ProtoType{public: ProtoType(){} virtual ~ProtoType(){} virtual ProtoType* Clone() = 0;};class ConcreteClass1 : public ProtoType{public: int field1; int field2;public: ConcreteClass1() : field1(0) , field2(0) { ... 阅读全文
posted @ 2013-03-19 10:03 特洛伊人 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 1 // curl_test.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 6 #include <iostream> 7 #include <libcurl/include/curl/curl.h> 8 #pragma comment(lib, "d:/libs/libcurl/libcurl.lib") 9 10 using namespace std;11 12 /**13 * 一旦curl接收到数据,就会调用此回调函数14 * buffer:数据缓冲区指针15 * 阅读全文
posted @ 2013-03-15 15:41 特洛伊人 阅读(4768) 评论(0) 推荐(0) 编辑
摘要: 当使用#import导入MSXML的COM库时,出现以下编译错误:error C2011: “IXMLDOMImplementation”:“struct”类型重定义在微软官方找到一篇文档:http://support.microsoft.com/kb/269194/en-us文章解释说只要将no_namespace去掉就可以了于是改成:#import "progid:MSXML2"using namespace MSXML2;结果一切正常。 阅读全文
posted @ 2012-11-27 15:42 特洛伊人 阅读(1086) 评论(0) 推荐(0) 编辑
摘要: 1.添加自绘控件类,使其派生自COwnerDraw,例如class MyButtonEx:public CWindowImpl<MyButtonEx, CButton> ,public COwnerDraw<MyButtonEx>2.在自绘控件类中添加消息映射CHAIN_MSG_MAP_ALT,例如:CHAIN_MSG_MAP_ALT(COwnerDraw<MyButtonEx>, 1)3.END_MSG_MAP之前要添加DEFAULT_REFLECTION_HANDLER()4.重写void DrawItem(LPDRAWITEMSTRUCT lpds)等 阅读全文
posted @ 2012-11-08 23:40 特洛伊人 阅读(2196) 评论(0) 推荐(0) 编辑
摘要: 本文演示了使用COM组件调用网页javascript的两种方法,第一种方法无法获取javascript的返回值,方法比较简单;第二种方法需要MSHTML库的支持,可以获取Javascript的返回值。假设javascript代码如下:function add(str){ var o; o = $("test"); o.innerHTML += "<span>" + str + "</span>" return "helloworld!";}第一种方法的原理是采用IHTMLWindow2接口的 阅读全文
posted @ 2012-10-10 11:20 特洛伊人 阅读(3040) 评论(0) 推荐(0) 编辑
摘要: 在VB中,COM组件如果调用失败,Runtime会直接提示错误的信息。在VC++中,COM组件的返回值是HRESULT,通过SUCCEEDED和FAILED宏来判断COM组件是否调用成功。如果想要获取COM组件调用失败的具体信息,可以这样做:(首先应该包括头文件comdef.h)hr = pWindow->execScript(L"add('test');", L"Javascript", &ret); if (FAILED(hr)) { CComBSTR bstrErrorInfo; IErrorInfoPtr errPt 阅读全文
posted @ 2012-10-10 10:21 特洛伊人 阅读(962) 评论(0) 推荐(0) 编辑
摘要: ; Assemble options needed: none .model large .datajumptable DD routine1 DD routine2 .codestart: MOV ax, @data MOV ds, ax CALL DWORD PTR jumptable JMP DWORD PTR jumptable+4 RETcseg SEGMENT word... 阅读全文
posted @ 2012-10-09 10:00 特洛伊人 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 关于这个API,MSDN讲得实在有点晦涩,这里总结一下。假设要更改以下菜单的Disable Sampling项文本为EnableSampling首先应该获取submenu父菜单的句柄,假设submenu的资源ID号为IDR_MENU2,使用以下代码:1 hMenu = LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_MENU2));2 hMenu = GetSubMenu(hMenu, 0);然后,因为submenu父菜单的起始索引为0,所以Disable Sampling的索引为5,因为根据索引(编号)来修改菜单,所以M... 阅读全文
posted @ 2012-10-08 10:11 特洛伊人 阅读(6149) 评论(0) 推荐(0) 编辑
摘要: 算法:中缀表达式转后缀表达式的方法:1.遇到操作数:直接输出(添加到后缀表达式中)2.栈为空时,遇到运算符,直接入栈3.遇到左括号:将其入栈4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈6.最终将栈中的元素依次出栈,输出。例如a+b*c+(d*e+f)*g ----> abc*+de*f+g*+遇到a:直接输出: 后缀表达式:a 堆栈:空遇到+:堆栈:空,所以+入栈 后缀表达式:a 堆栈:+遇到b: 直接输出 后缀表达式:ab 堆栈:+遇到*:堆栈非空,但 阅读全文
posted @ 2012-10-06 21:42 特洛伊人 阅读(47226) 评论(7) 推荐(2) 编辑
摘要: 1 #include "../Simple2/Simple2_i.h" 2 #include "../Simple2/Simple2_i.c" 3 4 int _tmain(int argc, _TCHAR* argv[]) 5 { 6 CoInitialize(NULL); 7 8 IUnknown *pUnk; 9 IFunc *pFunc;10 HRESULT hr;11 12 try13 {14 //============================================15 // g... 阅读全文
posted @ 2012-09-29 00:21 特洛伊人 阅读(387) 评论(0) 推荐(0) 编辑