re: C++成员函数指针的应用[未登录] sun 2014-07-28 16:31
最后的菜单控制,真心感觉用不到,直接通过pa对象调用strcpy,strcat不是更直接吗?
大神,我想做firefox plugin 加密,能不能给个demo看看【15527974275@163.com】,我都不知道
bool ScriptablePluginObject::HasMethod(NPIdentifier name) ,这个方法放在哪里? 我以前是搞object_c的,,这个完全不懂,研究半个月,卡在这个地方了,seek help!
@fffg你编程自己从0写起试试,你能写得出来吗,就不信了
re: TTS中文发音引擎下载[未登录] sun 2011-12-19 20:30
3q
我想还是比较有用的,举个例子,也是我做过的,创建一个singleton类,需要常链接到服务器,时序同步,在不同的线程间共享,非常的高效,尤其是在资源很缺乏的机器上,像iphone设备,碰到了就觉得需要了.......
其实平时很少用!
7uuj38us文件夹中没有这个文件夹Thinkpad slic2.1 182 Bytes
很牛,很佩服啊,虽然年纪比我小,但比我强多了,佩服佩服。
Microsoft Visual Studio 2010 beta 都出来啦!
hProcess[i] = piProcess[i].hProcess;
piProcess[i].hProcess状态改变,hProcess[i]状态也改变?
仍没弄明白
我也装了alienbrain 可是就在他提示我reboot后,我发现需要输入NXN server user的账号密码!机器的admin账号原来是没有设密码的,安装时也没有提示,如果你知道这个账号的密码,可以发给我吗?谢谢!!!
sunarise28@gmail.com
请帮我传一份,好吗?我也下不下来.
先谢谢!
liminghnau@sohu.com
re: 自己实现图形文本编辑器 sun 2006-12-11 17:34
要做一年多才能让自己满意.
练习的话不值得.干项目的话没收益.何苦呢!
re: 动态多态与静态多态 sun 2006-11-27 17:21
该用模板的VC已有,如Vector,list,link,array相近类型的都有,是你们自己不注意.真正编程那些已够了.其它用模板很多是得不偿失,这里有个平衡问题.
我们可作进一步讨论
sunbysj@sohu.com
re: DSOFramer 控件修改成功 sun 2006-11-22 22:09
感谢大师指点,但我对OLE一直不是很懂,还请大师耐心辅导:
还有几个问题一直很困惑。以下问题针对PPT文档。
(1)DsoFramer中采用了DsoDispatchInvoke全局方法完成打开文档操作,打开文档用了DSOF_DISPID_DOCOPEN参数(值为2,与PowerPoint对象模型中的Presentations接口的Open的dspID不同),实质上它调用了
m_dispEvents->Invoke(dspid, IID_NULL, LOCALE_USER_DEFAULT, (WORD)(DISPATCH_METHOD | wflags), &dspparm, pvtret, NULL, NULL);方法。从方法CDsoFramerControl::XConnectionPoint::Advise(IUnknown *pUnk, DWORD *pdwCookie)中可以看出m_dispEvents是Idispatch接口(因为IID_DISPATCH)。我感到不解的是m_dispEvents是什么接口? 它对应Application中的哪一级?
(2)从GetActiveDocument得到的对象接口是Powerpoint对象模型中的哪一级(是Application吗?)
(3)在我的应用中,我想取出打出PPT文件的每个Slide并进行设置,于是我对控件Open方法进行了修改。代码如下:
STDMETHODIMP CDsoFramerControl::Open(VARIANT Document, VARIANT ReadOnly, VARIANT ProgId, VARIANT WebUsername, VARIANT WebPassword)
{
。。。。。。。
SetCursor(hCur);
//以上是Open的原代码,为了简略省去,从SetCursor(hCur)这里加入了我的代码
VARIANT retValue;
VariantInit(&retValue);
retValue.vt = VT_DISPATCH;
//取出当前文档的Presentation接口
GUID IID_PRESENTATION = {0x9149349D, 0x5A91, 0x11CF, {0x87, 0x00, 0x00, 0xAA, 0x00, 0x60, 0x26, 0x3B}};
IDispatch* pActionDoc;
IDispatch* pPresentation;
get_ActiveDocument(&pActionDoc);
hr = pActionDoc->QueryInterface(IID_PRESENTATION, (void**)&pPresentation);
//省去了验证代码
//获得Slides接口
VariantClear(&retValue);
dspidPut = 0x000007db;
hr = pPresentation->Invoke(dspidPut, IID_NULL, LOCALE_USER_DEFAULT, (WORD)(DISPATCH_PROPERTYGET), &dspparm, &retValue, NULL, NULL);
if (!SUCCEEDED(hr))
{
MessageBox(m_hwnd, "Failed to get the Slides Property", "Slides", MB_OK);
}
LPDISPATCH pSlides = retValue.pdispVal;
//得到幻灯的总数
dspidPut = 0x0000000b;
hr = pSlides->Invoke(dspidPut, IID_NULL, LOCALE_USER_DEFAULT, (WORD)(DISPATCH_PROPERTYGET), &dspparm, &retValue, NULL, NULL);
dspparm.cArgs = 0;
dspparm.cNamedArgs = 0;
dspparm.rgdispidNamedArgs = NULL;
dspparm.rgvarg = NULL;
//对每一张幻灯完成一定设置
m_lSlideCount = retValue.lVal;
VariantClear(&retValue);
IDispatch* pSlide;
IDispatch* pSlideShowTransition;
m_lTotalTime = 0;
m_lCurrentSlide = 0;
CTimeList* pTail = NULL;
UINT ermsg;
EXCEPINFO excep;
for (int i=2; i<m_lSlideCount; i++)
{
//Get slide(i) from the SLides interface using Index method
VARIANT index;
VariantInit(&index);
index.vt = VT_INT;
index.intVal = i;
dspparm.cArgs = 1;
VARIANT rgargs[1];
rgargs[0].vt = VT_BYREF|VT_VARIANT;
rgargs[0].pvarVal = &index;
dspparm.rgvarg = rgargs;
//调用Item方法取出slide(i) 此处出错(错误码为DISP_E_EXCEPTION 80020009)
hr = pSlides->Invoke(0x00000000, IID_NULL, LOCALE_USER_DEFAULT, (WORD)(DISPATCH_METHOD), &dspparm, &retValue, &excep, &ermsg);
pSlide = retValue.pdispVal;
VariantClear(&retValue);
Return hr;
}
请问大师:我想用Slides.Item方法取出单个slide为什么为出错?如何取出单个Slide?
谢谢!
re: DSOFramer 控件修改成功 sun 2006-11-22 22:06
感谢大师指点,但我对OLE一直不是很懂,还请大师耐心辅导:
还有几个问题一直很困惑。以下问题针对PPT文档。
(1)DsoFramer中采用了DsoDispatchInvoke全局方法完成打开文档操作,打开文档用了DSOF_DISPID_DOCOPEN参数(值为2,与PowerPoint对象模型中的Presentations接口的Open的dspID不同),实质上它调用了
m_dispEvents->Invoke(dspid, IID_NULL, LOCALE_USER_DEFAULT, (WORD)(DISPATCH_METHOD | wflags), &dspparm, pvtret, NULL, NULL);方法。从方法CDsoFramerControl::XConnectionPoint::Advise(IUnknown *pUnk, DWORD *pdwCookie)中可以看出m_dispEvents是Idispatch接口(因为IID_DISPATCH)。我感到不解的是m_dispEvents是什么接口? 它对应Application中的哪一级?
(2)从GetActiveDocument得到的对象接口是Powerpoint对象模型中的哪一级(是Application吗?)
(3)在我的应用中,我想取出打出PPT文件的每个Slide并进行设置,于是我对控件Open方法进行了修改。代码如下:
STDMETHODIMP CDsoFramerControl::Open(VARIANT Document, VARIANT ReadOnly, VARIANT ProgId, VARIANT WebUsername, VARIANT WebPassword)
{
。。。。。。。
SetCursor(hCur);
//以上是Open的原代码,为了简略省去,从SetCursor(hCur)这里加入了我的代码
VARIANT retValue;
VariantInit(&retValue);
retValue.vt = VT_DISPATCH;
//取出当前文档的Presentation接口
GUID IID_PRESENTATION = {0x9149349D, 0x5A91, 0x11CF, {0x87, 0x00, 0x00, 0xAA, 0x00, 0x60, 0x26, 0x3B}};
IDispatch* pActionDoc;
IDispatch* pPresentation;
get_ActiveDocument(&pActionDoc);
hr = pActionDoc->QueryInterface(IID_PRESENTATION, (void**)&pPresentation);
//省去了验证代码
//获得Slides接口
VariantClear(&retValue);
dspidPut = 0x000007db;
hr = pPresentation->Invoke(dspidPut, IID_NULL, LOCALE_USER_DEFAULT, (WORD)(DISPATCH_PROPERTYGET), &dspparm, &retValue, NULL, NULL);
if (!SUCCEEDED(hr))
{
MessageBox(m_hwnd, "Failed to get the Slides Property", "Slides", MB_OK);
}
LPDISPATCH pSlides = retValue.pdispVal;
//得到幻灯的总数
dspidPut = 0x0000000b;
hr = pSlides->Invoke(dspidPut, IID_NULL, LOCALE_USER_DEFAULT, (WORD)(DISPATCH_PROPERTYGET), &dspparm, &retValue, NULL, NULL);
dspparm.cArgs = 0;
dspparm.cNamedArgs = 0;
dspparm.rgdispidNamedArgs = NULL;
dspparm.rgvarg = NULL;
//对每一张幻灯完成一定设置
m_lSlideCount = retValue.lVal;
VariantClear(&retValue);
IDispatch* pSlide;
IDispatch* pSlideShowTransition;
m_lTotalTime = 0;
m_lCurrentSlide = 0;
CTimeList* pTail = NULL;
UINT ermsg;
EXCEPINFO excep;
for (int i=2; i<m_lSlideCount; i++)
{
//Get slide(i) from the SLides interface using Index method
VARIANT index;
VariantInit(&index);
index.vt = VT_INT;
index.intVal = i;
dspparm.cArgs = 1;
VARIANT rgargs[1];
rgargs[0].vt = VT_BYREF|VT_VARIANT;
rgargs[0].pvarVal = &index;
dspparm.rgvarg = rgargs;
//调用Item方法取出slide(i) 此处出错(错误码为DISP_E_EXCEPTION 80020009)
hr = pSlides->Invoke(0x00000000, IID_NULL, LOCALE_USER_DEFAULT, (WORD)(DISPATCH_METHOD), &dspparm, &retValue, &excep, &ermsg);
pSlide = retValue.pdispVal;
VariantClear(&retValue);
Return hr;
}
re: DSOFramer 控件修改成功 sun 2006-11-22 21:57
还有一个问题一直很困惑。DsoFramer中采用了DsoDispatchInvoke全局方法完成打开文档操作,打开文档用了DSOF_DISPID_DOCOPEN参数(值为2),实质上它调用了
m_dispEvents->Invoke(dspid, IID_NULL, LOCALE_USER_DEFAULT, (WORD)(DISPATCH_METHOD | wflags), &dspparm, pvtret, NULL, NULL);方法。我感到不解的是m_dispEvents是什么接口。
从方法CDsoFramerControl::XConnectionPoint::Advise(IUnknown *pUnk, DWORD *pdwCookie)中可以看出m_dispEvents是Idispatch接口(因为IID_DISPATCH)。
在我的应用中,我想取出打出PPT文件的每个Slide并进行设置,于是我对控件Open方法进行了修改。代码如下:
STDMETHODIMP CDsoFramerControl::Open(VARIANT Document, VARIANT ReadOnly, VARIANT ProgId, VARIANT WebUsername, VARIANT WebPassword)
{
。。。。。。。
SetCursor(hCur);
//以上是Open的原代码,为了简略省去,从SetCursor(hCur)这里加入了我的代码
VARIANT retValue;
VariantInit(&retValue);
retValue.vt = VT_DISPATCH;
//取出当前文档的Presentation接口
GUID IID_PRESENTATION = {0x9149349D, 0x5A91, 0x11CF, {0x87, 0x00, 0x00, 0xAA, 0x00, 0x60, 0x26, 0x3B}};
IDispatch* pActionDoc;
IDispatch* pPresentation;
get_ActiveDocument(&pActionDoc);
hr = pActionDoc->QueryInterface(IID_PRESENTATION, (void**)&pPresentation);
//省去了验证代码
//获得Slides接口
VariantClear(&retValue);
dspidPut = 0x000007db;
hr = pPresentation->Invoke(dspidPut, IID_NULL, LOCALE_USER_DEFAULT, (WORD)(DISPATCH_PROPERTYGET), &dspparm, &retValue, NULL, NULL);
if (!SUCCEEDED(hr))
{
MessageBox(m_hwnd, "Failed to get the Slides Property", "Slides", MB_OK);
}
LPDISPATCH pSlides = retValue.pdispVal;
//得到幻灯的总数
dspidPut = 0x0000000b;
hr = pSlides->Invoke(dspidPut, IID_NULL, LOCALE_USER_DEFAULT, (WORD)(DISPATCH_PROPERTYGET), &dspparm, &retValue, NULL, NULL);
dspparm.cArgs = 0;
dspparm.cNamedArgs = 0;
dspparm.rgdispidNamedArgs = NULL;
dspparm.rgvarg = NULL;
//对每一张幻灯完成一定设置
m_lSlideCount = retValue.lVal;
VariantClear(&retValue);
IDispatch* pSlide;
IDispatch* pSlideShowTransition;
m_lTotalTime = 0;
m_lCurrentSlide = 0;
CTimeList* pTail = NULL;
UINT ermsg;
EXCEPINFO excep;
for (int i=2; i<m_lSlideCount; i++)
{
//Get slide(i) from the SLides interface using Index method
VARIANT index;
VariantInit(&index);
index.vt = VT_INT;
index.intVal = i;
dspparm.cArgs = 1;
VARIANT rgargs[1];
rgargs[0].vt = VT_BYREF|VT_VARIANT;
rgargs[0].pvarVal = &index;
dspparm.rgvarg = rgargs;
//调用Item方法取出slide(i) 此处出错(错误码为DISP_E_EXCEPTION 80020009)
hr = pSlides->Invoke(0x00000000, IID_NULL, LOCALE_USER_DEFAULT, (WORD)(DISPATCH_METHOD), &dspparm, &retValue, &excep, &ermsg);
pSlide = retValue.pdispVal;
VariantClear(&retValue);
Return hr;
}
re: DSOFramer 控件修改成功 sun 2006-11-10 22:33
我想控制ppt文件的放映,且放映必须在控件窗口内进行。我用的是VC,通过GetActiveDocument得到当前文档,调用DsoDispatchInvoke得到Presentation接口,并调用DsoDispatchInvoke得到Presentation.SlideShowSettings接口,调用SlideShowSettings.Run方法,可以完成放映,但放映不在控件窗口中进行,而是重新打开了一个放映窗口。请教大师:用什么方法可以在DsoFramer窗口中放映PPT文档
我的油箱地址:sangjinrui@163.com
re: DSOFramer 控件修改成功 sun 2006-11-10 22:30
我想控制ppt文件的放映,且放映必须在控件窗口内进行。我用的是VC,通过GetActiveDocument得到当前文档,调用DsoDispatchInvoke得到Presentation接口,并调用DsoDispatchInvoke得到Presentation.SlideShowSettings接口,调用SlideShowSettings.Run方法,可以完成放映,但放映不在控件窗口中进行,而是重新打开了一个放映窗口。请教大师:用什么方法可以在DsoFramer窗口中放映PPT文档