ホーム » 2013 (ページ 3)

年別アーカイブ: 2013

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930

カテゴリー

アーカイブ

ブログ統計情報

  • 99,426 アクセス


CPoint と CGPoint

以前作成した MemoryStatus クラスを利用して,Win , iOS で書いてみた.
MemoryStatus の配列として,MemoryStatusAry を作成.
また,float の配列をそれぞれの点配列に変換する ::GraphGetPoint を用意.


Win
  void CMemSSDView::OnPaint()
  {
    CPaintDC dc(this);
    CRect rect ;
    GetClientRect(rect) ;
    {
      std::vector<float> grphF = MemSA.GetGraph(MemoryStatusAry::WinPhysF) ;
      std::vector<float> grphT = MemSA.GetGraph(MemoryStatusAry::WinPhysT) ;
      std::vector<float> grphP = MemSA.GetGraph(MemoryStatusAry::WinPageF) ;
      std::vector<CPoint> pntsF = ::GraphGetPoint(grphF,rect) ;
      std::vector<CPoint> pntsT = ::GraphGetPoint(grphT,rect) ;
      std::vector<CPoint> pntsP = ::GraphGetPoint(grphP,rect) ;
      {
        CPen penGreen(PS_SOLID,1,RGB(0,192,0)) ;
        CPen* oldPen = dc.SelectObject(&penGreen) ;
        dc.Polyline(&pntsF[0],pntsF.size()) ;
        CPen penRed(PS_SOLID,1,RGB(192,0,0)) ;
        oldPen = dc.SelectObject(&penRed) ;
        dc.Polyline(&pntsT[0],pntsT.size()) ;
        CPen penBlue(PS_SOLID,1,RGB(0,0,192)) ;
        oldPen = dc.SelectObject(&penBlue) ;
        dc.Polyline(&pntsP[0],pntsP.size()) ;
        dc.SelectObject(oldPen) ;
        }
      }
    }


iOS
  - (void)drawRect:(CGRect)rect
  {
    _context = UIGraphicsGetCurrentContext() ;
    {
      std::vector<float> grphP = MemSA.GetGraph(MemoryStatusAry::MacPFree) ;
      std::vector<float> grphA = MemSA.GetGraph(MemoryStatusAry::MacInact) ;
      std::vector<float> grphW = MemSA.GetGraph(MemoryStatusAry::MacWired) ;
      std::vector<CGPoint> pntsP = ::GraphGetPoint(grphP,rect) ;
      std::vector<CGPoint> pntsA = ::GraphGetPoint(grphA,rect) ;
      std::vector<CGPoint> pntsW = ::GraphGetPoint(grphW,rect) ;
      {
        [self setColor_r:0 g:192 b:0] ;
        CGContextAddLines (_context,&pntsP[0],pntsP.size()) ;
        CGContextStrokePath (_context) ;
        [self setColor_r:0 g:0 b:192] ;
        CGContextAddLines (_context,&pntsA[0],pntsA.size()) ;
        CGContextStrokePath (_context) ;
        [self setColor_r:192 g:0 b:0] ;
        CGContextAddLines (_context,&pntsW[0],pntsW.size()) ;
        CGContextStrokePath (_context) ;
        }
      }
    }

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

UIView のサイズ

MFC の CWnd::GetClientRect にあたるもの?
  drawRect の引数の rect
  self.bounds , self.frame
画面の向きに対して自動的に反映させるには
  self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ;


MoveTo , LineTo
  CGContextMoveToPoint , CGContextAddLineToPoint
  CGPathMoveToPoint , CGPathAddLineToPoint
Polyline
  CGContextAddLines
  CGPathAddLines

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

ツールバーが印刷プレビューでうまくない

追加したツールバーでフローティング不可の時,印刷プレビューでの表示がうまくない.
印刷プレビュー ツールバー
CFrameWnd::OnSetPreviewMode を見ると,
  AFX_IDW_CONTROLBAR_FIRST ~ + 31 の範囲では ShowControlBar を呼出している.

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

MetaFile と MemoryDC

ODMMeta.cxx , ODrawDcM.hxx
    pDC->IntersectClipRect(imgRect) ;
    MetaFile mf ;
    mf.SetFileName(imgN) ;
  // mf.Draw(pDC,imgRect) ;
    {
      MemoryDC memDC ;
      CRect mRect(CPoint(0,0),imgRect.Size()) ;
      memDC.Init(CRect(mRect).Size()) ;
      {
        int colIndex = COLOR_3DFACE ;
        COLORREF clrC = ::GetSysColor(colIndex) ;
        CDC* mdc = memDC.GetMemoryDC() ;
        CRect clrR = mRect ;
        mdc->FillSolidRect(clrR,clrC) ;
        mf.Draw(mdc,mRect) ;
        }
      memDC.Draw(pDC,imgRect) ;
      memDC.Term() ;
      }

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

