ホーム » 2014

年別アーカイブ: 2014

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930

カテゴリー

アーカイブ

ブログ統計情報

  • 99,344 アクセス


Win 8 環境が…

AP テスト用の Win 8 環境で,今まで Win 8.1 にならない様にしていたのに,…
回避手順を間違えて,8.1 になってしまった.
Win 8 に戻す手段はなさそうで,困ったことに.


MBP は 12/17 に Yosemite に.
今回は時間をおいたので,それ程問題はなさそう.


自分でも AP を作っているのであまり言えないが,(過去に何度かやらかしているので)
Update の品質や,回避する手段などは改善してほしい.
ここ 2 年位で,かなりの時間を取られた様に思う.

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

デバッグビルドで C2061 ‘_DebugHeapTag_func’

以前(2014/04/25 の exe が存在する)は通っていたのに,…


------ ビルド開始: プロジェクト: BLCombi, 構成: Debug Win32 ------
ComPrj01.cpp
c:\program files (x86)\microsoft visual studio 9.0\vc\include\xlocmon(283) : error C2061: 構文エラー : 識別子 '_DebugHeapTag_func'
c:\program files (x86)\microsoft visual studio 9.0\vc\include\xlocmon(281): クラス テンプレート のメンバ関数 'size_t std::moneypunct<_Elem,_Intl>::_Getcat(const std::locale::facet **,const std::locale *)' のコンパイル中
with
[
_Elem=char,
_Intl=true
]
c:\program files (x86)\microsoft visual studio 9.0\vc\include\xlocmon(908) : コンパイルされたクラスの テンプレート のインスタンス化 'std::moneypunct<_Elem,_Intl>' の参照を確認してください
with
[
_Elem=char,
_Intl=true
]
BLCombi - エラー 1、警告 1

------ ビルド開始: プロジェクト: BLCombi, 構成: Debug Win32 ------ ComPrj01.cpp c:\program files\microsoft visual studio 8\vc\include\xlocmon(273) : error C2061: 構文エラー : 識別子 '_DebugHeapTag_func' c:\program files\microsoft visual studio 8\vc\include\xlocmon(271): クラス テンプレート のメンバ関数 'size_t std::moneypunct<_Elem,_Intl>::_Getcat(const std::locale::facet **)' のコンパイル中 with [ _Elem=char, _Intl=true ] c:\program files\microsoft visual studio 8\vc\include\xlocmon(887) : コンパイルされたクラスの テンプレート のインスタンス化 'std::moneypunct<_Elem,_Intl>' の参照を確認してください with [ _Elem=char, _Intl=true ] BLCombi - エラー 1、警告 0
------ ビルド開始 : プロジェクト : BLCombi, 構成 : Debug Win32 ------ ComPrj01.cpp c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\xlocmon(249) : error C2061: 構文エラー : 識別子 '_DebugHeapTag' c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\xlocmon(247): クラス テンプレートのメンバ関数 'size_t std::moneypunct<_Elem,_Intl>::_Getcat(const std::locale::facet ** )' のコンパイル中 with [ _Elem=char, _Intl=true ] c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\xlocmon(828) : コンパイルされたクラスのテンプレートのインスタンス化 'std::moneypunct<_Elem,_Intl>' の参照を確認してください with [ _Elem=char, _Intl=true ] BLCombi - エラー 1、警告 0
------ ビルド開始 : プロジェクト : BLCombi, 構成 : Debug Win32 ------ ComPrj01.cpp c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\xloctime(539) : error C2061: 構文エラー : 識別子 '_DebugHeapTag' c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\xloctime(539) : error C2143: 構文エラー : ';' が ')' の前にありません。 BLCombi - エラー 2、警告 0

VC 6 や VC 10 , 11 , 12 では 通る.
検索すると, #define new DEBUG_NEW の定義の様であるが,この ComPrj01.cpp でどうすべきかが不明.


本来は,ComPrj01.cpp でインクルードしているファイルを変更すべきなのだろうが,いい方法がわからない.
ComPrj01.cpp でインクルードしているものの順番を変更することで,通る様にはなった.


