Iwao Dev

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

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

VC 10 Dialog を VC 6 に

VC 10 で作成したダイアログベースのプロジェクトを VC 6 に

  1. プロジェクト作成時の基本クラス CDialogEx → CDialog
  2. 「構成プロパティ」-「全般」の「出力ディレクトリ」と「中間ディレクトリ」を $(Configuration).100\ に
  3. RC ファイルなどが UNICODE だったため,Shift-JIS に
  4. RC ファイル内でエラーになる部分をコメントに
  5. ico ファイル内に2573x1293x16777216 (256x256x32 png) があり,ビルドエラーになったので削除
    C:\…\Project.rc (67): error RC2176 : old DIB in res\Project.ico; pass it through SDKPAINT
  6. StdAfx.h 内の AfxControlBar.h をコメントに
  7. CAboutDlg : CDialogEx となっているので,CDialog に
  8. CShellManager 関係をコメントに
  9. ON_COMMAND(ID_HELP, &CWinApp::OnHelp) をコメントに

ここまででビルド,実行はできたが,なんか変
VC 10 でのダイアログエディタの操作は可能だが,VC 6 では出来ない.
VC 10 で編集したものを,VC 6 でビルド,実行は可能?
ON_BN_CLICKED(IDC_XXX, &CBrwFileDlg::OnClickedXxx) の ‘&’ が邪魔.

* ここの情報は,動作などを保証するものではありません.個人的なメモです.

    この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


    LBT-HS121C2 を追加

    取扱説明書には特に記述はないようであるが,…
    Win 7 環境では USB アダプタのドライバをインストールしてはいけない?
    PC とヘッドセットとの接続は可能であったが,PC と X02T との接続がうまくない.

    Web で検索かけると取説の PDF では,Win 7 には必要なしとのこと.
    「プログラムと機能」からドライバ類をアンインストールして再起動.
    PC と X02T との接続が可能になった.

    この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

    • カテゴリー:

    GetLongPathName 存在しないと失敗

    http://msdn.microsoft.com/ja-jp/library/cc429335.aspx

    簡略化するために HelpAPI.hxx に以下を用意.
    inline CString GetLongPathName (LPCTSTR fileName)
    {
     CString longPath ;
     UINT size = _MAX_PATH ;
     DWORD len  = ::GetLongPathName(fileName,longPath.GetBuffer(size),size) ;
     longPath.ReleaseBuffer() ;
     if (len == 0) { return fileName ; }
     return longPath ;
     }

    ファイルが存在しないと関数が失敗する様なので,
     ::CreateEmptyFile(sFile) ;
     CString  lFile = ::GetLongPathName(sFile) ;
     

    この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


    DImageS の配列で,…

    以下の様な DImageS の配列で,要素の表示が 1 回目しかできなかった.
     CString selFile = DImgAry.GetAt(selIndex).GetFileName() ;
     DImgAry[selIndex].Draw(&m_Image) ;

    配列を直接使用するのではなく,DImageS にファイル名を取得してからでは OK .
     DImageS dImg ;
     dImg.SetFileName(selFile) ;
     dImg.Draw(&m_ImageMBA) ;
     

    この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


    CEdit::SetSel である位置を選択

    SetSel を UpdateData(FALSE) の呼び出しより後に使用すれば良い.
    UpdateData(TRUE) ;

    // 例えば文字列の最後へ
    int pos = m_SelectStr.GetLength() ;
    m_CtrlSelectStr.SetSel (pos,pos) ;

    // UpdateData(FALSE) ;
    または,UpdateData を使用しないで取得,更新する.
    CEdit::Setsel の使い方

    この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

    • カテゴリー:

    画像付ファイル名のリストボックス

    ヘッダファイルへの追加
     #include “DImgS.hxx” または “DImg.hxx”
     #include “ODrawDcM.hxx”

     ListBoxDocMF m_ListDImage;
     CArray <DImageS,DImageS> DImgAry ; または <DImage,…>

    OnInitDialog など
     m_ListDImage.SubclassDlgItem(IDC_XXXX_FILE_LIST,this) ;
     m_ListDImage.Init() ;
     m_ListDImage.ResetContent() ;

    リストに表示するファイルの設定
     DImgAry.RemoveAll() ;
     for (int dIndex=0 ; dIndex<addFiles.GetSize() ; dIndex++) {
      DImageS dImg ; または DImage
      dImg.SetFileName(addFiles[dIndex]) ;
      DImgAry.Add(dImg) ;
      }
     m_ListDImage.ResetContent() ;
     for (int rIndex=0 ; rIndex<DImgAry.GetSize() ; rIndex++) {
      CString fileName = DImgAry.GetAt(rIndex).GetFileName() ;
      m_ListDImage.AddString(fileName,fileName) ;
       // 以下は登録時に画像を付ける場合
      CString mfName = CacheFile::GetCF_Name(fileName,1000) ;
      if (::FileIsExist(mfName)) {
       m_ListDImage.SetAtDocMF(rIndex,mfName) ;
       }
      else {
       HICON icon = DImageS_GetIcon(fileName) ;
       m_ListDImage.SetAtIcon(rIndex,icon) ;
       }
      }

    DImageS クラスでなく DImage クラスを使用した場合は,ImageDMF クラスをサポートする形になる.
    DImageS クラスでは,対応付けた EMF での動作になる.
    現状の ListBoxDocMF では Shell Extension を利用できないみたい.
    別のクラスを用意するか変更が必要.間にListBoxDocSE などを用意するか?
     

    この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


    コントロールをサブクラス化した時のエラー

    ダイアログのコントロールをサブクラス化した時の実行時エラーの対応.
    m_ListXxx.SubclassDlgItem(IDC_Xxxx_LIST,this) ;
    —————————
    Microsoft Visual C++ Debug Library
    —————————
    Debug Assertion Failed!
    Program: …\Xxxx\Xxxx\Debug\Xxxx.exe
    File: wincore.cpp
    Line: 321
    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)
    —————————
    以前 CListBox として使用していたので,変数として割り付けられていた.
    変数を削除してOK.

    この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

    • カテゴリー:


      top

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