ホーム » 2012 » 1月

月別アーカイブ: 1月 2012

2012年1月
1234567
891011121314
15161718192021
22232425262728
293031  

カテゴリー

アーカイブ

ブログ統計情報

  • 79,632 アクセス



XML の書出しテスト – 3

msxml.dll を利用して,点線の line を 5 本出力.
空の xmlns 属性が出来てしまうため,そのままでは表示されない.

<?xml version="1.0" encoding="utf-8" ?>
<!--SVG 出力テスト-->
<svg width="50%" height="50%" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
    <g xmlns="" stroke="red" stroke-width="0.3" stroke-dasharray="3 3">
        <line x1="0" x2="0" y1="10" y2="90" />
        <line x1="10" x2="10" y1="10" y2="90" />
        <line x1="20" x2="20" y1="10" y2="90" />
        <line x1="30" x2="30" y1="10" y2="90" />
        <line x1="40" x2="40" y1="10" y2="90" />
        </g>
    </svg>

xmlns="" の部分を削除すると表示可能.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

XML の書出しテスト – 2

loadXML の部分を改良.

// pDoc->loadXML(_T(""< ?xml version=\"1.0\" encoding=\"utf-8\"?>"< r>"< /r>")) ;
// Source: dynamDOMsmart.cpp より
 MSXML::IXMLDOMProcessingInstructionPtr pi =
  pDoc->createProcessingInstruction(L"xml", L"version='1.0'  encoding='utf-8' ");
  pDoc->appendChild(pi);
// Create a comment for the document.
 MSXML::IXMLDOMCommentPtr pc =
  pDoc->createComment(L"sample xml file created using XML DOM object.");
  pDoc->appendChild(pc);
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

XML の書出しテスト

XML に書き出すコードをテスト (VC6 + MFC で動作するもの)
他の言語や VC 9 などの場合は How Do I Use DOM? にある.


pDoc.CreateInstance で,結果が
  0x800401f0 CoInitialize は呼び出されていません。

xml のファイルは出来るが,中身がなし.
  pDoc->loadXML(…) で,デバッグの出力に以下が 3 つ.
  例外処理 (初回) は T_xml_1.exe (KERNEL32.DLL) にあります: 0xE0000001: (名前がありません)。
  ここで手間取ったので,…
    loadXML で与える文字列が,XML の文字列として正しくなかったのが原因.



// 以下は,そのテストコード全体
// T_xml_1.cpp : コンソール アプリケーション用のエントリ ポイントの定義
// 
#include	"StdAfx.h"
#include	"T_xml_1.h"
#import	named_guids	
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

BOOL	TestXML	(void)
{
	HRESULT	hr = ::CoInitialize(NULL) ;
	if (FAILED(hr))			{	return	FALSE ;		}
	{
		MSXML::IXMLDOMDocumentPtr	pDoc = NULL ;
		hr = pDoc.CreateInstance(MSXML::CLSID_DOMDocument) ;
		if (FAILED(hr))		{	return	FALSE ;		}
		pDoc->loadXML(_T("<?xml version=\"1.0\" encoding=\"utf-8\"?> <r> </r> ")) ;
		CString	tmpPath ;
		{
			UINT	size = MAX_PATH ;
			::GetTempPath	(size,tmpPath.GetBuffer(size)) ;
			tmpPath.ReleaseBuffer() ;
			}
		CString	tmpXML = tmpPath + CTime::GetCurrentTime().Format(_T("%H%M%S.xml")) ;
		pDoc->save(LPCTSTR(tmpXML)) ;
		}
	::CoUninitialize() ;
	return	TRUE ;
	}

/////////////////////////////////////////////////////////////////////////////
// 唯一のアプリケーション オブジェクト
CWinApp theApp;

using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
	int nRetCode = 0;
	// MFC の初期化および初期化失敗時のエラーの出力
	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))	{
		// TODO: 必要に応じてエラー コードを変更してください。
		cerr << _T("Fatal Error: MFC initialization failed") << endl;
		nRetCode = 1;
	}
	else	{
		/*
		// TODO: この位置にアプリケーションの動作を記述してください。
		CString strHello;
		strHello.LoadString(IDS_HELLO);
		cout << (LPCTSTR)strHello << endl;
		*/
		TestXML() ;
	}
	return nRetCode;
}

https://mish.work/joomla/index.php/cpp/xml.html

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Windows Mobile 配置 0x8973190e

エミュレータや実機にコピーのタイミングで,以下のエラー

