#lookup(Google.jp,検索,VC++)

#contents

*Visual C++ 関連情報 [#f5d38087]
-あんまり整理してません。
**Visual C++ 6.0 [#pece7385]
-[[[MS] Visual C++ スタート ページ:http://www.microsoft.com/japan/developer/library/vcedit/vcstartpage.htm]]
-[[[MS] 技術情報:http://www.microsoft.com/japan/msdn/vs_previous/visualc/techmat/]]
-[[[MS] Visual C++ 6.0 製品サポート:http://support.microsoft.com?scid=fh;ja;vcJPN]]
-[[[MS] Visual Studio 6.0 Service Pack 6:http://www.microsoft.com/japan/msdn/vstudio/downloads/sp/VS6SP6.asp]]
-[[[MS] Visual Studio 6.0 Service Pack 6 入手方法についてのご案内:http://www.microsoft.com/japan/msdn/vstudio/downloads/sp/order_vs6sp6.asp]]

**Visual C++ .NET [#ye5b7338]
-[[[MS] 技術情報:http://www.microsoft.com/japan/msdn/visualc/techinfo/articles.asp]]
-[[[MS] よくある質問:http://www.microsoft.com/japan/msdn/visualc/productinfo/faq/]]
-[[[MS] Visual C++ .NET:http://www.gotdotnet.com/japan/team/cplusplus/]]

**Visual Studio 2005 [#m4ce444b]
-Visual Studio 2005
--http://www.microsoft.com/japan/msdn/vstudio/2005/
-Visual Studio 2005 製品ラインの概要
--http://www.microsoft.com/japan/msdn/vstudio/2005/productinfo/productline/
-Visual Studio 2005 Express ベータ製品
--http://www.microsoft.com/japan/msdn/vstudio/2005/express/
-Visual C++ 2005 Express Edition Beta (英語版)
--http://www.microsoft.com/japan/msdn/vstudio/2005/express/visualc/
**はてなブックマーク [#rcf96db1]
-[[VC++関連:http://b.hatena.ne.jp/cx20/VC%2b%2b/]]
#showrss(http://b.hatena.ne.jp/cx20/rss?tag=VC%2b%2b,recent)

**MSDN [#e4dba88d]
-[[[MS] よく寄せられる質問 (FAQ) インデックス:http://www.microsoft.com/japan/msdn/faq/]]
-[[MSDN Subscription:http://msdn.microsoft.com/subscriptions/downloads/]]
#showrss(http://msdn.microsoft.com/subscriptions/rss.xml,recent)

*MFCに関する情報 [#aaf3b183]
**コーディング規約 [#l89b475f]
-[[[MS] INFO: Microsoft Foundation Class Library Development Guidelines:http://support.microsoft.com/default.aspx?scid=kb;EN-US;136549]]

**テクニカルノート [#p85521ac]
-[[[MS] カテゴリ別テクニカル ノート:http://www.microsoft.com/japan/developer/library/vcmfc/_mfcnotes_technical_notes_by_category.htm]]
**スレッド [#zf3a4990]
-[[[MS] マルチスレッド:http://www.microsoft.com/japan/developer/library/vccore/_core_multithreading_topics.htm]]
***スレッドの使い方 [#a3029012]
-[[GoldFish - スレッドを使う:http://www.athomejp.com/goldfish/mfc/cobject/thread.asp]]
-[[Ryuzのプログラミング講座 - MFCで制御アプリ:http://member.nifty.ne.jp/Ryuz/programing/mfc.html]]
-[[ソフト開発コーナー - スレッドと同期:http://members.jcom.home.ne.jp/0434383301/vc9.htm]]
-[[マルチスレッドの基本的な使い方:http://hp.vector.co.jp/authors/VA007799/tips/tips6.htm]]
-[[macrobilis > visual c++ > マルチスレッド:http://www.geocities.co.jp/SiliconValley-PaloAlto/5610/vc/03072115/]]
-[[スレッドの使い方:http://www.cisnet.or.jp/home/tsuneoka/win32tech/19.html]]
-[[VC++「マルチスレッドの使用法」メモ:http://www.ne.jp/asahi/hishidama/home/tech/vcpp/thread.html]]
-[[Windowメッセージとスレッドの関係:http://arabo.hp.infoseek.co.jp/tips/tips.shtml#WINMSG]]
-[[MFCでワーカースレッドを作成する一例:http://www.anime-soft.com/~onogin/soft/tips/threaddemo.htm]]
-[[A Method of Worker Thread Pooling:http://codeproject.com/threads/thread_pooling.asp]]
-[[Microsoft Systems Journal July 1998:http://www.microsoft.com/msj/0798/c0798.aspx]]

**DOC/View [#h3777260]
***ドキュメントの新規作成 [#c28083db]
-[[[MS] 新しいドキュメント、ウィンドウ、ビューの作成:http://www.microsoft.com/japan/msdn/library/ja/vccore/html/_core_creating_new_documents.2c_.windows.2c_.and_views.asp]]
-[[[MS] ドキュメント/ビュー アーキテクチャ:http://www.microsoft.com/japan/msdn/library/ja/vccore/html/_core_document.2f.view_architecture_topics.asp]]

-[[C++ユーザーのためのWindowsプログラミングの基礎知識:http://www.amazon.co.jp/exec/obidos/ASIN/4756132529/]]
--第8章 ビューとドキュメント(P296)/ 図 8−10 フレームワーク動作の仕組み
 ID_FILE_NEW ( [新規作成] )
     ↓
     CWinApp:OnFileNew()
         ↓
         CDocManager::OnFileNew()
             ↓
             CDocument::OnNewDocument()
 
 ID_FILE_OPEN ( [開く...] )
     ↓
     CWinApp:OnFileOpen()
         ↓
         CWinApp:OpenDocumentFile()
             ↓
             CDocManager::OpenDocumentFile()
                 ↓
                 CDocument::OnOpenDocument()
                     ↓
                     CDocument::Serialize()
                         ↓
                         CDocument::SetPathName()
 
 ID_FILE_SAVE ( [上書き保存] )
     ↓
     CDocument::OnFileSave()
         ↓
         CDocument::OnSaveDocument()
             ↓
             CDocument::Serialize()
 
 ID_FILE_SAVE_AS ( [名前をつけて保存...] )
     ↓
     CDocument::OnFileSaveAs()
         ↓
         CDocument::OnSaveDocument()
             ↓
             CDocument::Serialize()
 
 ID_FILE_SAVE_AS ( [ファイル] メニューの [閉じる] )
     ↓
     CDocument::OnFileClose()
         ↓
         CDocument::SaveModified()
             ↓
             CDocument::OnCloseDocument()
                 ↓
                 CMDIChildWnd::DestroyWindow()
                     ↓
                     CMDIChildWnd::OnDestroy()
 
 ID_APP_EXIT ( [アプリケーションの終了] )
     ↓
     CWinApp::OnAppExit()
         ↓
         CMDIFrameWnd::OnClose()
             ↓
             CWinApp::SaveAllModified()
                 ↓
                 CDocManager::SaveAllModified()
                     ↓
                     CDocument::SaveModified()
                         ↓
                         CMDIFrameWnd::DestroyWindow()
                             ↓
                             CMDIFrameWnd::OnDestroy()
                                 ↓
                                 CMDIChildWnd::OnDestroy()
                                     ↓
                                     CDocument::OnCloseDocument()
                                         ↓
                                         CWinApp::ExitInstance()
 
 メインウィンドウシステムの [閉じる]
     ↓
     CMDIFrameWnd::OnClose()
         ↓
         CWinApp::SaveAllModified()
             ↓
             CDocManager::SaveAllModified()
                 ↓
                 CDocument::SaveModified()
                     ↓
                     CMDIFrameWnd::DestroyWindow()
                         ↓
                         CMDIFrameWnd::OnDestroy()
                             ↓
                             CMDIChildWnd::OnDestroy()
                                 ↓
                                 CDocument::OnCloseDocument()
                                     ↓
                                     CWinApp::ExitInstance()
 
 MDI 子フレームシステムメニューの [閉じる]
     ↓
     CMDIChildWnd::OnClose()
         ↓
         CDocument::SaveModified()
             ↓
             CDocument::OnCloseDocument()
                 ↓
                 CMDIChildWnd::DestroyWindow()
                     ↓
                     CMDIChildWnd::OnDestroy()
 
 (注1)CDocument::DoSave は CDocument::OnSaveDocument を呼び出す。
 (注2)CDocument::DoFileSave も CDocument::OnSaveDocument を呼び出す

-テクニカル ノート 22: 標準コマンドのインプリメント
--http://www.microsoft.com/japan/developer/library/vcmfc/_mfcnotes_tn022.htm

***SDI で Doc/View を使わない方法。 [#m80a23a2]
-SDI で Doc/View を使わない方法。:AppWizard で「ドキュメント/ビュー アーキテクチャのサポート」のチェックをはずす。
 ---------------------------------------------------------
 MFC AppWizard - ステップ 1
 ---------------------------------------------------------
  作成するアプリケーションの種類」
   (*) SDI
   ( ) MDI
   ( ) ダイアログベース
   [ ] ドキュメント/ビュー アーキテクチャのサポート
 ---------------------------------------------------------
-Doc/View のアーキテクチャは使わないが View のみを使う場合。
--CListView を用いる方法
 上記のウィザードを実行した後、以下のような修正を行う。
 (通常、CView はヒープ上に取り、PostNcDestroy() で delete this するものらしい。)
#code c++
// ChildView.h
//class CChildView : public CWnd
class CChildView : public CListView
{
    CChildView();
    DECLARE_DYNCREATE(CChildView) // 追加
};

// ChildView.cpp
IMPLEMENT_DYNCREATE(CChildView, CListView) // 追加

// MainFrm.h
class CMainFrame : public CFrameWnd
{
//  CChildView  m_wndView;
    CChildView* m_pWndView;
};

// MainFrm.cpp
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
        return -1;
/*
    if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
        CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
    {
        TRACE0("Failed to create view window\n");
        return -1;
    }
*/ [#kb9b375c]
    m_pWndView = (CChildView*)RUNTIME_CLASS(CChildView)->CreateObject();
    if (!m_pWndView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
        CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
    {
        TRACE0("Failed to create view window\n");
        return -1;
    }
}
#end
また、以下の方法でも可能らしい。
#code c++
// View の派生クラスで PostNcDestroy() をオーバーライドし、以下のように修正。
void CChildView::PostNcDestroy() 
{
//  CListView::PostNcDestroy();
    CWnd::PostNcDestroy();
}
#end
-[[ドキュメント/ビューを使わない場合のCView:http://forums.belution.com/ja/vc/000/105/89s.shtml]]
-[[The Code Project - Creating your first Windows application - Dialog and Windows:http://www.codeproject.com/dialog/sditutorial1.asp]]
-[[[MS] ドキュメント/ビュー アーキテクチャの代替案:http://www.microsoft.com/JAPAN/developer/library/vccore/_core_alternatives_to_the_document.2f.view_architecture.htm]]

***シリアライズ [#e3147528]
-シリアル化の実装
--http://www4.plala.or.jp/tamo/vc/mfc04.html

**オーナー描画(Owner Draw)に関する情報 [#n304bf96]
-オーナー描画とは?
--http://www.ne.jp/asahi/yamashita/programming/tips/owner_draw.html
-コントロール別背景色変更
--http://www.geocities.jp/chiakifujimon/bgcolor/section3_3.html
-オーナードローボタンの作成 
--http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_BTowner.html
-オーナードローリストビューの作成
--http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_LVowner.html
-ビットマップメニュー(MenuEx)
--http://www.net24.ne.jp/~kenji/p_menuex/menuex.html
-メニューのオーナードローの手順
--http://www.athomejp.com/goldfish/mfc/window/ownermenu.asp

**MFCアプリケーションの仕組み [#wfe02e95]
-[[C++によるWindows のプログラミング:http://www10.plala.or.jp/sakurah/J4Pro3/shou4.htm]]
-[[MFCユーザーのためのAPIプログラミング講座:http://www.kab-studio.biz/Programing/Codian/MxA/01.html]]
-[[The Code Project - Win32 vs. MFC - Part I - C++ / MFC:http://www.codeproject.com/cpp/mfc_architecture.asp]]
-[[MFCインターナル(絶版?):http://www.amazon.co.jp/exec/obidos/ASIN/4795296952/]]
-[[C++ Q & A -- MSJ, November 1996:http://www.microsoft.com/msj/archive/S204D.aspx]]
-MFCの謎を追え! 
--http://www.geocities.co.jp/Hollywood/2358/mfc1.html

**タイトルの「無題」を変更する方法。 [#uc2909c6]
-MFC、ウィンドウタイトルの表示タイミングについて。
--http://mfc.acty-net.ne.jp/ml/mfc/logTop/logAll/00015502.shtml

**CodeGuru - Visual C++ [#ha2587c4]
-[[[CodeGuru] CodeGuru:http://www.codeguru.com/]]

***Controls [#de72fc46]
-[[[CodeGuru] Button Control:http://www.codeguru.com/buttonctrl/]]
-[[[CodeGuru] ComboBox:http://www.codeguru.com/combobox/]]
-[[[CodeGuru] Edit Control:http://www.codeguru.com/editctrl/]]
-[[[CodeGuru] ImageList Control:http://www.codeguru.com/imagelist/]]
-[[[CodeGuru] Listbox Control:http://www.codeguru.com/listbox/]]
-[[[CodeGuru] Listview Control:http://www.codeguru.com/listview/]]
-[[[CodeGuru] Menu:http://www.codeguru.com/menu/]]
-[[[CodeGuru] Other Controls:http://www.codeguru.com/controls/]]
-[[[CodeGuru] Property Sheet:http://www.codeguru.com/propertysheet/]]
-[[[CodeGuru] Rich Edit Control:http://www.codeguru.com/richedit/]]
-[[[CodeGuru] Static Control:http://www.codeguru.com/staticctrl/]]
-[[[CodeGuru] Status Bar:http://www.codeguru.com/statusbar/]]
-[[[CodeGuru] ToolBar:http://www.codeguru.com/toolbar/]]
-[[[CodeGuru] TreeView Control:http://www.codeguru.com/treeview/]]

***Data [#ff985a62]
-[[[CodeGuru] Database:http://www.codeguru.com/mfc_database/]]
-[[[CodeGuru] Miscellaneous:http://www.codeguru.com/data-misc/]]

***Windows [#u9f593d3]
-[[[CodeGuru] System:http://www.codeguru.com/system/]]
-[[[CodeGuru] Dialog:http://www.codeguru.com/dialog/]]
-[[[CodeGuru] Docking window:http://www.codeguru.com/docking/]]
-[[[CodeGuru] Doc/View:http://www.codeguru.com/doc_view/]]
-[[[CodeGuru] Splitter:http://www.codeguru.com/splitter/]]

***Tools [#a544f2bf]
-[[[CodeGuru] Tools:http://www.codeguru.com/tools/]]

*COMに関する情報 [#y0416357]
-[HOWTO] COM と DCOM に関するサポート技術情報を検索する方法
--http://support.microsoft.com/?kbid=249726

**コンポーネント開発 [#z2ffd0ac]
-[[[MS] COM テクノロジ ホーム:http://www.microsoft.com/japan/com/]]
-[[[MS] COM テクノロジ : プレゼンテーション:http://www.microsoft.com/japan/com/compres.asp]]
-[[[MS] COM テクノロジ : 関連技術情報:http://www.microsoft.com/japan/com/compapers.asp#archive]]
-[[[MS] Dr. GUI と ATL :http://www.microsoft.com/japan/msdn/library/ja/jpdnguion/htm/msdn_093098.asp]]
-[[[MS] Dr. GUI、コンポーネント、COM、および ATL を使う:http://www.microsoft.com/japan/msdn/library/ja/jpdnguion/htm/msdn_drguion020298.asp]]
-[[[MS] Dr. GUI と COM オートメーション、第1部:http://www.microsoft.com/japan/msdn/library/ja/jpdnguion/htm/drgui021099.asp]]
-[[[MS] Dr. GUI と COM オートメーション、第 2 部:COM の素晴らしきデータ型:http://www.microsoft.com/japan/msdn/library/ja/jpdnguion/htm/drgui032999.asp]]
-[[[MS] Dr. GUI と COM オートメーション、第 3 部:続 COM のすばらしきデータ型:http://www.microsoft.com/japan/msdn/library/ja/jpdnguion/htm/drgui042099.asp]]
-[[[MS] COM プログラミングの基本 (上):http://www.microsoft.com/japan/msdn/thisWeek/combasics/combasics1.asp]]
-[[[MS] COM プログラミングの基本 (中):http://www.microsoft.com/japan/msdn/thisWeek/combasics/combasics2.asp]]
-[[[MS] COM プログラミングの基本 (下):http://www.microsoft.com/japan/msdn/thisWeek/combasics/combasics3.asp]]
-[[初心者による VC++ プログラミング・メモ:http://sanaki-web.hp.infoseek.co.jp/code/atl/prog.htm]]
-[[Allergy Design Office > COMプログラミング:http://www.ops.dti.ne.jp/~allergy/com/com.html]]
-[[COM総合研究所 - COM研究室:http://www5.plala.or.jp/atata/com/]]
-[[ActiveX DSP:http://activex.adsp.or.jp/japanese/book/index.html]]
-[[COM,DCOMとは何か:http://homepage1.nifty.com/ttakao/computer/whatisdcom.htm]]

***COMイベント [#zc3be6d4]
-COMからのイベントを捕まえる方法
--http://www.s34.co.jp/cpptechdoc/misc/comevent/
-COM セキュリティでよく寄せられる質問
--http://support.microsoft.com/?kbid=158508
-ADO イベント モデルの例 (VC++)
--http://www.microsoft.com/japan/msdn/library/ja/jpado260/htm/mdevteventmodelxvc.asp
-ADO - Visual C++
--http://www.microsoft.com/japan/msdn/library/ja/jpado260/htm/mdconeventsvc.asp
-コネクトポイントの使い方(イベント)
--http://plaza21.mbn.or.jp/~takoyakusi/delphi/connectpoint.html
-コンパイラ COM サポートのサンプル
--http://www.microsoft.com/japan/msdn/library/ja/vcsample/html/_core_com_samples_index.asp
-CONNECT サンプル : コネクション ポイントの実装と使用例
--http://www.microsoft.com/japan/msdn/library/ja/vcsample/html/vcsmpconnectuseofconnectionpoints.asp

-Dr. GUI と COM イベント:第 1 部
--http://www.microsoft.com/japan/msdn/library/ja/jpdnguion/htm/drgui082399.asp
-Dr. GUI と COM イベント:第 2 部
--http://www.microsoft.com/japan/msdn/library/ja/jpdnguion/htm/drgui102599.asp
-Handling HTML Element Events
--http://msdn.microsoft.com/workshop/browser/mshtml/tutorials/sink.asp
-イベント処理と ATL
--http://www.microsoft.com/japan/msdn/library/ja/vccore/html/vcconeventhandlingprinciples.asp
-ActiveX Q&A, MSJ November, 1997 - Top Ten COM Myths
--http://www.microsoft.com/msj/1197/activex1197.aspx
-CodeGuru: COM Connection Points
--http://www.codeguru.com/Cpp/COM-Tech/atl/atl/article.php/c3623/

***ActiveX [#u49468a3]
-[ActiveX] OLE コントロールと ActiveX コントロールの相違点
--http://support.microsoft.com/?kbid=159621
-ActiveX テクノロジの概要 
--http://support.microsoft.com/?kbid=154544
-ActiveX テクノロジーの概要
--http://support.microsoft.com/?kbid=879760

***Insdie OLE のサンプルの場所 [#lde8aee2]
-MSDN ライブラリ 2001 年 10 月
 [Visual Studio 6.0 ドキュメント]
  +[Visual C++ ドキュメント]
   +[サンプル]
    +[SDK Sample]
     +[COM Samples]
      +[COM SDK Samples]
 
 「Click to open or copy the files for the COM samples.」のリンクをクリック。
 (表示されるまでに、ちょっと時間がかかります。)
 
-readme.txt
 COM Sample Directory Tree
 
 The COM directory contains several sample COM applications.
 
 Directory   Description
 
 COMMON      Common code used by all the OLE samples.
 INCLUDE     Common include files used by all the OLE samples.
 WINHLPRS    Library of Windows helper functions used by MFRACT and DFVIEW.
 
 BROWSE      OLE Automation controller that controls the BROWSEH inproc server.
 BROWSEH     OLE Automation server that browses a type library.
 BTTNCUR     Genertates BTTNCUR.DLL and BTTNCUR.LIB.
 CMALLSPY    Sample IMallocSpy implementation.
 COM         OLE tutorial samples.
 DEFO2V      Source code for the OLE2VIEW default object viewer DLL.
 DFVIEW      Docfile viewer.
 DISPCALC    OLE Automation sample program.
 DISPDEMO    Sample OLE Automation controller.
 DSPCALC2    OLE Automation sample program.
 GIZMOBAR    Generates GIZMOBAR.DLL and GIZMOBAR.LIB.
 HELLO       OLE automation server that implements a dual interface.
 LINES       OLE Automation implementing collections and subobjects.
 MFRACT      Custom interface sample.
 OLEAPT      OLE Apartment model threading sample.
 OLESTD      Generates OLESTD.LIB.
 OUTLINE     Series illustrating converting a Windows application to OLE.
 SIMPCNTR    Simple OLE container sample.
 SIMPDND     Simple drag and drop sample.
 SIMPSVR     Simple OLE server sample.
 SPOLY       OLE Automation sample polygon drawing program.
 SPOLY2      OLE Automation sample polygon drawing program.
 TIBROWSE    OLE Automation sample type library browser.
 
 Additional directories are created by these samples:
 
 LIB         Will contain library files generated during the build.
 BIN         Will contain many of the target .EXE and .DLL files.
 
 More details on each of these samples can be found in the readme.txt
 files found in these directories.
 
 To build all of these samples, use the following command
 
     nmake -a

***構造化ストレージ [#n6fe774d]
-[[構造化ストレージ(Structured Storage):http://www9.plala.or.jp/herm/Pages/Localized/Storage/]]
-[[複合ファイル ビューア/IStorageView:http://members.at.infoseek.co.jp/zzyyb/soft/sv/]]
-[[Structured Storage File Viewer Visual Studio Add-In:http://www.codeproject.com/macro/ssfview.asp]]
-[[[CodeGuru] CodeGuru: Structured Storage:http://www.codeguru.com/Cpp/COM-Tech/activex/storage/]]
-[[Structured Storage - The DocFile:http://www.codeproject.com/file/structstor.asp]]
-[[データの保存に関する技術白書:http://www.int21.co.jp/pcdn/magazine/misc/aplmanj.html]]
-[[フォーマット辞典 映像編 - しいしせねっと:http://siisise.net/image.html]]
-[[[MS] コンテナ : 複合ファイル:http://www.microsoft.com/japan/msdn/library/ja/vccore/html/_core_containers.3a_.compound_files.asp]]
-[[[MS] Windows XP で StgCreateDocFile() 関数により "STG_E_FILEALREADYEXISTS" エラーが発生する:http://support.microsoft.com/?kbid=323299]]
-[[[MS] Windows 2000 の StgCreateDocFile() 関数が原因で "STG_E_FILEALREADYEXISTS" エラーが発生する:http://support.microsoft.com/?kbid=322934]]
-[[[MS] 構造化ストレージ コードが無限ループに陥ることがある:http://support.microsoft.com/?kbid=234359]]
-[[[MS] IStorage::Commit を呼び出すときのエラー 0x80030111:http://support.microsoft.com/?kbid=281319]]
-[[[MS] Platform SDK: Structured Storage:http://msdn.microsoft.com/library/en-us/stg/stg/using_structured_storage.asp]]
 [Component Development]
  +[Structured Strage]
   +[Using Structured Storage]

***ドラッグ&ドロップ [#m3762a7f]
-ファイルのドロップを受け取るダイアログ
--http://www.athomejp.com/goldfish/mfc/dialog/dropfiles.asp
-ファイルのドロップ
--http://homepage2.nifty.com/DSS/VCPP/MFC/DragDrop/MFCFileDrop.htm
-OLE の背景知識
--http://www.microsoft.com/japan/msdn/library/ja/vccore/html/_core_ole_background.asp
-ドラッグ アンド ドロップ (OLE)
--http://www.microsoft.com/japan/msdn/library/ja/vccore/html/_core_drag_and_drop_.28.ole.29.asp
-Drag & Drop / MFC / Programming Tips
--http://hayakawa.atnifty.com/tips/old/pt-00000.html
-OLEによるDnD
--http://hp.vector.co.jp/authors/VA007799/tips/tips13.htm
-ドラッグ アンド ドロップ (ファイル名の獲得)
--http://mailsrv.nara-edu.ac.jp/~asait/visual_cpp/dialog2/drop/drop.htm
-CodeGuru: Drag & Drop
--http://www.codeguru.com/Cpp/controls/treeview/dragdrop/
-エクスプローラからのコピーについて
--http://homepage2.nifty.com/Mr_XRAY/Halbow/Notes/N022.html
-ドラッグ&ドロップ
--http://www.alles.or.jp/~baron/drag.html
-エクスプローラーへクリップボード経由でファイルをコピー、切り取りするには
--http://sapporo.cool.ne.jp/tanomi/qanda/a056.html
-自アプリから他アプリにDrag&Dropして起動するには
--http://forums.belution.com/ja/vc/000/220/92s.shtml
-Advanced Copy/Paste '& Drag/Drop Support
--http://www.codeguru.com/Cpp/W-P/clipboard/article.php/c3015/
-Simple Drag and Drop for List Boxes in 32-Bit Visual C++ Applications
--http://msdn.microsoft.com/archive/en-us/dnarvc/html/msdn_ddlist.asp
-Shell Drag/Drop Helper オブジェクト
--http://www.microsoft.com/japan/msdn/windows/windows2000/ddhelp_pt1.asp
-第2章:Drag & Drop
--http://www.yoh.u-tokyo.com/document.php?conffile=trash.conf&page=2
-ドラッグの開始と view へのドロップ
--http://www7.plala.or.jp/bunpan/htmldata/program/mfc/fol_001/mfc00121.html
-OLE Drag and Drop from scratch
--http://www.catch22.net/tuts/dragdrop.asp
-Shell Data Transfer
--http://netez.com/2xExplorer/shellFAQ/adv_drag.html

***クリップボードに関する情報 [#afdd4cac]
-クリップボードの中身をのぞき見る方法
--http://www.atmarkit.co.jp/fwin2k/win2ktips/103clipbook/103clipbook.html
-Clipboard
--http://www.codeguru.com/Cpp/W-P/clipboard/
-Clipboard articles
--http://www.codeproject.com/clipboard/
-Transferring Shell Objects with Drag-and-Drop and the Clipboard
--http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_programming/transferring/transfer.asp
-Supporting the Clipboard, DDE, and OLE in Applications
--http://msdn.microsoft.com/library/en-us/dnwui/html/msdn_ddeole.asp
-The Code Project - ClipSpy - Clipboard
--http://www.codeproject.com/clipboard/clipspy.asp

***ショートカットの作成 [#vf9a014b]
-ショートカットを作成するには
--http://www.runan.net/program/tips/sdk_03_CreateShortCut.shtml
-ショートカットの作成
--http://www.athomejp.com/goldfish/api/shortcut.asp
-ショートカットを作成する
--http://www.h4.dion.ne.jp/~fht/wptips/shortcut.html
-デスクトップ上にショートカットを作成する方法
--http://www.cisnet.or.jp/home/tsuneoka/win32tech/1.html
-CFileShortcut クラス
--http://www.geocities.co.jp/SiliconValley-SanJose/9190/shell/shortcut.html
-(スタートアップに) プログラムへのショートカットを作成するには?
--http://techtips.belution.com/ja/vc/0030/
-How to create and resolve a shortcut
--http://www.codeproject.com/shell/create_shortcut.asp
-Introduction to COM - What It Is and How to Use It.
--http://www.codeproject.com/com/comintro.asp
-How To Change the Icon of a Shortcut Through IShellLink
--http://support.microsoft.com/kb/179904/en-us
-The Create Shortcut command truncates the source path folder names to eight characters
--http://support.microsoft.com/kb/263324/en-us
-Shell Links
--http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_int/shell_int_programming/shortcuts/shortcut.asp

***シェル拡張 [#r5dc2180]
-シェルエクステンションって? 
--http://www.kab-studio.biz/Programing/Codian/ShellExtension/01.html
-Shell Instance オブジェクトによるシェル拡張の作成
--http://www.microsoft.com/japan/msdn/windows/windows2000/shellinstobj.asp
-Creating a Shell Namespace Extension
--http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_adv/namespaceextension/namespace.asp
-FAQ: Shell Namespace Extensions; Microsoft Internet Developer March 1999
--http://www.microsoft.com/mind/0399/faq/faq0399.asp
-Create Namespace Extensions for Windows Explorer with the .NET Framework
--http://msdn.microsoft.com/msdnmag/issues/04/01/WindowsShell/default.aspx
-The Complete Idiot's Guide to Writing Namespace Extensions - Part I - Shell Programming
--http://www.codeproject.com/shell/namespcextguide1.asp
-An almost complete Namespace Extension Sample
--http://www.codeproject.com/shell/NamespaceExtImpl.asp
-自分だけの Web 形式フォルダ
--http://www.microsoft.com/japan/msdn/library/ja/jpdnwebtool/htm/web.asp
-新年は新しいWindows Shellで飾ろう!
--http://pcweb.mycom.co.jp/special/2001/w32shell/
-Welcome to Shell+ Home
--http://www.shellplus.com/
-CodeGuru: Shell Programming
--http://www.codeguru.com/Cpp/COM-Tech/shell/

***特殊フォルダ [#yf1b648f]
-特殊フォルダ - いじくるつくーるのヘルプ
--http://park21.wakwak.com/~ayacy/inasoft/rnsf7help_20050110/HLP000203.html
-フォルダのリダイレクト
--http://www.microsoft.com/windows2000/ja/server/help/Folder.htm

**COM の使い方 [#q98c25d3]
-[[[MS] [HOWTO] Office オブジェクト モデルに関するドキュメントの検索および使用方法:http://support.microsoft.com?kbid=222101]]
-[[[MS] Microsoft Visual C++ 6.0 > オートメーション > How-To:http://support.microsoft.com/ph/3003/ja/?sid=235&aid=1]]

***Visual Basic [#lddd94c3]
-[[Set XXX = Nothingの本当の意味:http://homepage1.nifty.com/tsware/labo/labo_19.htm]]
-[[Nothingはメモリの節約になるのか?:http://homepage1.nifty.com/tsware/labo/labo_19.htm]]
-[[[MS] Visual Basic 開発者用 COM+ アプリケーション ガイドライン:http://www.microsoft.com/japan/com/wpaper/complusapps/complus_implementing.asp]]
-[[Visual BasicでCOMコンポーネントを使うには:http://www.itmedia.co.jp/help/howto/win/win2000/0007special/complus_vb/chap2/05.html]]

***For Visual Basic Developers [#peaba096]
-[[[MS] [OL2003] [HOWTO] Visual Basic を使用して Outlook を自動化する方法:http://support.microsoft.com?kbid=220595]]
-[[[MS] [XL2003] [HOWTO] Visual Basic を使用して Microsoft Excel を自動化する方法:http://support.microsoft.com?kbid=219151]]
-[[[MS] HOWTO: Navigate Excel Objects from Visual Basic:http://support.microsoft.com?kbid=147650]]
-[[[MS] HOWTO: Create Excel Chart w/OLE Automation from Visual Basic:http://support.microsoft.com?kbid=142387]]
-[[[MS] OFF: How to Use (OLE) Automation with Word:http://support.microsoft.com?kbid=184974]]
-[[[MS] [HOWTO] Visual Basic から Microsoft Word の差し込み印刷をオートメーションで実行する方法:http://support.microsoft.com?kbid=220607]]
-[[[MS] HOWTO: Automate PowerPoint Using Visual Basic:http://support.microsoft.com?kbid=222929]]
-[[[MS] SAMPLE: ExcelADO Demonstrates How to Use ADO to Read and Write Data in Excel Workbooks:http://support.microsoft.com?kbid=278973]]
-[[[MS] [OFF2003] [INFO] Office オートメーション サーバーの GetObject および CreateObject の動作:http://support.microsoft.com?kbid=288902]]

***Visual C++ Developers (using MFC) [#nafcd3d5]
-[[[MS] [HOWTO] MFC およびタイプ ライブラリを使用してオートメーション プロジェクトを作成する方法:http://support.microsoft.com?kbid=178749]]
-[[[MS] [HOWTO] MFC による Excel のオートメーションで新しいブックの作成や書式設定を行う方法:http://support.microsoft.com?kbid=179706]]
-[[[MS] HOWTO: Use MFC to Automate Excel and Fill a Range with an Array:http://support.microsoft.com?kbid=186120]]
-[[[MS] HOWTO: Use MFC to Automate Excel and Obtain an Array from a Range:http://support.microsoft.com?kbid=186122]]
-[[[MS] HOWTO: Automate Microsoft Word to Perform a Mail Merge Using Visual C++ and MFC:http://support.microsoft.com?kbid=220911]]
-[[[MS] HOWTO: Automate PowerPoint Using Visual C++ w/MFC:http://support.microsoft.com?kbid=222960]]
-[[[MS] References That You Must Set When You Work with Microsoft Access:http://support.microsoft.com?kbid=197110]]
-[[[MS] Visual C++ を使用して Office オートメーションを行う:http://support.microsoft.com?kbid=196776]]
-[[Using MS Office in an MFC Application:http://www.codeproject.com/com/xoffice.asp]]
-[[[MS] Automating Microsoft Office 97 and Microsoft Office 2000:http://msdn.microsoft.com/library/en-us/dno2kta/html/offaut.asp]]
-[[[MS] Microsoft Office Development with Visual Studio:http://msdn.microsoft.com/library/en-us/dnoffdev/html/vsofficedev.asp]]
-[[[MS] Automating Office with VC++: Knowledge Base Articles:http://msdn.microsoft.com/library/en-us/dno97ta/html/msoautovc.asp]]

***C/C++ Developers (without MFC) [#j2129d50]
-[[[MS] HOWTO: Automate Excel From C++ Without Using MFC or #import:http://support.microsoft.com?kbid=216686]]
-[[[MS] [HOWTO] C++ アプリケーションではなく C アプリケーションからの OLE オートメーションの使用方法:http://support.microsoft.com?kbid=181473]]

-[[[MS] Microsoft Office Development with Visual Studio(このサイトの下にサンプル色々):http://msdn.microsoft.com/library/techart/VSOfficeDev.htm#vsofficedev_topic21]]

-[[[MS] SAMPLE: FramerEx.exe Is an MDI ActiveX Document Container Sample Written in Visual C++:http://support.microsoft.com?kbid=268470]]
-[[[MS] [HOWTO] リンク (埋め込み) OLE ドキュメントを自動化する:http://support.microsoft.com?kbid=193039]]
-[[[MS] [OFF2003] [INFO] オートメーションにおける事前バインディングおよび実行時バインディングの使用:http://support.microsoft.com?kbid=245115]]

-[[Visual C++ Excel操作編:http://www.attain-sys.com/vc/excel/vc_excel.html]]
-[[[MS] HOWTO: Read Compound Document Properties Directly with VC++:http://support.microsoft.com/?kbid=186898]]

**IEコンポーネントの使い方 [#e5c37cb4]
-[[IEコンポーネントの使い方 [VC++の使い方]:http://www.nitoyon.com/vc/tips/ie_component.htm]]

**WMIの使い方 [#e1021d7f]
-[[ProgrammingTips:http://www3.tky.3web.ne.jp/~zatuy/program/index.html]]

**MSXMLの使い方 [#y7e29b7b]
-[[時代はXML [VC++の使い方]:http://www.nitoyon.com/vc/tips/xml/]]
-[[DOMプログラミング講座 / C++ アプリケーションから MSXML を使う:http://www.utj.co.jp/XML/DEV/dom/dxdom1_1.html]]
-[[XMLを用いた永続オブジェクトの試み:http://www.s34.co.jp/cpptechdoc/article/xml/persist/]]
-[[[MS] XML に関するよく寄せられる質問:http://www.microsoft.com/japan/msdn/library/ja/jpwebwk/xml/general/xmlfaq.asp]]
-[[[MS] 初心者のための XML DOM ガイド:http://www.microsoft.com/japan/msdn/xml/general/beginner.asp]]
-[[[MS] XML How-To インデックス:http://www.microsoft.com/japan/msdn/howto/howtoXML.asp]]
-[[[MS] インサイド MSXML パフォーマンス:http://www.microsoft.com/japan/msdn/columns/xml/xml02212000.asp]]
-[[[MS] [HOWTO] Document Object Model (DOM) のプログラミングによって 2 つの XML ドキュメントのデータをマージする方法:http://support.microsoft.com/?kbid=286817]]
-[[[MS] September 2001 Microsoft XML Core Services (MSXML) 4.0 RTM Release の新機能:http://www.microsoft.com/japan/msdn/xml/msxml/whatsnew40rtm.asp]]
-[[[MS] [HOWTO] Microsoft XML Parser をアップグレードする方法:http://support.microsoft.com/?kbid=324460]]
-[[[MS] コンピュータにインストールされた MSXML パーサーのバージョンを判別する:http://support.microsoft.com/?kbid=278674]]
-[[[MS] [INFO] Microsoft XML パーサーのバージョン一覧:http://support.microsoft.com/?kbid=269238]]

**ADOの使い方 [#q7259480]
-[[[MS] Microsoft Visual C++ での ADO の使用:http://www.microsoft.com/japan/developer/library/ado260/mdmscusingadowithmicrosoftvisualc.htm]]
-[[[MS] Visual C++ での ADO プログラミング:http://www.microsoft.com/japan/developer/library/ado260/mdhowhowvcusersshouldreadadodocumentation.htm]]
-[[[MS] ADO 用の Visual C++ Extensions:http://www.microsoft.com/japan/developer/library/ado260/mdmscadovcextensions.htm]]
-[[[MS] COM 用の Visual C++ 構文インデックス用の ADO:http://www.microsoft.com/japan/developer/library/ado260/mdidxadoforvcppsyntax.htm]]
-[[[MS] #import を使う Visual C++ 構文インデックス用の ADO:http://www.microsoft.com/japan/developer/library/ado260/mdidxadoforvcsyntaxindexwithimport.htm]]
-[[[MS] HOWTO: Using the ADO OpenSchema Method from Visual C++:http://support.microsoft.com/?scid=kb;EN-US;182831]]
-[[[MS] [HOWTO] C++ を使用した ADO レコードセットの XML への永続化サンプル:http://support.microsoft.com/?kbid=262450]]
-[[データベースラボラトリー:http://www.hi-ho.ne.jp/yomusu/labo/database.htm]]
-[[VC++テクニック : ADOを使ったデータベースアクセス:http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_ADO.html]]

***ADOレコードセットを配列として使う方法 [#o507e659]
#code c++
 #include <afx.h>
 #include <comdef.h>
 #import "C:\Program Files\Common Files\System\Ado\msado15.dll" rename("EOF", "adoEOF")
 using namespace ADODB;	// 名前空間

 #include <afxdisp.h>	// COleSafeArray
 #include <afxtempl.h>	// CArray
 typedef CArray< _variant_t, _variant_t& > CVariantArray;

// _variant_t の配列を取り扱うためのヘルパークラス
class CSafeVariantArray : public CVariantArray
{
public:
	operator LPVARIANT()
	{
		VariantArrayToSafeArray();
		return (LPVARIANT)m_sa;
	}
private:
	void VariantArrayToSafeArray()
	{
		COleSafeArray sa;
		int nSize = GetSize();
		sa.CreateOneDim( VT_VARIANT, nSize );
		for ( int i = 0; i < nSize; i++ )
		{
			long lArrayIndex = (long)i;
			_variant_t vValue = GetAt(i);
			sa.PutElement( &lArrayIndex, &vValue );
		}
		m_sa = sa;
		return;
	}
	COleSafeArray	m_sa;
};

/*
Sub FieldsAppendTest
    Dim rsTmp
    Set rsTmp = CreateObject("ADODB.Recordset")
    
    With rsTmp.Fields
        .Append "Field1", adVarChar, 80, adFldIsNullable
        .Append "Field2", adVarChar, 80, adFldIsNullable
    End With
    
    rsTmp.Open

    Dim vFieldList
    vFieldList = Array( "Field1", "Field2" )
    Dim vValues
    vValues = Array( "aaa", "bbb" )
    rsTmp.AddNew vFieldList, vValues
    
    vValues = Array( "CCC", "DDD" )
    rsTmp.AddNew vFieldList, vValues
    
    rsTmp.MoveFirst
    
    Dim fld
    Dim strLine
    Dim strName
    strLine = ""
    For Each fld In rsTmp.Fields
        strName = fld.Name
        strLine = strLine & strName & vbTab
    Next
    WScript.Echo strLine
    
    Dim strValue
    While Not rsTmp.BOF And Not rsTmp.EOF
        strLine = ""
        For Each fld In rsTmp.Fields
            strValue = fld.Value
            strLine = strLine & "[" & strValue & "]" & vbTab
        Next
        WScript.Echo strLine
        rsTmp.MoveNext
    Wend
End Sub
*/ [#j98e45c0]

void FieldsAppendTest()
{
	try
	{
		CoInitialize(NULL);
		ADODB::_RecordsetPtr rs;  // Recordsetオブジェクト

		// ADOオブジェクトの生成
		rs.CreateInstance( __uuidof(ADODB::Recordset) );

		rs->Fields->Append( L"Field1", adVarChar, 80, adFldIsNullable );
		rs->Fields->Append( L"Field2", adVarChar, 80, adFldIsNullable );
		rs->Open( vtMissing, vtMissing, adOpenForwardOnly, adLockOptimistic, adCmdUnknown );

		// テーブルのフィールドリスト用の配列を作成します
		CSafeVariantArray vaFieldList;
		vaFieldList.Add( _variant_t( L"Field1" ) );
		vaFieldList.Add( _variant_t( L"Field2" ) );

		CSafeVariantArray vaValues;
		vaValues.Add( _variant_t( L"aaa" ) );
		vaValues.Add( _variant_t( L"bbb" ) );
		// 1レコード目
		rs->AddNew( (LPVARIANT)vaFieldList, (LPVARIANT)vaValues );

		vaValues.RemoveAll();
		vaValues.Add( _variant_t( L"CCC" ) );
		vaValues.Add( _variant_t( L"DDD" ) );
		// 2レコード目
		rs->AddNew( (LPVARIANT)vaFieldList, (LPVARIANT)vaValues );

		rs->MoveFirst();

		long i = 0;
		long nFields = rs->GetFields()->GetCount();
		// 項目名
		for ( i = 0; i < nFields; i++ )
		{
			_bstr_t vName;
			_variant_t vValue;
			vName  = rs->GetFields()->GetItem(i)->GetName();
			_tprintf( _T("%s\t"), (LPCTSTR)vName );
		}
		_tprintf( _T("\n") );
		_tprintf( _T("-------------------------------------------------\n") );

		// レコード表示
		while ( !rs->GetBOF() && !rs->GetadoEOF() )
		{
			for ( i = 0; i < nFields; i++ )
			{
				_variant_t vValue;
				vValue = rs->GetFields()->GetItem(i)->GetValue();
				_tprintf( _T("[%s]\t"), (LPCTSTR)(_bstr_t)vValue );
			}
			_tprintf( _T("\n") );
			rs->MoveNext();
		}

		rs->Close();
	}
	catch ( _com_error& e )
	{
		_tprintf( _T("e.Description = [%s]\n"), (LPCTSTR)e.Description() );
		return;
	}
	catch ( ... )
	{
		_tprintf( _T("Fatal Error!\n") );
		return;
	}

	CoUninitialize();
}

int main( int argc, char* argv[] )
{
	FieldsAppendTest();

	return 0;
}
#end
 文字列の配列として COleSafeArray を使うのが味噌らしい。
-[MSDN ライブラリ 2001 年 10 月]
 [プラットフォーム SDK ドキュメント]
  +[プラットフォーム SDK ドキュメント]
   +[データ アクセス サービス]
    +[Microsoft ActiveX Data Objects (ADO)]
     +[セクション V: 付録]
      +[付録 C: ADO を使用したプログラミング]
       +[Microsoft Visual C++ での ADO の使用]
        +[Visual C++ での ADO プログラミング]

-Visual C++ での ADO プログラミング
--「SafeArray」
 SafeArray は、別のデータ型の配列を格納する構造化データ型です。
 SafeArray が "Safe (安全)" であるとされているのは、各配列の
 次元の範囲に関する情報を SafeArray が格納し、配列要素に対す
 るアクセスをそれらの範囲内に制限するためです。
 
 「ADO API リファレンス」で、「メソッドやプロパティが配列を取
 得する」、または「返す」というとき、メソッドやプロパティが、
 ネイティブ C/C++ 配列ではなく SafeArray を取得すること、また
 は返すことを意味します。
 
 たとえば、Connection オブジェクト OpenSchema メソッドの 2 番
 目のパラメータには、バリアント型 (Variant) の値の配列が必要
 です。これらのバリアント型 (Variant) の値は、SafeArray の要
 素として渡され、その SafeArray は別の Variant の値として設定
 されます。OpenSchema の 2 番目の引数として渡されるのは、別の
 バリアント型 (Variant) です。
 
 さらに別の例として、Find メソッドの最初の引数がバリアント型
  (Variant) で、その値が一次元の SafeArray の場合、AddNew の
 最初と 2 番目の任意の引数は、それぞれ一次元 SafeArray であり、
 GetRows メソッドの戻り値は、値が二次元 SafeArray のバリアン
 ト型 (Variant) です。

--「バリアント型 (Variant) 配列の使用」
 Visual Basic では、バリアント型 (Variant) 配列は Dim ステー
 トメントを使ってコーディングします。または、次のコード例にも
 あるように Array 関数を使うこともできます。
 
 Public Sub ArrayOfVariants
   Dim cn As ADODB.Connection
   Dim rs As ADODB.Recordset
   Dim fld As ADODB.Field
   
   cn.Open "DSN=pubs", "sa", ""
   rs = cn.OpenSchema(adSchemaColumns, Array(Empty, Empty, "authors", Empty))
   For Each fld in rs.Fields
      Debug.Print "Name = "; fld.Name
   Next fld
   rs.Close
   cn.Close
 End Sub
 
 次の Visual C++ の例では、_variant_t に使う SafeArray の使用方法を示します。
 
 注意   次の注意事項は、コード例のコメント部分に対応しています。
 
 1. もう一度、TESTHR() インライン関数を定義して、既存のエラー処理機能を利用します。
 
 2. 必要なのは一次元配列のみであり、汎用の SAFEARRAYBOUND 宣
    言と SafeArrayCreate 関数の代わりに 
    SafeArrayCreateVector が使えます。次の例は、
    SafeArrayCreate を使ったときのコードを示します。
 
    SAFEARRAYBOUND   sabound[1];
    sabound[0].lLbound = 0;
    sabound[0].cElements = 4;
    pSa = SafeArrayCreate(VT_VARIANT, 1, sabound);
 
 3. 列挙定数 adSchemaColumns で識別したスキーマは、4 つの定数
    列 (TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME、および 
    COLUMN_NAME) に関連付けられています。
    したがって、4 つの要素を持つバリアント型 (Variant) の値の
    配列が作成されます。
    次に、3 番目の列 TABLE_NAME に対応する制約値を指定します。
 
    返される Recordset は、さまざまな列で構成されています。こ
    のサブセットが制約列です。各戻り行に対する制約列の値は、
    対応する制約値と同じにします。
 
 4. SafeArrays に慣れていると、終了前に SafeArrayDestroy() が
    呼び出されないことに驚かれるかもしれません。実際、このと
    きに SafeArrayDestroy() を呼び出すと実行時例外処理になり
    ます。これは、_variant_t が範囲外になると SafeArray が解
    除されて、vtCriteria のデストラクタが VariantClear() を呼
    び出すためです。手動で _variant_t を消去せずに 
    SafeArrayDestroy を呼び出すと、デストラクタは無効な 
    SafeArray ポインタを消去しようとします。
 
 SafeArrayDestroy を呼び出すと、次のようなコードになります。
 
    TESTHR(SafeArrayDestroy(pSa));
    vtCriteria.vt = VT_EMPTY;
    vtCriteria.parray = NULL;
 ただし、_variant_t で SafeArray を管理する方がずっと簡単です。

#code c++
 #import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
    no_namespace rename("EOF", "EndOfFile")
 #include <stdio.h>


 // Note 1
 inline void TESTHR( HRESULT _hr ) 
 {
    if FAILED(_hr)
    {
       _com_issue_error(_hr);
    }
 }
 
 void main(void)
 {
    CoInitialize(NULL);
    try 
    {
       _RecordsetPtr   pRs("ADODB.Recordset");
       _ConnectionPtr  pCn("ADODB.Connection");
       _variant_t      vtTableName("authors"),
                       vtCriteria;
        long            ix[1];
       SAFEARRAY       *pSa = NULL;
     
       pCn->Open("DSN=pubs;User ID=sa;pwd=;Provider=MSDASQL;", "", "", 
                   adConnectUnspecified);
 // Note 2, Note 3
       pSa = SafeArrayCreateVector(VT_VARIANT, 1, 4);
       if (!pSa) 
       {
          _com_issue_error(E_OUTOFMEMORY);
       }
 
 // Specify TABLE_NAME in the third array element (index of 2). 
 
       ix[0] = 2;      
       TESTHR(SafeArrayPutElement(pSa, ix, &vtTableName));
 
 // There is no Variant constructor for a SafeArray, so manually set the 
 // type (SafeArray of Variant) and value (pointer to a SafeArray).
 
       vtCriteria.vt = VT_ARRAY | VT_VARIANT;
       vtCriteria.parray = pSa;
 
       pRs = pCn->OpenSchema(adSchemaColumns, vtCriteria, vtMissing);
 
       long limit = pRs->GetFields()->Count;
       for (long x = 0; x < limit; x++)
       {
          printf("%d: %s\n", x+1, ((char*) pRs->GetFields()->Item[x]->Name));
       }
 // Note 4
       pRs->Close();
       pCn->Close();
    }
    catch (_com_error &e)
    {
       printf("Error:\n");
       printf("Code = %08lx\n", e.Error());
       printf("Code meaning = %s\n", (char*) e.ErrorMessage());
       printf("Source = %s\n", (char*) e.Source());
       printf("Description = %s\n", (char*) e.Description());
    }
    CoUninitialize();
 }

#end

***SafeArray 関連情報 [#t7948bb9]
-[[[CodeGuru] What Is the Matrix?:http://www.codeguru.com/Cpp/COM-Tech/activex/misc/article.php/c5515/]]
-[[[CodeGuru] What Is the Matrix? -- Part 2:http://www.codeguru.com/Cpp/COM-Tech/activex/misc/article.php/c5521/]]
-[[[CodeGuru] What is the Matrix? -- Part 3, Streaming:http://www.codeguru.com/Cpp/COM-Tech/activex/misc/article.php/c5523/]]
-[[[CodeGuru] A Simple SafeArray Wrapper:http://www.codeguru.com/Cpp/COM-Tech/activex/misc/article.php/c2567/]]
-[[Using and Returning SafeArrays:http://www.geocities.com/Jeff_Louie/safearray.html]]
-[[ADOを簡単に使用する:http://homepage2.nifty.com/ts0/ADO.htm]]
-[[[MS] [INF] サンプル Cellset.exe: VC++ で ADOMD CellSet を使用する例:http://support.microsoft.com/?kbid=242793]]
-[[BSTR VARIANT SAFEARRAY:http://www.hi-ho.ne.jp/babaq/bstr.html]]
-[[ActiveXオートメーションの概要:http://homepage1.nifty.com/macbs/auto1.htm]]

***INIファイルをADOレコードセットに格納する方法 [#je476b53]
#ref(Ini2Ado.cpp)

**CDOの使い方 [#m02e84b2]
-[[[MS] [HOWTO] CDO for Windows 2000 を使用して日本語文字を送信する:http://support.microsoft.com/?kbid=284143]]
-[[[@IT] Windows標準機能とWSHを使ってメールを送信する:http://www.atmarkit.co.jp/fwin2k/win2ktips/428wshmail/wshmail.html]]
-[[[MS] CDO for Windows 2000:http://msdn.microsoft.com/library/en-us/cdosys/html/_cdosys_messaging_examples_creating_and_sending_a_message.asp]]

**VBScript.RegExpの使い方 [#y1ab3323]
-[[[CodeProject] Convenient wrapper of VBScript.RegExp for VC++:http://www.codeproject.com/cpp/regexp_vc.asp]]
-[[[CodeProject] Use regular expression in your C++ program:http://www.codeproject.com/string/use_regular_expression_in_your_program.asp]]
-[[βえんどるふぃん 正規表現の実装:http://www.aa.alpha-net.ne.jp/bosuke/trash/vbreg.htm]]

**Side-by-Side コンポーネントについて [#j1328101]
-[[[MS] DLL Hell の終わり:http://www.microsoft.com/JAPAN/developer/library/jptech/msdnnews/dll.htm]]
-[[[MS] Microsoft Windows 2000 アプリケーションの互換性:http://www.microsoft.com/japan/msdn/windows/windows2000/win2000appcomp.asp]]
-[[[MS] アプリケーションで共有する Side-by-Side コンポーネントの実装 (拡張):http://www.microsoft.com/japan/msdn/windows/windows2000/sidebyside.asp]]


*ATL/WTL に関する情報 [#s059cee6]
**ATL [#cad0b189]
-[[[MS] [INFO] ATL (Active Template Library) に関してよく寄せられる質問:http://support.microsoft.com/?kbid=166480]]
-[[COM プログラミング + ATL のつぼ:http://hakoten.com/com/]]
-[[[MS] ATL 3.0 ウィンドウ クラス: 入門:http://www.microsoft.com/japan/msdn/vs_previous/visualc/techmat/feature/ATLwindowing/]]
-[[[MS] ATLサーバー用の単純な MFC クライアントのインプリメント:http://www.microsoft.com/japan/msdn/vs_previous/visualc/techmat/feature/simple_client/]]
-[[[MS] Visual C++ 5.0 Simplifies the Process for Developing and Using COM Objects , MSJ May 1997:http://www.microsoft.com/msj/0597/visualc.aspx]]

**WTL [#q4c52162]
-[[Windows Template Library:http://user.ecc.u-tokyo.ac.jp/~rr26303/develop/wtl/wtl.html]]
-[[WTL 研究所:http://homepage1.nifty.com/Roy_/Software/WTL/WTL.htm]]
-[[WTL - Pu Stadium:http://hp.vector.co.jp/authors/VA016589/wtl/index.html]]
-[[かっとしの記録場所:http://www.mars.dti.ne.jp/~kattoshi/Program/]]
-[[The So-Software Studio - ATL/WTLによるWindowsプログラミング:http://home.att.ne.jp/banana/akatsuki/doc/atlwtl/index.html]]


*その他 [#a8073135]

**DLLの作り方 [#bde1e5a4]
-簡単なDLLサンプル
--http://www.athomejp.com/goldfish/mfc/dll/csample.asp
-[MS] [INFO] DLL とは
--http://support.microsoft.com/?kbid=815065
-共有DLLの使い方
--http://www.cisnet.or.jp/home/tsuneoka/win32tech/15.html

**サービスの作り方 [#p0faa063]
-EZ-NET 研究室: ATL でサービスプログラムを作ってみる
--http://program.station.ez-net.jp/special/vc/atl/service_vc6.asp
-ATL サービス
--http://www.microsoft.com/japan/developer/library/vcmfc/_atl_atl_services.htm
 [MSDN ライブラリ 2001 年 10 月]
  +[Visual Studio 6.0 ドキュメント]
   +[Visual C++ ドキュメント]
    +[リファレンス]
     +[Microsoft Foundation Class リファレンス]
      +[ATL (Active Template Library) リファレンス]
       +[解説]
        +[ATL サービス]
-Windowsサービスの覚書 
--http://nhiro4.ld.infoseek.co.jp/program/windows/service.html
-Win32(NT)プログラミングノウハウ集
--http://www02.so-net.ne.jp/~handa/deadend/trialWin32.html
-Win32サービス・サービス構成機能・サービスプログラム
--http://hata.cc/docs/Win32/1-2-3.html
-Windows NT サービスの作り方
--http://hp.vector.co.jp/authors/VA015815/200234.html#D20020821
-Creating a Windows NT/Windows 2000 Service 
--http://www.codeguru.com/Cpp/W-P/system/ntservices/article.php/c5701/
-Beginner's introductory guide to writing,installing,starting,stopping NT services - System
--http://www.codeproject.com/system/serviceskeleton.asp
-An Introduction to NT Services
--http://www.commsoft.com/services.html

**ホワイトペーパー [#c65887be]
-[MS] Windows XP 環境への既存アプリケーションの移行
--http://www.microsoft.com/japan/technet/prodtechnol/winxppro/deploy/exappmigratoxp.asp
-[MS] "Designed for Windows XP" ソフトウェアのテスト概要
--http://www.microsoft.com/japan/winlogo/software/swtestplan.mspx
-[MS] "Designed for Windows XP" アプリケーション仕様書 2.3 日本語版
--http://www.microsoft.com/downloads/details.aspx?FamilyID=0488c060-443c-42f7-b75f-4c5e73ffaca5&displaylang=ja
-[MS] Microsoft Windows Server 2003 アプリケーション仕様書
--http://www.microsoft.com/japan/windowsserver2003/partners/isvs/appspec.mspx
-[MS] "Designed for Windows XP" アプリケーションのテスト フレームワーク 1.1.1 日本語版
--http://www.microsoft.com/downloads/details.aspx?FamilyID=a8f1580e-0909-450b-bbee-b60a0a937f65&displaylang=ja
-[MS] ソフトウェア用 Windows ロゴ プログラム
--http://www.microsoft.com/japan/winlogo/software/downloads.mspx
-[MS] アプリケーションの Windows 2000 互換性テスト
--http://www.microsoft.com/japan/technet/prodtechnol/windows2000serv/reskit/deploy/part6/chapt-21.asp
-[MS] Windows Server 2003 Managing System Services
--http://www.microsoft.com/technet/prodtechnol/windowsserver2003/introduction/sptcfsys.mspx

**デザインパターン [#v9d195aa]
-C++で読むデザインパターン(Design Patterns read by C++)  
--http://member.nifty.ne.jp/yamazaki/doc/cpp_design_pattern.html
-C++ クラス設計に関するノート
--http://www.ogis-ri.co.jp/otc/hiroba/technical/CppDesignNote/
-オブジェクト指向におけるデザインパターン
--http://www.radiofly.to/nishi/design-pattern.html

**アクセシビリティ [#vcb61739]
***UI(ユーザーインターフェイス) [#t5ede19e]
-MSDN ライブラリ - 2004 年 4 月版
 [ユーザー インターフェイス デザインおよび開発]
  +[ユーザー インターフェイス デザインおよび開発
   +[アクセシビリティ]
    +[技術文書]
     +[キーボード ユーザー インターフェイス設計のガイドライン]

**コンパイルオプション [#pcdedffd]
-マクロを展開する方法
--コンパイルオプションで「/P」を指定するとプリプロセスの処理結果が「*.i」というファイルに保存される。

 cl test.cpp /P

--変換前
#code c++ 
 int main( int argc, char* argv[] )
 {
     printf( "_MAX_PATH = [%d]\n", _MAX_PATH );
     return 0;
 }
#end

--変換後
#code c++ 
 int main( int argc, char* argv[] )
 {
     printf( "_MAX_PATH = [%d]\n", 260 );
     return 0;
 }
#end

**コマンドラインからのビルド [#g636473b]
-[[[MS] コマンド ラインからのプロジェクトのビルド:http://www.microsoft.com/JAPAN/developer/library/vcug/_asug_building_a_project_from_the_command_line.htm]]

**インテリセンス [#c56eba63]
-[[VC++ 6.0 インテリセンスが使用できなくなったときの対処方法 - ふくろうの知恵袋:http://live.under.jp/todashou/tips/VC++/intellisense.html]]

**コンソールアプリでリソースファイルを利用する方法 [#h095a25f]
#code c++
// test.rc
#include "resource.h"
#include "afxres.h"

STRINGTABLE DISCARDABLE 
BEGIN
    IDS_TEST	"Resource File Test [%s]"
END
#end

#code c++
// resource.h
#define IDS_TEST	1000
#end

#code c++
// test.cpp
#include <afx.h>
#include "resource.h"

int main( int argc, char* argv[] )
{
	CString strData;
	strData.Format( IDS_TEST, _T("aaa") );
	_tprintf( _T("strData = [%s]\n"), (LPCTSTR)strData );
	
	return 0;
}
#end

-コンパイル
 rc test.rc
 cl test.cpp test.res /MT
-実行結果
 >test
 strData = [Resource File Test [aaa]]

**ドキュメント自動生成 [#vd8ddaba]
-[[Doxygen>Software/Doxygen]]


**セキュアプログラミング [#he8533bb]
-[[[IPA] IPA ISEC セキュア・プログラミング講座:http://www.ipa.go.jp/security/awareness/vendor/programming/]]
-[[[IPA] セキュアなWEBサーバーの構築と運用に関するコンテンツ:http://www.ipa.go.jp/security/awareness/administrator/secure-web/]]
-[[[MS] バッファ オーバーランを解消せよ!:http://www.microsoft.com/japan/msdn/columns/secure/secure05202002.asp]]
-[[Secure Programming 関連:http://homepage1.nifty.com/mcn/glossary/security/secure_programming.htm]]
-[[プログラマのためのセキュリティ対策テクニック:http://www.amazon.co.jp/exec/obidos/ASIN/4891002913/]]
--[[プログラマのためのセキュリティ対策テクニック - 目次:http://www.microsoft.com/japan/msdn/net/security/securecode/contents.asp]]
 5.8.1 通常のユーザーとして実行した場合にアプリケーションがエラーを発生する理由
 5.8.2 アプリケーションが失敗する理由を判定する方法
 セキュリティが原因となってアプリケーションが失敗する理由を判定する方法
 ・Windows イベントビューア
 →[ローカルポリシー] - [監査ポリシー] - [特権使用の監査] 
 ・RegMon( http://www.sysinternals.com/ で入手可能 )
 ・FileMon( http://www.sysinternals.com/ で入手可能 )
 →Access Denied のエラーチェック

**暗号化 [#u221243b]
***Crypto API [#u8530a0b]
-MSDN ライブラリ 2001年10月
 [Platform SDK ドキュメント]
  +-[Security]
     +-[Cryptography]
        +-[CryptoAPI]
           +-[About CryptoAPI]
           +-[Using CryptoAPI]
           +-[CryptoAPI Reference]
 
-MSDN ライブラリ 2004年 4月
 [Security (英語)]
  +-[Security (General)]
     +-[SDK Documentation]
        +-[Cryptography]
           +-[About Cryptography]
           +-[Using Cryptography]
           +-[Cryptography Reference]
-使い方
 <暗号化処理の初期化>
 1. デフォルトキーコンテナの取得。
    CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, 0)
 2. デフォルトキーコンテナの作成(1. の処理に失敗した場合)
    CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET)
 
 <暗号化処理>
 1. デフォルトキーコンテナの取得。
    CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, 0)
 2. ハッシュオブジェクトの作成。
    CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash)
 3. パスワード文字列のハッシュの取得。
    CryptHashData(hHash, (BYTE*)szPassword, dwLength, 0)
 4. パスワードのハッシュを元にセッションキーを作成。
    CryptDeriveKey( hProv, CALG_RC4, hHash, CRYPT_EXPORTABLE, &hKey)
 5. 暗号化処理。
    CryptEncrypt(hKey, 0, TRUE, 0, pbBuffer, &dwLength, dwLength )
 6. セッションキーの削除
    CryptDestroyKey(hKey)
 7. ハッシュオブジェクトの削除。
    CryptDestroyHash(hHash);
 7. ハッシュオブジェクトの削除。
    CryptDestroyHash(hHash)
 8. キーコンテナの解放
    CryptReleaseContext(hProv, 0)
 
 <復号化処理>
 1. デフォルトキーコンテナの取得。
    CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, 0)
 2. ハッシュオブジェクトの作成。
    CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash)
 3. パスワード文字列のハッシュの取得。
    CryptHashData(hHash, (BYTE*)szPassword, dwLength, 0)
 4. パスワードのハッシュを元にセッションキーを作成。
    CryptDeriveKey( hProv, CALG_RC4, hHash, CRYPT_EXPORTABLE, &hKey)
 5. 暗号化処理。
    CryptDecrypt(hKey, 0, TRUE, 0, pbBuffer, &dwLength, dwLength )
 6. セッションキーの削除
    CryptDestroyKey(hKey)
 7. ハッシュオブジェクトの削除。
    CryptDestroyHash(hHash)
 8. キーコンテナの解放
    CryptReleaseContext(hProv, 0)

-[[[MS] CryptAcquireContext:http://msdn.microsoft.com/library/en-us/security/security/cryptacquirecontext.asp]]

-[[[MS] Acquiring a Cryptographic Context and Generating Keys:http://msdn.microsoft.com/library/en-us/security/security/acquiring_a_cryptographic_context_and_generating_keys.asp]]
--[[[MS] Example C Program: Creating a Key Container and Generating Keys:http://msdn.microsoft.com/library/en-us/security/security/example_c_program_creating_a_key_container_and_generating_keys.asp]]
--[[[MS] Example C Program: Using CryptAcquireContext:http://msdn.microsoft.com/library/en-us/security/security/example_c_program_using_cryptacquirecontext.asp]]
--[[[MS] Example C Program: Enumerating CSP Providers and Provider Types:http://msdn.microsoft.com/library/en-us/security/security/example_c_program_enumerating_csp_providers_and_provider_types.asp]]
--[[[MS] Example C Program: Deriving a Session Key from a Password:http://msdn.microsoft.com/library/en-us/security/security/example_c_program_deriving_a_session_key_from_a_password.asp]]
--[[[MS] Example C Program: Duplicating a Session Key:http://msdn.microsoft.com/library/en-us/security/security/example_c_program_duplicating_a_session_key.asp]]
--[[[MS] Example C Program: Setting and Getting Session Key Parameters:http://msdn.microsoft.com/library/en-us/security/security/example_c_program_setting_and_getting_session_key_parameters.asp]]
--[[[MS] Example C Program: Exporting a Session Key:http://msdn.microsoft.com/library/en-us/security/security/example_c_program_exporting_a_session_key.asp]]

-[[猫でもわかるプログラミング:http://www.kumei.ne.jp/c_lang/]]
--[[[猫プロ] 第263章 ファイル暗号化の基礎:http://www.kumei.ne.jp/c_lang/sdk3/sdk_263.htm]]
--[[[猫プロ] 第264章 暗号化の前準備:http://www.kumei.ne.jp/c_lang/sdk3/sdk_264.htm]]
--[[[猫プロ] 第265章 ファイルの暗号化:http://www.kumei.ne.jp/c_lang/sdk3/sdk_265.htm]]
--[[[猫プロ] 第266章 ファイルの復号:http://www.kumei.ne.jp/c_lang/sdk3/sdk_266.htm]]
--[[[猫プロ] 第267章 ハッシュ その1:http://www.kumei.ne.jp/c_lang/sdk3/sdk_267.htm]]
--[[[猫プロ] 第268章 ハッシュ その2:http://www.kumei.ne.jp/c_lang/sdk3/sdk_268.htm]]
--[[[猫プロ] 第269章 ハッシュ その3:http://www.kumei.ne.jp/c_lang/sdk3/sdk_269.htm]]
--[[[猫プロ] 第270章 ハッシュ その4:http://www.kumei.ne.jp/c_lang/sdk3/sdk_270.htm]]

-[[セキュリティ API に関する技術調査:http://www.ipa.go.jp/security/fy15/reports/sec_api/]]
--[[[IPA] [PDF] アーキテクチャ・機能・暗号技術とアルゴリズム:http://www.ipa.go.jp/security/fy15/reports/sec_api/documents/api2003_1.pdf]]
--[[[IPA] [PDF] Java JCE(Java Cryptographic Extensions):機能と利用法:http://www.ipa.go.jp/security/fy15/reports/sec_api/documents/api2003_2.pdf]]
--[[[IPA] [PDF] .NET Crypto API:機能と利用法:http://www.ipa.go.jp/security/fy15/reports/sec_api/documents/api2003_3.pdf]]
--[[[IPA] [PDF] IC カードなどのハードウェアトークンAPI:http://www.ipa.go.jp/security/fy15/reports/sec_api/documents/api2003_4.pdf]]
--[[[IPA] [PDF] バイオメトリック認証のAPI:http://www.ipa.go.jp/security/fy15/reports/sec_api/documents/api2003_5.pdf]]

-[[初心者による プログラミング・メモ:http://sanaki-web.hp.infoseek.co.jp/code/index.htm]]
--[[初心者の CAPI メモ:http://sanaki-web.hp.infoseek.co.jp/code/capi.htm]]
--[[初心者の CAPICOM メモ:http://sanaki-web.hp.infoseek.co.jp/code/capicom.htm]]

-[[[MS] MSDN Magazine, 2003 年 11 月:http://www.microsoft.com/japan/msdn/msdnmag/]]
--[[[MS] コード内のデータベース接続文字列やその他の機密設定を保護する:http://www.microsoft.com/japan/msdn/msdnmag/issues/03/11/ProtectYourData/]]

***CAPICOM [#c9cecb5f]
-[[[MS] CAPICOM Reference:http://msdn.microsoft.com/library/en-us/security/security/capicom_reference.asp]]
-[[[MS] Platform SDK Redistributable : CAPICOM:http://www.microsoft.com/downloads/details.aspx?FamilyID=860EE43A-A843-462F-ABB5-FF88EA5896F6&displaylang=ja]]
-[[kawabata.com フォーラム / SQL Server > 製品、ツール > CAPICOM:http://www.kawabata.com/Forums/ShowPost.aspx?PostID=103]]
-[[[SQLPASSJ] SQL Server ユーザーグループ / 過去ログ / セキュリティ:http://www.sqlpassj.org/bbs/ml_disp.aspx?detail_mode=1&forum_id=2&message_id=12648]]

***DPAPI [#w2170707]
-[[[MS] DPAPI (データ保護 API) のトラブルシューティング:http://support.microsoft.com/?kbid=309408]]
-[[[MS] Windows Data Protection:http://msdn.microsoft.com/library/en-us/dnsecure/html/windataprotection-dpapi.asp]]

***その他 [#v08bc578]
-[[SPG 暗号化方式のC/C++ 実装ソースコード:http://hp.vector.co.jp/authors/VA031450/spg/spgccppcode.htm]]
-[[BlowFishでファイル暗号化:http://www22.big.or.jp/~qul/program/text/route004.html]]
**アセンブラ [#nba5b632]
-[[アセンブラ入門:http://www5c.biglobe.ne.jp/~ecb/assembler/assembler00.html]]
-[[アセンブラでの高速化:http://www.csl.sony.co.jp/person/fnami/asm.htm]]
-[[Technical Assembler:http://www.e-net.or.jp/user/missing-link/assembler/menu.html]]
-[[アセンブリ言語入門:http://black.sakura.ne.jp/~third/programming/asm/assembly.html]]
-[[chi のページ - クラック講座:http://members.at.infoseek.co.jp/zzyyb/crack/index.html]]
-[[最適化の為のアセンブラ入門:http://tt.sakura.ne.jp/~suzu/asm/]]

**Windowsハック [#d90cfaee]
-[[chiのページ/Windows ハック:http://members.at.infoseek.co.jp/zzyyb/hack/winhack.html]]
-[[chiのページ/クラック講座:http://members.at.infoseek.co.jp/zzyyb/crack/index.html]]

**アクセシビリティ [#kdd216b8]
-[[[MS] Accessibility Developer Center:http://www.microsoft.com/japan/msdn/accessibility/]]
-[[[MS] キーボード ユーザー インターフェイス設計のガイドライン:http://www.microsoft.com/japan/msdn/accessibility/general/ATG_KeyboardShortcuts.asp]]

**コモンダイアログに関する情報 [#uc1656b9]
-[[[MS] Names of Previously Opened and Saved Files Appear in Typical Windows Explorer-Style Dialog Boxes in Windows Me and Windows 2000:http://support.microsoft.com/?scid=kb;EN-US;319958]]
-[[[MS] Names of Previously Opened and Saved Files Appear in Typical Windows Explorer-Style Dialog Boxes in Windows XP:http://support.microsoft.com/?scid=kb;EN-US;322948]]
-[[[MS] Open and Save As Dialog Boxes:http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/aboutcommondialogboxes/openandsaveasdialogboxes.asp]]

**サーバー一覧の取得 [#b59799eb]
-Microsoft ネットワークを解剖する第3回「ブラウジング機能」
--http://www.monyo.com/technical/windows/msnet/msnet3.html


**MSDN [#lf77e804]
-[[MSDNの歩き方:http://www.cuore.co.jp/msdn.htm]]

**PocketPC [#dc2d971c]
-[[[MS] Mobile Device - Pocket PC プログラミングガイド:http://www.microsoft.com/japan/windowsmobile/pocketpc/techpapers/techguide/]]

----

//#comment
#access
//#access



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS