小编AKN*_*AKN的帖子

COM DLL和ActiveX控件之间的区别

我知道几个相似之处..

  • 两者都不能自己执行.它需要一些程序来实例化它.

  • COM DLL和ActiveX控件是平台独立的.(是这样吗...?)

  • 双方需要支持该接口IUnknown,并公开三个方法QueryInterface,AddRefRelease.

  • 它还需要在使用之后注册,并在完成之后注册.

但他们有什么不同?有人可以列出来吗?

另外我的理解是ActiveX控件是OLE自定义控件(OCX).我听说过像ActiveX DLL这样的术语.它是ActiveX控件的另一种形式还是不同的东西?

com dll activex

14
推荐指数
1
解决办法
8897
查看次数

VC++ MFC会在不久的将来变得过时吗?

通常人们说MFC有点笨拙.它使得UI开发稍微难以维护,因为它有很多自动生成的代码.它具有良好的体系结构(doc/view),但不像Win32编程那样透明,以了解窗口程序如何在后台运行.因此,在这种情况下,扩展MFC编程的曝光或更好地切换到.NET是一件好事,因为可以更轻松地进行维护,从而实现更快的UI设计.

Is it good to continue as MFC developer or good to know .NET as well?

全球公司如何将MFC视为UI开发技术.他们是否愿意支持他们的开发人员继续使用MFC或寻求改变他们的开发技术.

.net windows mfc visual-c++

13
推荐指数
2
解决办法
5699
查看次数

COM msado15.dll程序已停止运行

我们一直在我们的程序中使用旧的msado15.dll.我们曾经导入它#import"msado15.dll".现在几天前我们升级到Windows 8.唉,我们的软件停止在没有安装Service Pack 1的Windows 7上运行.早些时候,当我们使用Windows 7时,我们已升级到Service Pack 1,同样的问题发生了,所以我们从所有机器上卸载了Windows 7的Service Pack 1,一切正常.

但是对于Windows 8,我认为他们已经改变了msado15.dll.我在网上进行了一些研究,他们说我们应该用msado60.tlb替换导入,但这对我们的编译破坏也没有用.

这就是我们过去在C++环境中引用的方式

import "c:\program Files\Common Files\system\ado\msado15.dll" rename_namespace("ADOCG") rename("EOF","EndofFile") 
Run Code Online (Sandbox Code Playgroud)

我把它改成了

import "c:\program Files\Common Files\system\ado\msado28.tlb" rename_namespace("ADOCG") rename("EOF","EndofFile")
Run Code Online (Sandbox Code Playgroud)

并尝试过

import "c:\program Files\Common Files\system\ado\msado60.tlb" rename_namespace("ADOCG") rename("EOF","EndofFile")
Run Code Online (Sandbox Code Playgroud)

正如Microsoft Link所建议的那样.但它仍然适用于没有安装Service Pack 1的XP机器和Windows 7机器.

任何人都可以建议我们可以遵循的正确步骤,以使我们的程序在没有Service Pack 1的Windows 7上运行,也可以在Windows 8上运行.

几天来一直坚持这个问题.帮助将不胜感激.

问候,Saurabh

c++ com ado windows-7 windows-8

11
推荐指数
1
解决办法
3881
查看次数

使用整数指针操作时如何确定整数数组的结尾?

这是代码:

int myInt[] ={ 1, 2, 3, 4, 5 };
int *myIntPtr = &myInt[0];
while( *myIntPtr != NULL )
{
    cout<<*myIntPtr<<endl;
    myIntPtr++;
}

Output: 12345....<junks>..........
Run Code Online (Sandbox Code Playgroud)

对于Character数组:(因为我们最后有一个NULL字符,迭代时没问题)

char myChar[] ={ 'A', 'B', 'C', 'D', 'E', '\0' };
char *myCharPtr = &myChar[0];
while( *myCharPtr != NULL )
{
    cout<<*myCharPtr<<endl;
    myCharPtr++;
}

Output: ABCDE
Run Code Online (Sandbox Code Playgroud)

我的问题是,因为我们说要添加NULL字符作为字符串的结尾,我们排除了这样的问题!如果是这样的话,规则是在整数数组的末尾添加0,我们可以避免这个问题.说啥?

c++ pointers

9
推荐指数
2
解决办法
4万
查看次数

每个进程是堆内存吗?(或)不同进程共享的公共内存位置?

每个进程都可以使用堆内存来存储和共享进程内的数据.每当我们在堆内存中占用一些空间时,我们就有编程规则,我们需要在作业完成后释放它,否则会导致内存泄漏.

int *pIntPtr = new int;
.
.
.
delete pIntPtr;
Run Code Online (Sandbox Code Playgroud)

我的问题:每个进程的堆内存是多少?

如是,

只有当进程处于运行状态时才可能发生内存泄漏.

如果不,

然后它意味着操作系统能够将数据保留在某个内存中.如果是这样,是否有办法通过另一个进程访问此内存.这也可能成为进程间通信的一种方式.

我想回答我的问题是肯定的.请提供宝贵的反馈意见.

c++ operating-system memory-leaks heap-memory shared-memory

9
推荐指数
1
解决办法
6977
查看次数

常规DLL使用:MFC共享与MFC静态链接

当我们使用Visual Studio(VC8或9)创建DLL时,我们得到一个选项作为创建常规DLL

 using MFC as shared DLL