2024/11/11
https://dev.mish.work/wordpress/?s=C2061

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

コンボボックスで文字化け

「今まで CHS で使用していた環境を日本語に切替えたのに,一部 “漢字” で表示されたままになっている」と問合せ.
UNICODE.exe なので,MultiByte との変換の時には問題が発生することは知っていたが,…
メニューやダイアログのタイトルなどは問題ないが,コンボボックスで文字化けしていた.
「コントロールパネル」-「地域と言語」-「管理」タブ-「Unicode 対応…」-「システム ロケール…」が「日本語」でなかった.


UNICODE.exe でも,コンボボックスでは文字化けすることは知らなかったので,exe を作って調べてみた.
MBCS.exe .半角カタカナなども文字化けしてしまう.


UNICODE.exe .コードで追加している場合は,正しく表示される.
m_ComboD.AddString(_T(“1234567890”)) ;
m_ComboD.AddString(_T(“12345”)) ;
m_ComboD.AddString(_T(“ABCDEFGHIJ”)) ;
m_ComboD.AddString(_T(“ABCDE”)) ;
m_ComboD.AddString(_T(“あいうえお”)) ;
m_ComboD.AddString(_T(“亜意卯絵尾”)) ;


VC 2013 で同様に作成してみたが,

最初,リソースエディタで複数指定する方法がわからなかったが,セミコロンで区切れば OK .


コンボボックスの表示データを,リソースで指定している場合に文字化けしてしまう.
ComboBox.zip


これらに関して検索してみると,
UNICODEアプリケーションで文字化けが発生する
リソースファイルの文字列のUNICODE化

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

Afx.h 追加でメモリリーク

コンソール AP を作成していて,ある時からメモリリークが.
Afx.h の関係とはその時予想がついたが,無意識にコードを変更して解消していたので整理.


Afx.h より前に iostream があるとリークが発生.
同じことをこの時にも書いてた.

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

on error …

久々に VBS を書いていて,少し時間がかかったのでメモ
コードを修正して,実行しても意図した動作で実行されない.
原因は on error resume next などとしていたため.

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

printf(“%c”,’\a’) を cout で

_tprintf(_T(“%c”),_T(‘\a’)) を std::tout に変更しようとして,以下の様にしてみた.
  std::tout << ‘\a’ ;
VC 6 で,MBCS では意図した動作 (BEL) となるが,UNICODE の場合 “7” が表示される.


一度文字列のバッファに入れれば良いと気づき,
  std::tout << tstring(_T(“\a”)) ;

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

無効なパスが含まれています

VC 8 のプロジェクトのリリース版でビルド,実行したら,
—————————
MSW_0924
—————————
無題のファイル には無効なパスが含まれています。
—————————
OK
—————————
AFX_IDP_FILE_BAD_PATH
リビルドで正しく起動する様になった.
原因はよくわからないが,リソース辺りか?

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

xcode + glut

「Command Line Tool」としてプロジェクトを作成.
「GLUT」を追加.


10.9 になったこと?により出力される次の様なワーニングをでない様にするために 10.8 に.
/Users/Iwao/…/main.cpp:116:2: ‘glutInit’ is deprecated: first deprecated in OS X 10.9

インクルードパス設定場所は,「Build Settings」−「Search Paths」−「Header Search Paths」
glut.h のインクルードは以下の様にしている.
  #ifdef __APPLE_CC__
    #include <GLUT/glut.h>
  #else
    #include <GL/glut.h>
  #endif

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

OpenGL Programing Guide

何年も前に買った本(1995年8月10日第4刷となってる)で,中に含まれるサンプルを実行できる様にしてみた.
OpenGL Programing Guide
サンプルのソースで,<gl\glut.h> のインクルードは最初に移動.


glut
opengl.org
  GLUT and OpenGL Utility Libraries
    GLUT – The OpenGL Utility Toolkit
      Nate Robin’s GLUT for Windows page
glut32.dll は,system32 などへ.
glut.h は,~\Include\gl へ.
glut32.lib は,~\Lib へ.