—— 配置開始: プロジェクト: Test, 構成: Debug Any CPU ——
次のエラーにより配置または登録に失敗しました: 0x8973190e. ファイル ‘%CSIDL_PROGRAM_FILES%\Test\Test.exe’ の書き込み中にエラーが発生しました。エラー 0x80070020: プロセスはファイルにアクセスできません。別のプロセスが使用中です。
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
========== 配置: 0 正常終了、1 失敗、0 スキップ ==========

それぞれのエクスプローラで,対象の exe を削除して対応.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

DocTh.exe 2011.01.18 0xc0000374

Win7 環境のイベントビューアを見ていたら,エラーがいっぱい.

障害が発生しているアプリケーション名: DocTh.exe、バージョン: 1.10.2012.120、タイム スタンプ: 0x4f16d6f9
障害が発生しているモジュール名: ntdll.dll、バージョン: 6.1.7601.17725、タイム スタンプ: 0x4ec49b8f
例外コード: 0xc0000374
障害オフセット: 0x000ce6c3
障害が発生しているプロセス ID: 0x21cc
障害が発生しているアプリケーションの開始時刻: 0x01ccd71a3cef9b75
障害が発生しているアプリケーション パス: C:\Users\Iwao\AppData\Local\Temp\…\Project\DocTh\Release.060\DocTh.exe
障害が発生しているモジュール パス: C:\Windows\SysWOW64\ntdll.dll
レポート ID: 8e3b520d-430d-11e1-8bec-00219b51e933


AP 終了時に発生しているが,Win7 環境では,特に何も表示されない.
単純に exe を起動して,何もせず終了してもエラーが記録される.
同じ操作を,開発環境の XP で実行してもエラーにはならない.
また,デバッグ版 exe も問題ない.
他にもいろいろやったが,省略.
WinXP で,ドキュメントをドロップして終了でエラーが発生.

結局,原因は VC 6 でのビルド時の依存関係と思われるが,リビルドで解決.


この exe ではあまり意味はないが,Profile::SetPathINI() を利用しているので,これが原因かと思った.
  BOOL Profile::SetPathINI (void)
  {
    CWinApp* app = AfxGetApp() ;
    if (app == NULL) { return FALSE ; }
    CString nowINI = app->m_pszProfileName ;
    if (nowINI.Find(_T(“\\”)) > 0) {
      nowINI = GetFileName(nowINI) ;
      }
    CString newINI = Profile::CheckAndChangeINI(nowINI) ;
    free((void*)app->m_pszProfileName) ;
    app->m_pszProfileName = _tcsdup(newINI) ;
    return TRUE ;
    }
CWinApp::m_pszProfileName


i_Tools

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

HBITMAP から画像サイズ取得

昨日,クリップボードからの取得で画像サイズを求める方法がわからなかった.

  HBITMAP	hbm = (HBITMAP)::GetClipboardData(CF_BITMAP) ;
  if (hbm != NULL) {
    CSize	bmpSize(10,10) ;
    {
      BITMAP		bm ;
      ::ZeroMemory(&bm,sizeof(BITMAP)) ;
      if (::GetObject(hbm, sizeof(BITMAP),&bm)!=0) {
        bmpSize.cx = bm.bmWidth ;
        bmpSize.cy = bm.bmHeight;
        }
      }
    ...
    }

CBitmap で保持している場合は,

  CBitmap	bitmap ;
  if (bitmap.LoadBitmap(bmp_ID)) {
    BITMAP	bm ;
    bitmap.GetBitmap(&bm) ;
    CRect		rect = CRect(0,0,bm.bmWidth,bm.bmHeight) ;
    ...
    }

HENHMETAFILE では,

  HENHMETAFILE	hemf = (HENHMETAFILE)::GetClipboardData(CF_ENHMETAFILE) ;
  if (hemf !=NULL) {
    ENHMETAHEADER	emh ;
    ZeroMemory(&emh,sizeof(ENHMETAHEADER)) ;
    emh.nSize = sizeof(ENHMETAHEADER) ;
    if (::GetEnhMetaFileHeader(hemf,sizeof(emh),&emh) != 0) {
      CRect	rectB ;
      rectB.top	= emh.rclBounds.top ;
      rectB.left	= emh.rclBounds.left ;
      rectB.right	= emh.rclBounds.right ;
      rectB.bottom= emh.rclBounds.bottom ;
      CRect	rectF ;
      rectF.top	= emh.rclFrame .top ;
      rectF.left	= emh.rclFrame .left ;
      rectF.right	= emh.rclFrame .right ;
      rectF.bottom= emh.rclFrame .bottom ;
      }
    }

HBITMAP から画像サイズの取得

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Clipboard Viewer

MSDN 2001.10 Creating a Clipboard Viewer Window
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN\2001OCT\1041\ipc.chm::/hh/winbase/clipbrd_19dj.htm

MSDN Using the Clipboard

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.