理科の市教研用ソフト

理科の市教研のファイルを今年から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();