セレクション
::glRenderMode(GL_SELECT) の後の ::glRenderMode(GL_RENDER) で,セレクションヒット数が得られる.
::glGetIntegerv(GL_RENDER_MODE) で現在のモードを取得可能.
セレクションバッファの内容
  名前の深さ?
  Z min
  Z max
  名前 …


2014/09/04
時間がかかったがなんとか GLUT ではできた.


2014/09/08
今度は,VXxxxView を使用した SDI.exe での手順.
ビューの OnDropFiles で,ファイルの種類により glRenderMode GL_SELECT , GL_RENDER を呼ぶ様に変更.
  CMainFrame::OnDropFile で条件により CXxxxView::OnDropFile を呼び出し.
  glGetIntegerv(GL_RENDER_MODE,…) で GL_SELECT が返ってこない.
    wglMakeCurrent を呼んでなかったので,効果がなかった.
  今度は,GL_SELECT にならない.GL_INVALID_OPERATION となる.
    ヘルプにある様に,glSelectBuffer を呼んでなかった.
CPickSView::OnDropFiles
  GetOpGLP()->MakeCurrent(TRUE) ;
  if (…) {
    ::glSelectBuffer(BUFSIZE,selBuf) ;
    ::glRenderMode(GL_SELECT) ;
    }
  else {
    ::glRenderMode(GL_RENDER) ;
    }
  GetOpGLP()->MakeCurrent(FALSE) ;


2014/09/10

PickS.2014.09.09.zip
マウスの Y 方向の位置が合ってない.
その exe を Win 7 環境で動かすと,

デバッグ用に ::glGetIntegerv(GL_RENDER_MODE,…) のために GetOpGLP()->MakeCurrent(…) していた.
  MakeCurrent(FALSE) で SwapBuffers を呼んでいる.


マウスの Y 方向は,縦長だと合っていそう.横長だとその長い分だけ Y 方向にずれている?

コの字型の平面方向で,座標はそれなりにとれている.::gluUnProject の z は Depth / 0xffffffff .
gulUnProject の y の与え方が違っていた.
viewPort[3] – pt.y としていたが,それではダメみたいで,GetClientRect の Height() としてうまくいってそう.
PickS.2014.09.10.zip
まだ ::gluPickMatrix の方がうまくできてない.


2014/09/11
平面図にして,1 つの直方体がウィンドウいっぱいに表示される状態で選択すると,

どうもピック領域のサイズが,ウィンドウの大きさになっているような感じ.
20 Picking and Using Selection 20. ピッキングとセレクションの使い方 を参考にしているが,…


::gluPickMatrix を呼ぶタイミングが悪かったのが原因.
ある程度予想はしていたが,OpGL::Projection の中のため,その関数を分割する必要がありそう.
その関数内の OpenGL の呼び出しは,
  ::glMatrixMode(GL_PROJECTION) ;
  ::glLoadIdentity() ;
  //  ここ
  ::glOrtho(r.l,r.r,r.b,r.t, zNear,zFar) ;  /  ::gluPerspective(deg(angle),aspect, zNear,zFar) ;
  ::glViewport((GLint)win.l,(GLint)win.b,(GLint)(win.r-win.l),(GLint)(win.t-win.b)) ;
glLoadIdentity() の後に ::gluPickMatrix を呼ばなければならない.
PickS.2014.09.11.zip


2014/09/18
汎用的なコードにするため,コードを見直しているがなかなか進まない.
例えば,マウスの移動で選択されているものを表示しようとすると,テクスチャありでは遅くて使えない.
また,その時の表示で PgonsA の描画を抜き出したコードだと何とか見れるが PartsA::Draw 相当だと遅い.
PickS.2014.09.18.zip


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

COleDataSource を利用した Drag

以前 DoDragDrop で少し調べたが,その時は途中になっていた.
その時の内容で,例えば CListBox に表示されてるファイルリストのすべてを,CListBox の外側でドラッグするすることはできる.
  void CDragLBDlg::OnLButtonDown(UINT nFlags, CPoint point)
  {
    CStringArray sa ;
    ::ToStringArray(FileNames,&sa) ;
    ::StringArrayToDoDragFiles(sa) ;
    }