ZipFold と WinXP での zip

zae などの様に,zip 内のファイル名に 5c などの文字を含まない様にしている場合は OK .
つまり,zip のファイル名として 5c が含まれていても問題ない?
 → ZipFold が MBCS のためか? 単なるバグか?
     → CharFile.hxx GetFileAttribute の “\” 削除部分のバグ.


上は GetFileAttribute のバグが原因.
Shell を使用した zip クラスの動作では,5c が含まれていてもそれなりに動作する.
UNICODE 文字はうまくなさそう.


あるフォルダ以下の圧縮で,フォルダ名が 5c 文字で終わっている場合,
MFC 6 MBCS では,CFileFind::GetFilePath の影響を受ける.
::FolderF_EnumFiles 以下の部分で,新しく定義した iFileFind を使用する様に変更.


i_Tools

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

VC 7 で error C2664 std::vector

VC 6 では通っていたが,VC 7 でエラーとなってそのままだったコード.
std::vector <void*> voidPtrs(1024,NULL) ;


c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\vector(124) : error C2664:
‘std::vector >::_Construct_n’ : 2 番目の引数を ‘int’ から ‘void *const & ‘ に変換できません。
理由: ‘int’ から ‘void *const ‘ へは変換できません。
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\vector(109) :
コンパイルされたクラスのテンプレートのインスタンス化 ‘void std::vector<_Ty,_Ax>::_Construct(_Iter,int,std::_Int_iterator_tag)’ の参照を確認してください
with
[
_Ty=void *,
_Ax=std::allocator,
_Iter=int
]
c:\~\~.cpp(206) : コンパイルされたクラスのテンプレートのインスタンス化
‘std::vector<_Ty,_Ax>::vector(_Iter,int)’ の参照を確認してください
with
[
_Ty=void *,
_Ax=std::allocator,
_Iter=int
]


(void*) とすることで通るみたい.
std::vector <void*> voidPtrs(1024,(void*)NULL) ;

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

3D ビューア

対応形式は,3DS , OBJ , STL , DXF (3D FACE) , VRML 1 .
テスクチャは,BMP , TGA , 一部の JPG .
i3DV 2013.04
i3DV.2013.04.26.zip


2013/05/08
i3DV.2013.05.08.zip


2013/05/10
i3DV.2013.05.10.zip


i_Tools Vector

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

MDI のステータスバー

以下の情報と,The MFC Answer Book とで.
すべての MDI 子ウィンドウのステータス バーを作成する方法
How to Create a Status Bar in Every MDI Child Window
https://www.betaarchive.com/wiki/index.php?title=Microsoft_KB_Archive/121946
static UINT indicators[] = { ID_INDICATOR_MDI } ; として,ID をシンボルブラウザで追加.
ビルド,実行すると,CChildFrame::OnCreate のステータスバーの Create で失敗.
 String Table で定義されてないとダメな様で適当な文字列を追加.
 ビューで,OnUpdateIndicatorMDI を追加(表示されないメニューに ID を追加して ClassWizard で).
  pCmdUI->SetText(_T(“ステータスバーに表示する情報”)) ;
これで実行すると,追加した文字列の幅で表示された.
MDI StatusBar
CChildFrame::OnCreate の,
ステータスバーを生成した後,SetPaneInfo(0,ID,SBPS_STRETCH,0)
  これにより,ウィンドウ幅いっぱいに.
MDI StatusBar width
幅は広がったが表示される文字列は,128 文字まで?

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

MFC と STL – 2

Xml_E で,MFC を使用しない様に変更中.
XML のデータを用意して,以下の様に単純に 100 個の配列にコピーする時間を計測しようとした.
   ElapseTick et ;
   CArray xmlAry ;                   // std::vector xmlAry ;
   for (int index=0 ; index<100 ; index++) {
     xmlAry.Add(Xml_Data) ;           // xmlAry.push_back(Xml_Data) ;
     }
   CString etStr = ::ToString(et.GetElapse()/1000.0) ;
   m_CtrlResult.SetWindowText(etStr) ;
データによっては期待した結果(MFC 版と同等またはそれより高速)が出たが,
この SVG を使用してメモリが少ない環境では極端に遅くなってしまった.
そこで,それぞれのサイズを調べてみた.

