942 :
デフォルトの名無しさん:05/03/18 00:38:15
>941
>GetModulePathだったかなんとか
ありがとさんです。
出来ればVB.NETで使える方法を教えてちょうだい。
よく考えたらXPでなくてもDllGetClassObjectを直接呼べば、
同じことが出来るんだけどね・・・
>>943 DllGetClassObjectでは、ThreadingModelを意識した処理ができないのではないでしょうか。
「キムにはやられた」(木村祐一)
「コムにはやられた」(山崎邦正)
946 :
デフォルトの名無しさん:2005/03/25(金) 09:17:37
ばーかあああああああああああああああああああああああああああああああああああああああああああああああああ
次スレのタイトルはどうする?
COMスレは三つ目なんだけど。
「3COM」でよろ
949 :
デフォルトの名無しさん:2005/03/26(土) 12:00:09
COMについての質問はこのスレでいいのでしょうか。
勉強中なのですが、インターフェースについての理解で分からない部分が
あるので教えてください。
たとえばエディットボックスにオートコンプリート機能を追加するとして、IEnumStringを
継承したクラスとIAutoCompleteを用いて
CEnumString *pEnumStr = NULL;
IAutoComplete *pAutoComp;
CoCreateInstance(CLSID_AutoComplete, NULL, CLSCTX_INPROC_SERVER, IID_IAutoComplete, (void**)&pAutoComp);
pAutoComp->Init(GetDlgItem(hWnd, IDC_EDIT1), pEnumStr, NULL, NULL);
のようにした場合、エディットボックスに対してpEnumStrとのインターフェースを
指定し終わったpAutoCompはすぐに解放してしまってもよいのでしょうか?
950 :
949:2005/03/26(土) 12:16:22
最終的にやりたいことは、動的に生成されるエディットコントロールに対して
オートコンプリートを実装したいのですが、IAutoCompleteやCEnumStringを
どのように管理すればよいのかで悩んでいます。
boost::xpcom
これで世界は変わる
だれか作って
次スレは
「サングラスをかけてて、中肉中背の30代の男にやられた」
でお願いします。
954 :
デフォルトの名無しさん:2005/04/03(日) 21:53:59
COMインターフェイスは仮想継承にしてもいい?
IUnknownを継承してAddRef/Releaseだけを実装したクラス、ReferenceCountを作った。
そして自作のインターフェイスIFooを継承して実装するクラスHogeがある。
これは当然ReferenceCountも継承したい。当然仮想継承にしないとまずい。
ReferenceCountは外には見せないので仮想継承にでも何でも出来るが、IFooの方は仮想継承にしたらまずいような気がするんだ。
心配だから結局ReferenceCountはIUnknownを継承せず、HogeがReferenceCountをメンバとして持つように修正した。
そしてマクロでHogeのAddRef/ReleaseがReferenceCountのAddRef/Releaseを呼ぶようにしている。
だけどやっぱり不恰好な感が否めない。
クラス構成が間違ってるだろそれ
HogeとIFooの間にReferenceCountを挟め。
957 :
954:2005/04/04(月) 10:47:29
>>956 さらにIFooとは継承関係のないIBarとそれを実装するHageも存在しHageにもReferenceCountが欲しいんですよ。
じゃあ、HageとIBarの間にもRefernceCountを挟めばいいだろう。
テンプレートを舐めるな。
テンプレート
いつもSTLとBoostは欠かさずに使っているのに忘れていた……。 ○| ̄|_
template<typename T>
class ReferenceCount : public T { /* * */ };
class Hoge : public ReferenceCount<IFoo> { /* * */ };
こうですよね。
961 :
デフォルトの名無しさん:2005/04/07(木) 00:39:37
やられた...
VariantInit()やっていないVARIANTオブジェクトにVariantClear()やっていた。
どおりでわけわかんない挙動になるわけだ……。
962 :
デフォルトの名無しさん:2005/04/10(日) 14:36:27
今ファイラー作ってるんですが右クリックを押したままドロップすると
表示されるコンテキストメニューはどうやったら表示できるんですか
>>962 win32apiスレできいたほうがいいかも
最近PCがメモリのエラーを起こすCOM何なんだ
ゴルァ
966 :
デフォルトの名無しさん:2005/04/25(月) 19:18:22
ここで聞くのが適当かわかりませんが、コンテキストメニューに登録して
実行するツールを右クリックから実行すると、その処理が終わるまで
呼び出し元(右クリックしたフォルダ)が復帰しない(固まった状態になる)
のですが、これを解消させる(非同期で処理させる)にはどうすれば
いいのか教えてください。
967 :
デフォルトの名無しさん:2005/04/26(火) 06:39:39
command.com?
インターフェースについて、そもそもそれが何なのかというレベルから解説している
良質のサイトってどんな所がありますか
972 :
デフォルトの名無しさん:2005/06/09(木) 22:30:28
次スレがなさそうなのでage
DCOMがむかつくので、無効化しています。DCOMで開発している方々、いい加減にしてください。
974 :
デフォルトの名無しさん:2005/06/11(土) 00:39:36
VC++からタイプライブラリでexcelを操作したい場合の
質問スレはどこいけばよい?
976 :
974:2005/06/11(土) 14:45:28
>975
ありがとう
VC++ タイプライブラリ excel操作の結合されたセルの値の取得についてなんだけど
例えば A1 に "test"という文字を入力してA2とA3と結合してあるExcelがある。
これに対してA1(1,1)を取得するようにすれば"test"という文字の取得できるんだけど、A2(1,2)とかA3(1,3)だと値は空白になっていて
"test"という文字が取得できない。これってなんか取得する方法、又は取得しようとしているセルが
どこかのセルと結合されているというプロパティみたいのないでしょうか?
下はサンプルコードです。どなたか知ってる方お願いします。
別の方法でもいいです。
_ApplicationobjExcel;
_WorksheetoneSheet;
RangepXlsRange;
LPDISPATCHpCells;
COleVariant x,y,ItemId;
CString CellName;
/* 〜中略〜 */
pCells = oneSheet.GetCells();
pXlsRange.AttachDispatch(pCells,TRUE);
y = (short)1; x = (short)1;
/* セル値取得 */
ItemId = pXlsRange.GetItem(y,x);
objExcel.AttachDispatch(ItemId.pdispVal,TRUE);
CellName = objExcel.GetValue();
977 :
デフォルトの名無しさん:2005/06/12(日) 00:48:02
>>976 Range::GetMergeArea()
978 :
974:2005/06/12(日) 14:47:44
>977
ありがとうございます。
Range::GetMergeArea()ってLPDISPATCHで戻ってきて・・・
それから・・・・
・・ごめんなさい。続きを教えてください。
979 :
デフォルトの名無しさん:2005/06/12(日) 17:19:12
>>978 結合されたセルのRangeオブジェクトが帰ってくるから。
あとはRange::GetCount()なり、Range::GetItem()でやりたいことはできると思うけど。
980 :
974:2005/06/13(月) 23:22:44
ありがとうございました!
なんとかできました!!
981 :
デフォルトの名無しさん:2005/06/16(木) 01:57:28
構造体みたいなCOMオブジェクトをつくりました。
これをリモート呼び出しで受け渡ししたいのですが
参照ではなくコピーを渡したい。
どうすればよろしいか?
値渡しマーシャリングというものを見つけた。
面倒だなあ。
自分でマーシャンリングしないとなると、
・構造体をADOのRecordsetで代用する(確かMBVに対応してるはず)
・XMLで代用する
とか。
渡すときにコピー作ればいいだけじゃなくて?
985 :
デフォルトの名無しさん:2005/06/17(金) 00:58:39
線路は続くよどこまでも
987 :
デフォルトの名無しさん:2005/06/17(金) 09:59:29
いまさらCOMしてどうなる?
COMatta
WindowsはCOMで出来ている
MozillaもXPCOMで出来ている
世界はCOMで出来ている
991 :
981:
>>989 おっしゃる通りです。
しかしマーシャリングうまくいかん。リモート側でNULLになっとる。
MarshalはコールされるがUnmarshalがコールされない。
>>983 もっともな意見ですが
構造体COMにIPersistStream実装して
byte* buf;
構造体COM->save(buf)
サーバ->setX(buf, buflength)
バイトの塊でわたすという無茶苦茶なインターフェイスでいくことにしました。