CListCtrl であれば,OnBegindragXxxx が利用できるので,
  void CDragLVDlg::OnBegindragListFiles(NMHDR* pNMHDR, LRESULT* pResult)
  {
    NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    {
      CStringArray sa ;
      for (int index=0 ; index<m_ListFiles.GetItemCount() ; index++) {
        if (m_ListFiles.GetItemState(index,LVIS_SELECTED) == LVIS_SELECTED) {
          tstring str = FileNames[index] ;
          sa.Add(str.c_str()) ;
          }
        }
      if (sa.GetSize() > 0) {
        ::StringArrayToDoDragFiles(sa) ;
        }
      }
    *pResult = 0;
    }


今回やりたかったのは,CListBox の項目のドラッグ.
ドラッグ部分は CListCtrl とほぼ同様となると思われるが,ドラッグ開始のタイミングが取れない.
CDragListBox と開始時の動きは似ているが,MFC のコードを見るとちょっと難しそう.
いろいろと検索すると,CListBox のサブクラス化で対応するみたいとわかったが,手順が...
動的なサブクラス化と言うらしい.
Inside Visual C++ には,囲み記事に CNonNumericEdit がある.
利用する手順はわかるが,作成する手順がわからない
今も利用はしている CView からの VXxxxView ファミリがあるが,10 年以上前で手順は覚えてない.


いろいろ探して「MFC クラスウィザード」を利用することがわかった.
今まで,よく見ていたダイアログなのに...

後は,WM_LBUTTONDOWN を処理する様にして,
  void CMyListBox::OnLButtonDown(UINT nFlags, CPoint point)
  {
    CListBox::OnLButtonDown(nFlags, point);
    int sel = GetCurSel() ;
    if (sel == LB_ERR) { return ; }
    CString str ;
    GetText(sel,str) ;
    CStringArray sa ;
    sa.Add(str) ;
    ::StringArrayToDoDragFiles(sa) ;
    }
ダイアログに追加したリスボックスで,これを利用する様にダイアログのヘッダを修正.


MSDN CTRLTEST サンプル
テクニカル ノート 14
標準コントロールからのコントロールの派生
[MSVC] MFCを使用しての動的サブクラス化
Create Client Windows, Drag and Drop Between Listboxes


2014/08/11 追記
COleDataSource を利用して,他の AP に CF_HDROP で渡そうとすると,
—————————
Microsoft Visual C++ Debug Library
—————————
Debug Assertion Failed!
Program: …Documents\Visual Studio 2010\Projects\TestVC10\Debug\T_SC.exe
File: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\cmdtarg.cpp
Line: 43
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
—————————
中止(A) 再試行(R) 無視(I)
—————————

COleDataSource の使い方が間違っていた.
開放する時に delete ではうまくない.
データ オブジェクトとデータ ソース : 作成と破棄

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

VC のビルド時間

  A-T-r A-T-b A-E-r A-E-b B-I-r B-I-b
VC 6 35 6 160 12 380 21
VC 7 52 6 180 15 476 27
VC 7.1 73 11 295 24 745 41
VC 8 80 15 275 24 535 30
VC 9 25 9 100 12 220 15
VC 10 143 24 470 34 542 42
VC 11 150 21 475 31 505 38
VC 12 30 11 100 15 130 20

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

モードレスダイアログの動作が,…

VC 7 以降,MDI AP のモードレスダイアログが独立して動作してしまう現象があった.
その AP は,VC 4 の頃作成したもので CMainFrame::OnCreate 内でモードレスダイアログを作成している.
VC 6 までは特に問題なかったが,VC 7 以降タスクバーにアイコンが 2 つ存在する状態になってしまっていた.
過去に何度か対応方法を調べたが,わからずそのままとなっていた.


