Iwao Dev

気付いたことをメモしています.

この画面は、簡易表示です

2012 / 5月

LOG_PBH::Term

「LOG_PBH::Term が呼ばれる前に Init が呼ばれた」
以下の様なコードで,PBH::SetDefaultPenBrush() が呼ばれていないと,デバッグウィンドウに表示される.
  {
    LOGPEN lp ;
    LOGBRUSH lb ;
    PBH::GetHatchPenBrush(pDC,GetPBH(), &lp,&lb) ;
    CPen pen ; pen.CreatePenIndirect(&lp) ;
    CPen* oldPen = pDC->SelectObject(&pen) ;
    CBrush brush ; brush.CreateBrushIndirect(&lb) ;
    CBrush* oldBrush = pDC->SelectObject(&brush) ;
    Parts::Draw(pDC,prj,scale) ;
    pDC->SelectObject(oldPen) ;
    pDC->SelectObject(oldBrush) ;
    PBH::SetDefaultPenBrush() ;
    }



  にほんブログ村 IT技術ブログへ


PAtoMHD.AsPln2D を …

PAtoMHD.AsPln2D を IIS のコンポーネントとして登録.
DrawVer.asp
  <%@ Language=VBScript %>
  <% Option Explicit %>
  <HTML>
  <BODY>
  <%
  dim oToPA
  set oToPA = Server.CreateObject(“PAtoMHD.AsPln2D”)
  Response.Write oToPA.GetVersion
  set oToPA = Nothing
  %>
  </BODY>
  </HTML>


実行すると,
エラー タイプ
Server オブジェクト, ASP 0178 (0x80070005)
許可を確認中に Server.CreateObject の呼び出しに失敗しました。このオブジェクトへのアクセスは拒否されます。
/Test/DrawVer.asp, line 7

「コンポーネント サービス」-「DCOM の構成」で「セキュリティ」タブ内の設定.

IIS を再起動する


以下の様にしていると
  set oMICS = Server.CreateObject(“AsMicsS.Application”)
  set oToPA = Server.CreateObject(“PAtoMHD.AsPln2D”)
PAtoMHD.exe は IUSR_DEVXP となるが,AsMicsS.exe は SYSTEM でリフレッシュ毎に起動されてしまっている.

どうも,PAtoMHD.Application などの場合に複数起動されているみたい.
IUSR_~ と SYSTEM の違いはよくわからない.



  にほんブログ村 IT技術ブログへ


VC 6 MFC でオートメーション利用

「Class Wizard」-「クラスの追加」-「タイプライブラリから」

InitInstance 内の追加のコード
  #ifdef _AFXDLL
    Enable3dControls();
  #else
    Enable3dControlsStatic();
  #endif

  {  // 利用をこのブロックにまとめてます
    AfxOleInit() ;
    IAsPln2D to2D ;
    if (!to2D.CreateDispatch(_T(“PAtoMHD.AsPln2D”))) {
      return FALSE ;
      }
    CString selFile = to2D.BrowseFile(_T(“.\\*.mhd”),_T(“mhd を選択してください”)) ;
    if (!selFile.IsEmpty()) {
      if (to2D.Load(selFile)) {
        to2D.Save(selFile+_T(“.svg”)) ;
        }
      }
    return FALSE ;
    }
  CTestDlg dlg;
  …


#import を利用する方法
  アプリケーションクラスのソースに
    #import “C:\…\SVG\PAtoMHD\Release\PAtoMHD.tlb”
  InitInstance に
  {
    AfxOleInit() ;
    PAtoMHD::IAsPln2DPtr to2D ;
    if (to2D.CreateInstance(__uuidof(PAtoMHD::AsPln2D)) != S_OK) {
      return FALSE ;
      }
    CString selFile = LPCTSTR(to2D->BrowseFile(_T(“.\\*.mhd”),_T(“mhd を…”))) ;
    if (!selFile.IsEmpty()) {
      if (to2D->Load(LPCTSTR(selFile))) {
        to2D->Save(LPCTSTR(selFile+_T(“.svg”))) ;
        }
      }
    return FALSE ;
    }
CreateInstance の時の PAtoMHD::AsPln2D がわからなかった.
PAtoMHD::IAsPln2D としてしまっていた.


Dr. GUI、コンポーネント、COM、および ATL を使う



  にほんブログ村 IT技術ブログへ



    top

    %d人のブロガーが「いいね」をつけました。