我现在遇到的问题是;做个dll工程 工程中有个对话框在放入activex控件后调这个dll显示对话框函数,但对话框显示不出来,去掉activex控件后对话框就显示出来了。
但做成exe放入activex控件也能显示,没有问题
还忘高手指点.
但做成exe放入activex控件也能显示,没有问题
还忘高手指点.
解决方案 »
- 求解啊……
- 用try catch 捕捉如“找不到指定路径或缺少组件”之类的系统提示,该怎么做?
- 如何实现将windows中任务栏里显示的其他程序给隐藏掉?
- 一个简单的问题:如何知道析构函数在哪一行被执行
- send执行时不必考虑Server是否在recv中?
- 用CAsyncSocket编程,怎样捕捉网络中消息呢?!比方说FD_READ FD_WRITE等等!还有可以在重载CAsyncSocket::OnReceive(int nErrorCode)的
- 请教各位大虾一个问题,rmvb格式的文件是用什么媒体播放器打开的?
- 为什么我MFC+SQLSERVER2008 的查询语句失败?
- 如何修复SQL数据库,数据库文件损坏!!!Help me!!
- 初学者的小小问题——回答的人可有20分哦!
- 那位高手能给详细PC机与PLC之间的通讯!!
- 小女子急盼高手相助定时器问题
我的油箱是[email protected]
在函数接口开始加入AFX_MANAGE_STATE(AfxGetStaticModuleState())
dll是基于mfc的 接口开始我也加入了AFX_MANAGE_STATE(AfxGetStaticModuleState()) 可还是不行啊。我想是不是需要加入AfxOleInit()才行,但不知怎么加入,除此之外还需要什么
为什么exe下就可以而dll下确不行?
各位大虾多多执教啊.
也可能是你少加入了某个库。
比如如果用RichEdit的话就得加载LoadLibrary( "riched32.dll" );
在窗口中insert activex control 我放了一个日历(calendar)控件 我该如何让它老人家显示出来 ,高手指点指点啊.
能不能写些代码指点指点,我比较菜。
其实我的问题是这样的:我做的是控制数码相机拍照。开发包(sdk)提供的是ocx,有vc和
vb的demo例子。但我用的是delphi。提供方说不支持delphi。我把ocx控件装到delphi里
简单修改修改倒是可以用了,但预览后的图像传不回来。vc里就那么几行代码就行,我在
delphi里写了好多都不行。
vc里是我是这样写的:
COleSafeArray buff;
CString strFile;
int PicSize;
LPVOID lpbuf; m_Rye.Preview(m_nCurrentCamera);
m_Rye.SetPropCurrentPicture(m_nCurrentCamera,0);
PicSize=m_Rye.GetPropPicSize(m_nCurrentCamera);
if (PicSize>0)
{
//保留到当前目录下
strFile="d:/Preview.jpg";
buff.CreateOneDim(VT_UI1,PicSize);
m_Rye.GetPreview(m_nCurrentCamera,PicSize,buff);
CFile file(strFile, CFile::modeCreate | CFile::modeReadWrite | CFile::typeBinary);
buff.AccessData(&lpbuf);
file.Write(lpbuf, PicSize);
buff.UnaccessData();
} 可改成delphi的方式传不回图像来。
delphi 里我是这样写的:
var
OleData:OleVariant;
PData:pointer;
oleArray:PSafeArray;
ArrayBounds :TSafeArrayBound;
begin Rye.Preview(nCurrentCamera);
Rye.propCurrentPicture[nCurrentCamera]:=0;
PicSize:=Rye.propPicSize[nCurrentCamera];
if PicSize>0 then
begin
ArrayBounds.lLbound:=0;
ArrayBounds.cElements:=PicSize;
VarBounds[0].ElementCount:=PicSize;
VarBounds[0].LowBound:=0;
oleArray:=SafeArrayCreate(VT_UI1,1,ArrayBounds)
TVariantArg(oleData).vt:=varByte or varArray;
TVariantArg(OleData).pArray:=oleArray Rye.GetPreview(nCurrentCamera,PicSize,OleData);
if VarIsArray(OleData) then
begin
if SafeArrayAccessData(TVariantArg(oleData).parray,PData)=s_ok then
begin
-------
end;
//---跟踪发现pdata^没有值.
end;
end;
哪位高手能不能看看我的将上面的vc改成delphi问题出在哪里了?
如果delphi里不行,我就只能将vc得做成dll但做成dll delphi调会出现我最前面的帖子
说的情况。加入activex控件的窗口无法显示。
高手、大虾、高人帮帮忙啊。
哎,高手到哪里去了啊,有谁有这方面的例子吗
传过去如何初始化啊,哎,我这个特笨的,能不能详细说说。
拜托了啊,最好能写点例子或函数之类的。
先谢谢了啊.
前面 elabs(洋洋) 提到的在你的应用程序的资源中也插入这么一个控件的方法就是让调用程序成为了包容器。