小编Jac*_*ith的帖子

Bitshifting将整数乘以10

简单的问题,但我似乎无法弄清楚:

如果我有一个整数,比如12,我对它执行以下位操作:

int i = 12;
i = (i << 3) + (i << 1);

我最终以120(12*10)结束.这是任何数字的情况.

有人可以简洁地向我解释为什么这有效吗?(当涉及到变速时,我显然遗漏了一些相当简陋的东西).

谢谢

c++ bit-manipulation

12
推荐指数
3
解决办法
6048
查看次数

在Visual Studio 2015中使用命令行参数进行调试

我可能是盲人,但我不能为我的生活找到在Visual Studio 2015中设置命令行参数以进行调试的地方.

在VS 2013(以及我使用过的每个其他版本)中,您可以在项目属性页的"调试"部分中添加它们.有什么办法可以通过VS 2015中的IDE设置它们吗?

visual-studio visual-studio-2015

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

ATL COM类注册.rgs文件默认值

我正在创建一个COM服务器可执行文件,并遇到类注册问题.当我创建我的类对象时,自动生成的.rgs文件如下所示:

HKCR
{
    NoRemove CLSID
    {
        ForceRemove {4C6DAD45-64B4-4C55-81C6-4CE125226421} = s 'Test Class'
        {
            ForceRemove Programmable
            LocalServer32 = s '%MODULE%'
            {
                val ServerExecutable = s '%MODULE_RAW%'
            }
            TypeLib = s '{EAA173CA-BDBC-463A-8B7A-B010EFA467BC}'
            Version = s '1.0'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这为CLSID正确创建了注册表项.但是,当尝试从外部调用CoCreateInstance时,我遇到了挂起.

hr = CoCreateInstance( __uuidof(Test), NULL, CLSCTX_ALL, __uuidof(ITest), (void**)&pTest);
Run Code Online (Sandbox Code Playgroud)

在看了一些其他项目的例子之后,我注意到他们都有类型的注册表项:

HKEY_CLASSES_ROOT\<MODULE>.<CLASS>
HKEY_CLASSES_ROOT\<MODULE>.<CLASS>\CLSID
Run Code Online (Sandbox Code Playgroud)

我调查了这些类的.rgs文件,并注意到他们的.rgs文件中没有额外的条目.我把它们添加到我的,改为:

HKCR
{
    TestModule.Test = s 'Test Class'
    {
        CLSID = s '{4C6DAD45-64B4-4C55-81C6-4CE125226421}'
    }

    NoRemove CLSID
    {
        ForceRemove {4C6DAD45-64B4-4C55-81C6-4CE125226421} = s 'Test Class'
        {
            ForceRemove Programmable
            LocalServer32 = s '%MODULE%'
            { …
Run Code Online (Sandbox Code Playgroud)

c++ com registry atl visual-studio-2010

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

通过COM将自定义接口类型的SAFEARRAY返回到VB6

是否可以将已定义的接口对象数组从C++ COM函数(VC6)返回到VB6客户端?我已经浏览过网络,但却未能找到描述我需要做什么的任何事情.我已经看到很多传递BSTR和VARIANT类型,但我需要一些方法来实际让客户端利用我在数组中返回的接口类型.

我假设我需要做什么
- 使用SAFEARRAY
- 使用带有VT_UNKNOWN类型的SAFEARRAY,这反过来意味着我需要将对象作为IUnknown对象放入数组中.

从这里开始,我很难过.是否有可能在VB6中解释IUnknown类型,并以某种方式将其转换为我需要的类型?或者我是以完全错误的方式解决这个问题的......

澄清:
放置在集合中的接口用于模拟结构.我基本上需要传回一个结构数组.

c++ vb6 com visual-c++-6 safearray

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