今日別の事を調べていて,「モードレスダイアログで親子にならなくする」方法が目に留まった.
CDialog::Create で,デフォルトの NULL ではなく,GetDesktopWindow() を与えるというもの.
VC 7 AP のダイアログの情報を,Spy++ で見ると,親ウィンドウが (なし) になっている.
今度はデバッガで,Create の付近を追いかけると AfxGetMainWnd() で NULL がかえっている.
ThrdCore.cpp より
CWnd* CWinThread::GetMainWnd()
{
  if (m_pActiveWnd != NULL)
    return m_pActiveWnd;
  if (m_pMainWnd != NULL)
    return m_pMainWnd;
  return CWnd::GetActiveWindow();
}


CXxxApp::InitInstance で以下の部分を修正.
  CMainFrame* pMainFrame = new CMainFrame;
  m_pMainWnd = pMainFrame;   // ここを追加
  if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
    return FALSE;
  m_pMainWnd = pMainFrame;

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

CSplitterWnd – 2

SDI で,MDI の「新しいウィンドウを開く」で 4 つのビューを表示した様な動作が欲しかったので,調べてみた.
動的な分割ウィンドウである程度の所まではできそう.


1. MainFrm.h の CMainFrame に以下を追加.
    CSplitterWnd m_wndSplitter;
    virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
2. CMainFrame::OnCreateClient の追加.
    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
    {
      {
        if (!m_wndSplitter.Create(this,2, 2,CSize(10, 10), pContext,
            WS_CHILD | WS_VISIBLE /* | WS_HSCROLL | WS_VSCROLL */ | SPLS_DYNAMIC_SPLIT))	{
          TRACE0("Failed to create split bar ");
          return FALSE;
          }
        return TRUE;
        }
      }
    スクロールバーを付加したくなかったので,6 つ目のウィンドウスタイルを変更している.
テスト用に分割動作をコマンドとして実装.
    void CMainFrame::OnSplit() 
    {
      if (IsSplit)	{
        if (m_wndSplitter.GetColumnCount() > 1) {	m_wndSplitter.DeleteColumn(1) ;	}
        if (m_wndSplitter.GetRowCount() > 1) {     	m_wndSplitter.DeleteRow   (1) ;	}
        IsSplit = !IsSplit ;
        }
      else {
        CRect	rect ;
        m_wndSplitter.GetClientRect(&rect) ;
        if (m_wndSplitter.GetColumnCount() == 1) {	m_wndSplitter.SplitColumn(rect.Width ()/2) ; }
        if (m_wndSplitter.GetRowCount() == 1) {		m_wndSplitter.SplitRow   (rect.Height()/2) ; }
        IsSplit = !IsSplit ;
        }
      }

2 x 2 の分割ウィンドウのコントロールの ID (Spy++ で確認)
  左上(0,0)  E900  AFX_IDW_PANE_FIRST
  右上(0,1)  E901
  左下(1,0)  E910
  右下(1,1)  E911


ビューの OnDraw を以下の様に書き換えると

  void CSpltWView::OnDraw(CDC* pDC)
  {
    int		row = -1 ;
    int		clm = -1 ;
    CMainFrame*		mw = (CMainFrame*)AfxGetMainWnd() ;
    CSplitterWnd*	sw = &mw->m_wndSplitter ;
    CString			str ;
    if (sw->IsChildPane(this,&row,&clm)) {
      int	id = sw->IdFromRowCol(row,clm) ;
      CString	tmp1 ;	tmp1.Format(_T("row = %d  ,  clm = %d"),row,clm) ;
      CString	tmp2 ;	tmp2.Format(_T("IdFromRowCol = %04X"),	id) ;
      str += tmp1 + _T("\r\n") ;
      str += tmp2 + _T("\r\n") ;
      }
    {
      UINT	nID = GetDlgCtrlID() ;
      CString	tmp ;	tmp.Format(_T("GetDlgCtrlID  = %04X"),nID) ;
      str += tmp + _T("\r\n") ;
      }
    {
      CWnd*	pw = GetParent() ;
      CString	tmp1 ;	tmp1.Format(_T("Splitter = %08x "),sw->GetSafeHwnd()) ;
      CString	tmp2 ;	tmp2.Format(_T("Parent  = %08x "),pw->GetSafeHwnd()) ;
      str += tmp1 + _T("\r\n") ;
      str += tmp2 + _T("\r\n") ;
      }
    CRect	rect ;
    GetClientRect(rect) ;
    rect.top = rect.left = 10 ;
    pDC->DrawText(str,rect,0) ;
    }


