我很新的,涉及組件對象模型什麼的,我想知道,如果管理調用CoInitalize/CoUninitalize的這種方法是有道理的:這是管理COM初始化的好方法嗎?
COM.hpp:
#pragma once
namespace WindowsAPI { namespace ComponentObjectModel {
class COM
{
COM();
~COM();
public:
static void Setup();
};
}}
COM.cpp :
#include <Windows.h>
#include "COM.hpp"
namespace WindowsAPI { namespace ComponentObjectModel {
COM::COM()
{
if (CoInitializeEx(NULL, COINIT_APARTMENTTHREADED) != S_OK) throw std::runtime_error("Couldn't start COM!");
}
COM::~COM()
{
CoUninitialize();
}
void COM::Setup()
{
static COM instance;
}
}}
然後需要COM任何組件只是調用COM::Setup()
和它忘記。
這是否有意義或我打破了COM的任何「規則」?
不能使用它在一個DLL中。無法選擇MTA。組件不應該初始化公寓,線程應該。這絕對是一個破壞者。 – 2010-03-12 04:49:04
該代碼不在DLL中。我不明白爲什麼我需要一個MTA ...... – 2010-03-12 16:10:19