VC 6 VC 7 VC 8 VC 9 VC 10 VC 8 Debug VC 9 Debug VC 10 Debug VC 8 x64 VC 9 x64 VC 10 x64 VC 9 x64 Debug VC10 x64 Debug Xcode 64 Debug
CString 4 4 4 4 4 4 4 4 8 8 8 8 8
CArray 20 20 20 20 20 20 20 20 40 40 40 40 40
tstring 16 28 28 28 28 32 32 32 40 40 40 48 48 8
vector 16 16 16 24 16 20 20 20 32 48 32 40 40 24
Xml_E 68 92 92 108 92 108 108 108 152 184 152 184 184 72

tstring は,std::string または std::wstring .
vector は, <int> のサイズ.sizeof (std::vector<bool>) は vector<int> などより大きくなることがあるみたい.
Xml_E の MFC 版のデータメンバは,
CString Name , CString Text , CArray<Xml_Attribute,Xml_Attribute> Attribute , CArray<Xml_E,Xml_E> Child .
STL 版は tstring と std::vector に置換えた.

MFC Xml_Attribute 12 4 + 4*2
MFC Xml_E 52 4 + 4*2 + 20*2
STL Xml_Attribute 36 4 + 16*2
STL Xml_E 68 4 + 16*2 + 16*2

2013/04/22
SVG の全要素数は 5,557 ,属性は 19,103 .MFC 版では 518,200 ,STL 版では 1,065,584 となる.
つまり 50 M ~ 100 M 位が一時的に必要となってしまっていた(200 個にした時もあり).


ループ部分を 2 重ループとして,内側を 10 で 10 個の配列が必要となる様に改良.
時間を計測すると環境にもよるがほぼ同等の結果が得られた,
T5400 では MFC 6 秒と STL 3 秒.

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

DImage の利用

Shell Extension を利用した画像表示.ダイアログにファイルをドロップすると表示する様に.
1. CStatic を用意.ピクチャコントロールを配置して ClassWizard で変数を追加.
2. DImageS の領域を確保.通常はヘッダに.
3. OnDropFiles で
    // CString dropFile = …. ;
    ImageS.SetFileName(dropFile) ;
    ImageS.Draw(&m_Image) ;
    {
      m_Image.ShowWindow(SW_HIDE) ;
      m_Image.ShowWindow(SW_SHOW) ;
      }
    // …
4. OnPaint で
    ImageS.Draw(&m_Image) ;
DImage サンプル
DImage では,ImageDMF が追加される.
DImage.zip

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

::SetCursor

使い方がわからなかったので,
最初,こんな感じにしたら,SetCursor 直後は変更されるが保持されない.
void CVEyeCSView::OnVEyeDrag()
{
  VEyeChgView::OnVEye() ;
  if (GetEyeChg().CanMouseEyeChange()) {
    ::SetCursor(m_DragEye) ;
    }
  else {
    ::SetCursor(NULL) ;
    }
  }
SetCursor 直後と言ってもデバッガでブレイクしている状態でないと確認はできない.
CWaitCursor と似た様な動作となる.


やりたかったのは,
BOOL CVEyeCSView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
  if (nHitTest == HTCLIENT) {
    if (GetEyeChg().CanMouseEyeChange()) {
      ::SetCursor(m_DragEye) ;
      return TRUE ;
      }
    }
  return VEyeChgView::OnSetCursor(pWnd, nHitTest, message);
  }
The MFC Anser Book より

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

vcompd.dll が見つからなかったため …

VC 8 で FBXtoPA を OpenMP に変更してビルド,実行すると
—————————
FBXtoPA.exe – コンポーネントが見つかりません
—————————
vcompd.dll が見つからなかったため、このアプリケーションを開始できませんでした。
アプリケーションをインストールし直すとこの問題は解決される場合があります。
—————————
OK
—————————
OpenMP debug error
検索すると,omp.h のインクルードがないための現象.
アプリケーションクラスのソースに,以下を追加して OK .
  #ifdef _OPENMP
  #include <omp.h>
  #endif

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

WinFile.exe Settings

HKEY_CURRENT_USER\Software\Microsoft\File Manager\Settings

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

MFC と STL

MFC STL
CString::Right など string::substr
LPCTSTR string::c_str
LPTSTR CString::GetBuffer()    -
CString::ReverseFind() string::rfind
   - string::find_last_not_of

Xcode で,#include “..\Test\Test.h” は通らない?
バックスラッシュではなく通常のスラッシュ ‘/’ とすれば OK (VC 6 でも通る).


2013/03/04
CString::GetBuffer() にあたる部分を,string::begin() とすると VC 6 では通る(たまたま通っているだけ).
  #ifdef _MBCS
  {
    // tstring tmpStr = str + _T(“”) ;
    // _tcsrev(tmpStr.begin()) ;
    std::vector tmpStr ;
    tmpStr.resize(str.length()+1) ;
    _tcscpy(&tmpStr[0],str.c_str()) ;
    _tcsrev(&tmpStr[0]) ;
    // ….
    }
  #endif
