理科の市教研用ソフト
理科の市教研のファイルを今年からCD-Rに配布することになった。
ところが、配布先は、子どもたち(保護者も)
そういうわけで、CD-Rから読み込んですぐに、パワーポイントが開くように設計する必要があった。
でも、複数のパワーポイントのデータを簡単に開く方法が思い当たらない。
普通は、エクスプローラーから、たどればよいが、それは、すべての保護者にできることではない。
また、パワーポイントビューアーをCD-Rにautorunで自動起動するようにしても、
デフォルトのファイル参照先やマイドキュメントなので、発見できずに、苦情がくるだろう。
従って、専用のソフトを作り、ソフトごしにパワーポイントビューアが
任意のファイルを自動起動するためのシステムを構築する。
で、そのCd-Rに焼くためのデータファイル自体も、自動的に作成される必要がある。
そこらへんを作った。
やっつけ仕事。
自動起動した後のソースコードをいかに記述する。
久しぶりのVC++ MFC なので、懐かしい。
友達とチャットしながら、保護者とメールしながら・・。
// TODO: 特別な初期化を行う時はこの場所に追加してください。 //BMPを2つ用意する。 CBitmap myBMP; CImageList m_imageList; HTREEITEM m_HndTree[256]; CString szExplain[256]; //ファイルを読み込む CString ss; CStdioFile fin("a.txt", CFile::modeRead); int i = 1; char* cfileName, cFolderName; int iFolderNum;//フルパスからフォルダまでの文字列の長さ CString szSameFolder[256]; //過去に同じフォルダがあるかチェックをする。 unsigned int iSameFolder = 0; //同じフォルダの個数 //ツリーのアイコンの設定 m_imageList.Create(16,16, ILC_COLOR, 2, 6 ); myBMP.LoadBitmap(IDB_BITMAP1); m_imageList.Add( &myBMP, COLORREF(0)); myBMP.DeleteObject(); myBMP.LoadBitmap(IDB_BITMAP2); m_imageList.Add( &myBMP, COLORREF(0)); myBMP.DeleteObject(); // m_tree.SetImageList( &m_imageList, TVSIL_NORMAL); m_HndTree[0] = m_tree.InsertItem("自由研究", TVI_ROOT); while( fin.ReadString(ss)) { //m_treeview.InsertItem(ss, htree, TVI_LAST); szExplain[i].Format("%s",ss); CString szBuffer; char* p = new char[ss.GetLength()+1]; strcpy(p, ss); cfileName = strstr( p, "\\"); szBuffer.Format("%s", cfileName+1); //ファイル名 for ( unsigned int iCounter = 0; iCounter < strlen( p );iCounter++ ) { if ( p[iCounter] == '\\') { break; } } p[iCounter] = '\0';// フォルダ名 //過去に同じフォルダがないかチェックをする。 CString s; s.Format("%s", p ) ; bool isHit = false; for ( iCounter = 0; iCounter < (unsigned int)i; iCounter++ ) { CString x; x.Format("%s", m_tree.GetItemText( m_HndTree[iCounter])); if ( s.Compare( x ) == 0 ) { isHit = true; break; } } //フォルダ追加 if ( isHit == false ) { m_HndTree[i] = m_tree.InsertItem( p, m_HndTree[0] ); i++; } //ファイル名検索 同じデータ for ( iCounter = 0; iCounter < (unsigned int)i; iCounter++ ) { CString x; x.Format("%s", m_tree.GetItemText( m_HndTree[iCounter])); if ( s.Compare( x ) == 0 ) { isHit = true; break; } } if ( isHit == true ) { m_HndTree[i] = m_tree.InsertItem( cfileName+1, m_HndTree[iCounter] ); m_tree.SetItemImage(m_HndTree[i],0,1); i++; } /* for ( iCounter = 0; iCounter < iSameFolder; iCounter++ ) { ; CString s; s.Format("%s", p ); if ( s.Compare( szSameFolder[iCounter] ) != 0 ) { //フォルダ追加 m_HndTree[i] = m_tree.InsertItem( p, m_HndTree[0] ); iSameFolder++; i++; } } */ szBuffer.Format("%s", p ); // szBuffer.Format("%s", ss.Right( ss.Find('\\'))); // szBuffer = ss.Left( ss.Find("\\")-1); // m_HndTree[i] = m_tree.InsertItem(szBuffer, TVI_ROOT); delete[] p; } fin.Close();