MFC の ソースを眺めていると CView::GetParentSplitter があったので,間接的にはそれを使えば良さそう.


ビューでどの位置かを求めるだけなら,
    short	texNo = 0 ;
    {
      UINT	nID = GetDlgCtrlID() ;
      switch	(nID)	{
        case	AFX_IDW_PANE_FIRST + 0x00 :	texNo = 1 ;		break ;
        case	AFX_IDW_PANE_FIRST + 0x01 :	texNo = 2 ;		break ;
        case	AFX_IDW_PANE_FIRST + 0x10 :	texNo = 3 ;		break ;
        case	AFX_IDW_PANE_FIRST + 0x11 :	texNo = 4 ;		break ;
        }
      }
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

‘THIS_FILE’ がシンタックスエラーを…

今まで通っていたプロジェクトで,
  ComPrj03.cpp
  c:\…\memory(16) : error C2061: 構文エラー : 識別子 ‘THIS_FILE’ がシンタックスエラーを起こしました。
  c:\…\memory(17) : error C2091: 関数は関数を返せません。
  c:\…\memory(17) : error C2809: ‘operator new’ に仮引数リストがありません。
  c:\…\memory(20) : error C2954: テンプレートの定義はネストできません。
  cl.exe の実行エラー
  ComPrj03.obj – エラー 4、警告 0


ソースの先頭付近に #include <memory> を追加.
  #include “StdAfx.h”
  #include “ComPrj00.hpp”
  #include <memory>
 


2019/01/18

--------------------構成: MkZIP2 - Win32 Release--------------------
コンパイル中...
MkZIP2.cpp
リンク中...

MkZIP2.exe - エラー 0、警告 0
--------------------構成: MkZIP2 - Win32 Debug--------------------
コンパイル中...
MkZIP2.cpp
c:\program files\microsoft visual studio\vc98\include\memory(16) : error C2061: 構文エラー : 識別子 'THIS_FILE' がシンタックスエラーを起こしました。
c:\program files\microsoft visual studio\vc98\include\memory(17) : error C2091: 関数は関数を返せません。
c:\program files\microsoft visual studio\vc98\include\memory(17) : error C2809: 'operator new' に仮引数リストがありません。
c:\program files\microsoft visual studio\vc98\include\memory(20) : error C2954: テンプレートの定義はネストできません。
cl.exe の実行エラー

MkZIP2.exe - エラー 4、警告 0

#include “stdafx.h”
#include “MkZIP2.h”
#include <ShlObj.h>
#import <Shell32.dll> // named_guids
//#include <memory>


エラーになるのはデバッグ版のビルド.リリース版では通る.
#include <memory> を有効に.


2023/03/24
#define new DEBUG_NEW より後にインクルードしているとうまくない error C2061 , C2091 , C2809 , C2556

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

~iDocText でダウン

先日作成した TextureToPath 関係でダウンする様になってしまった.
場所は,iDocText のデストラクタ付近.
呼出し元をたどると,#pragma omp parallel for .


TextureCopy::GetDrawName に #pragma omp critical (TextureCopy_GetDrawName) を追加.

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

LAN-GTJU3H3 追加

LAN-GTJU3H3 を追加.
何が悪いのかわからないが 100 M で接続されているみたい.今の用途では遅さはそれほど気にならない.
付属のマニュアルはちょっと古いみたいで,ここからマニュアルを参照.

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

時刻の同期

6/20 に HDL-Z2WM2C2 を追加した.
ソースファイルの保管のサーバとしての利用で,Win7 USB 2 HDD と比べても遜色ない.
ひとつ気になることが,思っていたよりファンの音がうるさい.


先日,クライアントの PC と WSS で,時間が少しずれていたので time.windows.com で時刻を合わせた.
今日時刻を見てみると 10 秒位の差ができてしまっている.
もう少し精度が欲しかったので検索すると,
インターネット時刻機能のポーリング間隔を調整する方法
Windowsの時計がずれる / 自動で正確に合わせる小技 (Windows 7/8.1編)
これらを参考にさせてもらって,1 日に 1 回程度の設定とした.

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