昨日立ち読みした方法に改良.確かこんなんだったと思う.

2013/03/07
VC 7 でコンパイルすると,
  c:\…\Test.cpp(45) : error C2664: ‘_tcsrev’ :
    1 番目の引数を ‘std::basic_string::iterator’ から ‘char *’ に変換できません。

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

SMT-i9100 で 3D データ表示

HD Model ViewerPro 版 を使用すれば,スクリーンショットにある様に 3D データが表示できる.
対応している形式のモデルとテクスチャを USB 経由などでコピーすると同様に表示できる事も確認した.
SMT-i9100 3D データ表示


このアプリを使用して,PC から Dropbox 経由でデバイスにダウンロードして表示する手順.
1. 対象のモデルとテクスチャを同じフォルダにまとめる.
2. zip など 1 つのファイルとなる様な形式に変換.
  これはデバイス上にダウンロードする手順を容易にするため.
3. Dropbox のフォルダに登録(コピー).
4. デバイスで,Dropbox のファイルをダウンロード.
5. zip を解凍.この時ダウンロードした所か,展開先フォルダを指定できるアプリが便利.
6. HD Model View を起動して,対象のファイルを開く.
SMT-i9100 3D データ表示 2

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

Dropbox と SMT-i9100

 Win XP  SMT-i9100    
Dropbox    ○       ○       
Googleドライブ    ○       ○       
SkyDrive    ×       ×       

Dropbox のファイルは /mnt/sdcard/Android/data/com.dropbox.android/files/scratch/ 以下に存在する.

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

Android 仮想マシン

触れば分かる!Androidアプリ開発超入門」を購入.
本にある通り VMware Player を利用した方がトラブルは少ないのかもしれないが,…
利用したのは android-x86-2.2-r2-sparta.iso


Virtual PC にインストール
「Instrallation – Install … to harddisk」を選択すると,その直後に停止している様で断念.
VirtualPC にインストール


今度は Virtual Box に
「タイプ」と「バージョン」はどうすべきかよくわからないが,「Other」と「Other/Unknown」に.
「メモリ」サイズは 512 MB に.
途中の「パーティションの作成」の画面が,老眼でよく見えないので.
Android VirtualBox
後は本の通りで.
Android


2013/02/03 追記
その後何度か利用して,時々(かなりの確率で?)ホストの Win 7 がブルースクリーンに.
VirtualBox Android BOD


ブルースクリーンになったことが影響していると思われるが,「イベントビューア」-「Windows ログ」-「システム」に
  ログの名前: System
  ソース: Ntfs
  日付: 2013/02/03 19:24:12
  イベント ID: 55
  タスクのカテゴリ: (2)
  レベル: エラー
  キーワード: クラシック
  ユーザー: N/A
  コンピューター: T54W7U64
  説明:ディスクのファイル システム構造は壊れていて使えません。
      chkdsk ユーティリティをボリューム \Device\HarddiskVolume2 で実行してください。
説明の通り,起動時の chkdsk で修復.


他にも,Virtual PC で起動しなくなったものがあり.
vsv を削除して対応.

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

Outlook でのメール受信が

Outlook 2010 でのメール受信ができなくなった.
以前ここにある様にアカウントの設定はしていたのに.
送信はできるが,受信ができない状態.
「送受信」でエラーにはなっていない.

他の環境の幾つかでの「受信」は特に問題ない.
  OE 6 , Vista での Windows メール , Mac の Mail など.

しばらく(1 日)わからなくて,ちょっと思い出したことが,…
以前にもこんなことがあった?
Outlook の再起動で正常な動作となった.

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

SMT-i9100 入手

SMT-i9100 が手に入った.
使用目的にもよるが,大きさはちょうどいい感じ.


2013/01/24 追記
幾つかの 3D データのビューアをインストールした.
PC から Google Play にアクセスして,探してインストールするのが簡単と思われる.
時間が経ったのでちょっと覚えてないが,Google アカウントの紐付けをデバイスと行う必要があった?


Google ドライブ上の 3D ファイルを表示する方法がわからない.
メール添付の 3D データも,開こうとするとアプリケーションエラーに.
AP を起動して,AP 付属のファイルや一部 AP で /sdcard/Download/ 以下のファイルは開ける.

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

VEyeChgV を改良

修正内容の一部はここ
この動作中の描画部分はどうしたものか?(遅くて使えない)
VOpGLView::Draw (OpGL* oGL,…) ,または,それの個別の実装の修正が必要.

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