Run Code Online (Sandbox Code Playgroud)

要么

 using MFC as static library
Run Code Online (Sandbox Code Playgroud)

他们有什么不同?哪一个是可取的?

dll mfc visual-studio visual-c++

5
推荐指数
2
解决办法
1万
查看次数

使用什么编程语言来实现谷歌算法?

  • 众所周知,谷歌拥有最佳的搜索和索引算法.
  • 也有很好的相关性.
  • 他们也可以更快地获得最新结果.

一切都很好.

他们使用了什么编程语言(c,c ++,java等)和数据库(oracle,MySQL等)来实现这一目标(因为他们必须快速有效地处理大量数据)?

虽然我不是在寻找他们深入的架构(如果违反了他们的公司政策),但对所有这些事情的概述可能会有用.

有人请你加入宝贵的建议和见解吗?

database programming-languages

4
推荐指数
2
解决办法
7321
查看次数

Windows SDK 里面有什么?

为了开发Windows程序,我们需要Windows SDK。据我所知,这个 SDK 有助于创建窗口和处理窗口事件等。我想它还使我们能够操作文件和注册表。(线程创建和处理的原因是同一个SDK吗?)

一切都好!

我想知道这个 SDK 包含哪些文件和库。当我安装操作系统或安装 Visual Studio 等编辑器时也会出现这种情况吗?有时我会单独看到 Windows SDK 的链接。它与我安装 Visual Studio 时得到的相同还是有更多内容。

windows sdk winapi

4
推荐指数
1
解决办法
1752
查看次数

成员函数如何以编程方式*知道调用它的"对象名称"?

假设我们有一个MyClass类和一个memberfunc().ObjA说,为这个MyClass创建了一个对象.

i.e MyClass ObjA;
Run Code Online (Sandbox Code Playgroud)

ObjA调用memberfunc().

我们可以以编程方式在memberfunc()中获得此名称'ObjA'吗?

注意:我知道如何使用RTTI(运行时类型识别)获取对象的类型,即"MyClass",下面的radman也解释了相同的内容.

编辑:

如果这在c ++中是不可能的,那么在任何其他编程语言中都可以吗?

EDIT2

对这个问题进行了一些修改,因为很少有人无法解释.

c++ oop programming-languages object

3
推荐指数
1
解决办法
954
查看次数

功能指针演示

检查以下代码

int add(int a, int b)
{
    return a + b;
}

void functionptrdemo()
{
    typedef int *(funcPtr) (int,int);
    funcPtr ptr;
    ptr = add; //IS THIS CORRECT?
    int p = (*ptr)(2,3);
    cout<<"Addition value is "<<p<<endl;
}
Run Code Online (Sandbox Code Playgroud)

在我尝试使用相同的函数签名为函数ptr分配函数的地方,它显示编译错误为错误C2659:'=':函数作为左操作数

c++ pointers function-pointers

2
推荐指数
1
解决办法
1266
查看次数

为什么有些 MFC 类不是从 CObject 派生的?

通常大多数 MFC(基于窗口的类)是从 CObject 派生的。CObject 有什么作用?为什么某些 MFC 类不需要从 CObject 派生?

mfc visual-c++

2
推荐指数
1
解决办法
3549
查看次数

我可以将对象分配给整数变量吗?

假设我有一个对象.我将它分配给一个整数.

MyClass obj1 = 100;//Not valid
Run Code Online (Sandbox Code Playgroud)

比方说,我有一个接受整数的参数化构造函数.

MyClass(int Num)
{
    // .. do whatever..
}

MyClass obj1 = 100;//Now, its valid
Run Code Online (Sandbox Code Playgroud)

同样在任何情况下,相反的情况是否有效?!

eg) int Number = obj1;//Is it VALID or can be made valid by some tweeks
Run Code Online (Sandbox Code Playgroud)

编辑:

我发现这可以使用转换函数. 转换函数通常称为"强制转换运算符",因为它们(以及构造函数)是使用强制转换时调用的函数.

转换函数使用以下语法:

operator convert-type-name()

例如,许多人在下面整整地解释了它

c++

1
推荐指数
1
解决办法
227
查看次数

复制构造函数演示(崩溃...)

这是程序......

class CopyCon
{
public:
char *name;

CopyCon()
{ 
    name = new char; 
}

CopyCon(const CopyCon &objCopyCon)
{
    name = new char;
    _tcscpy(name,objCopyCon.name);
}

~CopyCon()
{
    if( name != NULL )
    {
        delete name;
        name = NULL;
    }
}
};

int main()
{
    CopyCon objCopyCon1;
    objCopyCon1.name = "Hai";
    CopyCon objCopyCon2(objCopyCon1);
    objCopyCon1.name = "Hello";
    cout<<objCopyCon2.name<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

一旦代码执行完成,当析构函数调用时,它会在'delete'上崩溃说...

调试错误!

计划:......

HEAP CORRUPTION DETECTED:在正常块(#124)之后的0x00366990.CRT检测到应用程序在堆缓冲区结束后写入内存.

(按"重试"调试应用程序)

我们不必在析构函数中清除堆内存.这个程序有什么问题?请帮忙!复制构造函数按预期完美地工作.但还是......!?

c++ copy-constructor

0
推荐指数
1
解决办法
847
查看次数