Polymorphism

class iDocCSV1 : public iDocText {

virtual long GetFieldNo (c_tstring& fieldName) const { return FNoNOP ; }

} ;
c_tstring fieldName となっていた.


TextureTo_1::MakeCSV1 でタプルクォーテーションでうまく括られない.閉じる ‘\”‘ が付加されない.
   da.push_back(::QuotM_Add_Auto( GetPath () ) ;
原因はよくわかってないが,LPCTSTR 版を利用することで対応.
   da.push_back(::QuotM_Add_Auto( GetPath ().c_str()) ) ;
MakeCSV1 を切り出してコンソール AP としてテストしたが,期待した動作となり原因は掴めてない.


2014/06/25
また次の様なコードで,STL 版ではうまく動作していない.
{
tstring str ;
str += tt1->GetName() + _T(“\r\n”) ;
str += tt1->GetPath() + _T(“\r\n”) ;
str += tt1->GetPathPNG()+ _T(“\r\n”) ;
str += tt1->GetPathTGA()+ _T(“\r\n”) ;
m_TexPath1 = str.c_str() ;
}
MFC 版では OK .
{
CString str ;
str += tt1->GetName ().c_str() + CString(_T(“\r\n”)) ;
str += tt1->GetPath ().c_str() + CString(_T(“\r\n”)) ;
str += tt1->GetPathPNG ().c_str() + CString(_T(“\r\n”)) ;
str += tt1->GetPathTGA ().c_str() + CString(_T(“\r\n”)) ;
m_TexPath1 = str ;
}


2014/06/27
また,::String_Join_Line でうまく結合されなかった.
デバッガで調べると,サイズは確保されいる.メモリの内容をよーく見てみると,途中に ” が入っている.
原因は,MFC を利用しない方法で書き直した ::DropFilesTo のバグ.
ファイル名の最後に余分な ‘\0’ が付加されていた.

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

VC 6 MFC サポートのコンソール AP で,C4786

c:\program files\microsoft visual studio\vc98\include\utility(123) :
warning C4786: ‘std::vector<std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >,std::allocator<std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > >’ :
デバッグ情報で識別子が 255 文字に切り捨てられました。
StdAfx.h の #include <iostream> より前に,以下を追加して対応.

    #pragma warning (disable : 4786 )
    #include <utility>
//  #pragma warning (default : 4786 )
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

MFC DLL → Static – 2

VC 6 などで生成したプロジェクトを,VC 7 ~ VC 11 まで順に変換して利用してきたもの.
「共有 DLL で MFC を使う」から「スタティック ライブラリで MFC を使用する」に変更してビルドすると,
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\afx.h(24):
  fatal error C1189: #error : Building MFC application with /MD[d]
   (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
プロジェクトの「プロパティページ」-「構成プロパティ」-「C/C++」-「コード生成」-「ランタイム ライブラリ」を
  「マルチスレッド DLL (/MD)」から「マルチスレッド (/MT)」に変更.


ビルドは通る様になったが,起動時メインフレーム表示直後にアプリケーションエラー.
  プロジェクトのプロパティで,「リンカ」-「デバッグ」-「デバッグ情報の生成」で「はい (/DEBUG)」に.
  ビルドして実行すると,
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\src\mfc\docsingl.cpp
    CSingleDocTemplate::SetDefaultTitle(CDocument* pDocument) の
       ENSURE(strDocName.LoadString(AFX_IDS_UNTITLED));
アプリケーション エラー
プロジェクトのプロパティ,「リソース」-「プリプロセッサの定義」に “_AFXDLL;” があったので削除.


2021/02/17
VC 7 以降に変換した段階で,ソースの「プリプロセッサの定義」が引き継がれてしまう?
そのため,それは削除した方が良さそう.
VC 8 「ソース」のプリプロセッサの定義
* 間違ってプロジェクトの「プリプロセッサの定義」を削除しないこと.
VC 12 LNK1104 , VC 14.2 LNK2019

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