Iwao Dev

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

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

2012 / 4月

ipx , PartsA , PartsA_C3D

2012/04/25 以前の PartsA などの ipx の読込みは,CArchive::ReadString を利用していた.
今回,Parts ファミリのファイルアクセスは,LoadText ,SaveText に置き換える.


ReadString を利用していた時の動作
  PartsA_C3D::ImportTxt より PartsA::SerializeTxt が呼ばれる.
   PACnv3.exe!PartsA::SerializeTxt(CArchive & ar={…}) 行 464
   PACnv3.exe!PartsA::Serialize(CArchive & ar={…}) 行 361
   PACnv3.exe!PartsA_C3D::ImportTxt(… * pathName) 行 336
   PACnv3.exe!PartsA_C3D::Import(… * pathName) 行 137
   PACnv3.exe!CPACnv3Doc::OnOpenDocument(… * lpszPathName) 行 177
  PartsA_C3D::ImportTxt で,exe と ipx の種類により,ReadString で読める形式でコピーする.
   FileMBWC.hxx GetReadTextName により,
    UNICODE.exe の場合,UTF-16 のテキストファイルにコピーする.
  PartsA::Serialize を呼出す前には,BOM を読み飛ばした位置にポインタがある.
   FileMBWC.hxx SerializeTextBOM(ar) により,UNICODE.exe の場合に飛ばす.
  * PartsA_C3D を利用してない exe では,形式が異なるファイルは読み出せなかった.
    VxxxxV などの exe は,PartsA::Serialize としているのでこれにあたる.


ReadString を利用しない様にしたので,PartsA_C3D::ImportTxt は,シンプルになった.
  BOOL PartsA_C3D::ImportTxt (LPCTSTR pathName)
  {
    if (!PartsA::IsTextFile(pathName)) { return FALSE ; }
    CString str ;
    if (!::LoadText(pathName,str))   { return FALSE ; }
    return PartsA::ImportTxt(str) ;
    }


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


HTML の表示

SVG をダイアログ上に表示したくなったので,CHtmlView などを利用してみた.
Spy++ で見ると,クラス名が “Internet Explorer_Server” となる.
HtmlView.zip


SDI で CHtmlView を利用
1. AppWizard のステップ 6 で,CHtmlView を選択する.

2. ビューのソースの CXxxxView::OnInitialUpdate() を,適当なアドレスに修正する.
  Navigate2(_T(“https://mish.myds.me/wordpress/dev/“),NULL,NULL);


ダイアログで,WebBrowser Control を利用
1. プロジェクトにコンポーネントを追加する.

2. 追加したコントロールの変数を割り当てる(ここでは,m_WebBrowse とした).
3. OnInitDialog などで
 m_WebBrowse.Navigate(_T(“https://mish.myds.me/wordpress/dev/“),NULL,NULL,NULL,NULL) ;


ダイアログで,CHtmlView を利用
1. CHtmlView* の変数を定義する(ここでは,WebView とした).
2. OnInitDialog で
  CRect rect ;
  GetClientRect(&rect) ;
  rect.top = 25 ;
  CRuntimeClass* pClass= RUNTIME_CLASS(CHtmlView) ;
  WebView = (CHtmlView*)(pClass->CreateObject()) ;
  WebView->Create(NULL,NULL,WS_VISIBLE|WS_CHILD,rect,this,0,NULL) ;
  WebView->SendMessage(WM_INITIALUPDATE) ;
  WebView->Navigate(_T(“https://mish.myds.me/wordpress/dev/“)) ;


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


コード分析による修正

VC 9
~\CharFnc.hxx(155) : warning C6284: オブジェクトがパラメータ ‘3‘ として渡されました。
~\CharFnc.hxx(155) : warning C6284: オブジェクトがパラメータ ‘5‘ として渡されました。
  str.Format(_T(“(%*s,%*s)”),width,      ToString(value.x),width,       ToString(value.y)) ;
  str.Format(_T(“(%*s,%*s)”),width,LPCTSTR(ToString(value.x)),width,LPCTSTR(ToString(value.y))) ;
  間違って LPCSTR としてしまうと,_UNICODE では
    error C2440: ” : ‘CString’ から ‘LPCSTR’ に変換できません。
  LPSTR としてしまうと,
    error C2440: ” : ‘CString’ から ‘LPSTR’ に変換できません。


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

  • Categories:


    top

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