<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/style/rss/style.xsl" type="text/xsl" media="screen"?>
<rss version="2.0">
	<channel>
		<title>iamgsi</title>
		<link>http://iamgsi.com/</link>
		<description>.NET 부분 언어를 배우고 있습니다. 
WPF를 중점적으로 웹 환경의 웹 서비스 ... 
방문하신 분들에게 도움이 조금은 되면 좋겠네요. 
오시면 방명록에 글이라도 좀 남겨 주세요 ^^. 
서로 공유 하면서 프로그램을 즐겨 봅시다.</description>
		<language>ko</language>
		<pubDate>Wed,  8 Oct 2008 14:26:15 +0900</pubDate>
		<generator>Tistory 1.1 (http://www.tistory.com/)</generator>
		<image>
		<title>iamgsi</title>
		<url><![CDATA[http://cfs5.tistory.com/upload_control/download.blog?fhandle=YmxvZzE1OTM5NEBmczUudGlzdG9yeS5jb206L2F0dGFjaC8wLzE3MDAwMDAwMDA1Ny5wbmc=]]></url>
		<link>http://iamgsi.com/</link>
		<description>.NET 부분 언어를 배우고 있습니다. 
WPF를 중점적으로 웹 환경의 웹 서비스 ... 
방문하신 분들에게 도움이 조금은 되면 좋겠네요. 
오시면 방명록에 글이라도 좀 남겨 주세요 ^^. 
서로 공유 하면서 프로그램을 즐겨 봅시다.</description>
		</image>
		<item>
			<title>DirectoryPath (폴더 선택) 선택하기</title>
			<link>http://iamgsi.com/entry/DirectoryPath-%ED%8F%B4%EB%8D%94-%EC%84%A0%ED%83%9D-%EC%84%A0%ED%83%9D%ED%95%98%EA%B8%B0</link>
			<description>&lt;P&gt;void ChoiceDirectoryPath(char* pathFolder)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;ASSERT( pathFolder );&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;sprintf( pathFolder, &quot;&quot; );&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;//CString m_strDirPath;&lt;br /&gt;
&amp;nbsp;ITEMIDLIST *pidlBrowse;&lt;br /&gt;
&amp;nbsp;char pszPathname[MAX_PATH];&lt;br /&gt;
&amp;nbsp;BROWSEINFO BrInfo;&lt;br /&gt;
&amp;nbsp;BrInfo.hwndOwner = NULL; //GetSafeHwnd();&lt;br /&gt;
&amp;nbsp;BrInfo.pidlRoot = NULL;&lt;br /&gt;
&amp;nbsp;memset( &amp;amp;BrInfo, 0, sizeof(BrInfo) );&lt;br /&gt;
&amp;nbsp;BrInfo.pszDisplayName = (LPSTR)pszPathname;&lt;br /&gt;
&amp;nbsp;BrInfo.lpszTitle = _T(&quot;폴더를 선택해 주세요.&quot;);&lt;br /&gt;
&amp;nbsp;BrInfo.ulFlags = BIF_RETURNONLYFSDIRS;&lt;br /&gt;
&amp;nbsp;// 다이얼로그 뛰우기&lt;br /&gt;
&amp;nbsp;pidlBrowse = SHBrowseForFolder(&amp;amp;BrInfo);&lt;br /&gt;
&amp;nbsp;if(pidlBrowse != NULL)&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;BOOL bSuccess = ::SHGetPathFromIDList(pidlBrowse, (LPSTR)pszPathname);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if( bSuccess )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;sprintf( pathFolder, &quot;%s&quot;, pszPathname );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;// 사용할때&lt;br /&gt;
&amp;nbsp;char szDirectory[MAX_PATH];&lt;br /&gt;
&amp;nbsp;ZeroMemory( szDirectory, sizeof(szDirectory) );&lt;br /&gt;
&amp;nbsp;ChoiceDirectoryPath( szDirectory );&lt;br /&gt;
&amp;nbsp;if( strlen(szDirectory) &amp;lt;= 0 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;
&lt;/P&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>MFC Copy Code</category>
			<category>BROWSEINFO</category>
			<category>DirectoryPath</category>
			<category>SHBrowseForFolder</category>
			<author>gsi</author>
			<guid>http://iamgsi.com/409</guid>
			<comments>http://iamgsi.com/entry/DirectoryPath-%ED%8F%B4%EB%8D%94-%EC%84%A0%ED%83%9D-%EC%84%A0%ED%83%9D%ED%95%98%EA%B8%B0#entry409comment</comments>
			<pubDate>Wed,  8 Oct 2008 14:25:56 +0900</pubDate>
		</item>
		<item>
			<title>File Save, Open Dialog</title>
			<link>http://iamgsi.com/entry/File-Save-Open-Dialog</link>
			<description>&lt;P&gt;void CDlgProgPage::OnBnClickedBtnProgBackgroundload()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;// 이미지 로드 - 여기에 오픈 다이얼로그를 적용해야징.&lt;br /&gt;
&amp;nbsp;// 이미지가 로드 되고 나면 화면을 업데이트 한다.&lt;br /&gt;
&amp;nbsp;CFileDialog OpenDlg( TRUE, &quot;Add Files&quot;, &quot;*.*&quot;, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&quot;Bitmap Files(*.*)|*.bmp|Jpeg Files(*.*)|*.jpg|PNG Files(*.*)|*.png|AVI Files(*.*)|*.avi|All Files(*.*)|*.*|&quot; );&lt;/P&gt;
&lt;P&gt;&amp;nbsp;if( OpenDlg.DoModal() == IDOK )&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;// 이미지 정보를 View로 보낸다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;g_ProgView-&amp;gt;SetBackgroundImage(GetImage(OpenDlg.GetPathName()));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;// 백그라운드 이미지가 있다면 체크박스 속성을 활성화 한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;CheckBackgroundImage();&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
}&lt;/P&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>MFC Copy Code</category>
			<category>CFileDialog</category>
			<category>fileopen</category>
			<category>filesave</category>
			<author>gsi</author>
			<guid>http://iamgsi.com/408</guid>
			<comments>http://iamgsi.com/entry/File-Save-Open-Dialog#entry408comment</comments>
			<pubDate>Wed,  8 Oct 2008 14:21:30 +0900</pubDate>
		</item>
		<item>
			<title>아놔.. 3주 데이터 싹 날렸네욤.. @.@..</title>
			<link>http://iamgsi.com/entry/%EC%95%84%EB%86%94-3%EC%A3%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8B%B9-%EB%82%A0%EB%A0%B8%EB%84%A4%EC%9A%A4</link>
			<description>&lt;br /&gt;
모니터링 툴 개발 코드를 싸그리 날렸네욤.. 덜덜덜..&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfs2.tistory.com/original/19/tistory/2008/10/07/00/03/48ea28df6975f&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfs2.tistory.com/image/19/tistory/2008/10/07/00/03/48ea28df6975f&quot; alt=&quot;&quot; filemime=&quot;&quot; filename=&quot;크기변환_DSC00231.JPG&quot; height=&quot;225&quot; width=&quot;300&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
사실 요놈으로 출퇴근 하면서 개발중이긴 한데.. &lt;br /&gt;
이것도 하다 보니 키보드 치는게 느는군요.. 사람이란게 대단한건지...&lt;br /&gt;
&lt;br /&gt;그래도 이걸로 VS 2008, Blend 등등을 다 돌려 가면서 작은 화면에서&lt;br /&gt;
하다 보면 지하철에서 이상한 넘이라고 가끔 보는 사람들도 있더군요.. &lt;br /&gt;
아마도 그 분들은 프로그램을 하신 분들일듯 합니다. ^^.. &lt;br /&gt;
&lt;br /&gt;다시금.. 목표를 세우고.. 작업을 해야 될듯 합니다.&lt;br /&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>내 일상</category>
			<author>gsi</author>
			<guid>http://iamgsi.com/403</guid>
			<comments>http://iamgsi.com/entry/%EC%95%84%EB%86%94-3%EC%A3%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8B%B9-%EB%82%A0%EB%A0%B8%EB%84%A4%EC%9A%A4#entry403comment</comments>
			<pubDate>Tue,  7 Oct 2008 00:05:44 +0900</pubDate>
		</item>
		<item>
			<title>WPF 를 이용한 Monitoring 툴 개발중...</title>
			<link>http://iamgsi.com/entry/WPF-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-Monitoring-%ED%88%B4-%EA%B0%9C%EB%B0%9C%EC%A4%91</link>
			<description>&lt;br /&gt;
DB, Webservice, C#, WPF를 통합적으로 공부 하기 위해서.&lt;br /&gt;
현재 모니터링 툴을 하나 개발 중이다.&lt;br /&gt;
&lt;br /&gt;대충 이런 개념이다.&lt;br /&gt;
&lt;br /&gt;프로그램을 하다 보면 로그를 남겨야 하고,&lt;br /&gt;
그 로그로 인한 상태 정보를 파악하고자 할때가 많다.&lt;br /&gt;
그래서 그 로그 정보를 해당 DB로 저장하도록 한다.&lt;br /&gt;
&lt;br /&gt;웹 서비스를 통해서 해당 로그 정보를 DB로 저장하게 된다.&lt;br /&gt;
&lt;br /&gt;그리고 모니터링 툴은 현재 변경된 정보만을 DB에서 웹 서비스를 통해서&lt;br /&gt;
지속적으로 화면에 출력하게 된다.&lt;br /&gt;
&lt;br /&gt;출력되는 내용에 따라서 에러나 경고 메시지는 창을 통해서 새롭게 출력이 되게 된다.&lt;br /&gt;
&lt;br /&gt;대충 이런 개념이다.&lt;br /&gt;
&lt;br /&gt;현재 DB, 웹 서비스 부분은 완료 되었으며,&lt;br /&gt;
모니터링 툴의 UI 부분도 대충은 마무리가 되어 가고 있다.&lt;br /&gt;
&lt;br /&gt;심플하게 구성해 봤지만. &lt;br /&gt;
다양한 어플리케이션을 배울 수 있는 아주 좋은 프로젝트인듯 하다.&lt;br /&gt;
&lt;br /&gt;이후에 다양하게 응용할 부분은 해당 어플리케이션의 시스템 상태 정보를 볼수 있는 경우나,&lt;br /&gt;
IDC 센터의 서버를 이용해서 모니터링을 받게 되면, 유지 보수 및 원격지에서도&lt;br /&gt;
해당 어플리케이션의 정보를 탐색이 가능할듯 하다.&lt;br /&gt;
&lt;br /&gt;이후에는 프로그램의 노가다를 최대한 줄이기 위한 나만의 복사코드를 DB화 해서&lt;br /&gt;
원격지에서 해당 클립 보드로 전송하고, 그 내용을 바로 적용 가능하도록 하고&lt;br /&gt;
더 나아가면, 음성 인식 시스템을 도입해서, 해당 내용을 빠르게 검색하고&lt;br /&gt;
내용 전송을 통한 코드 적용을 극대화 하는 것도 연구중이다.&lt;br /&gt;
&lt;br /&gt;이 부분에서는 음성 인식 패턴을 다양하게 구축할 수 있는 서버가 &lt;br /&gt;
관건인듯 하지만.. 아직은 자금이나, 아이디어가 많이 부족하기 때문에.&lt;br /&gt;
다양한 단위 테스트를 통한 학습을 우선 해야 할듯 하다. &lt;br /&gt;
&lt;br /&gt;우선 모니터링 툴에 대한 일부 내용들은 내가 WPF용으로 따로 만든 티스토리 페이지에서&lt;br /&gt;
지속적으로 업데이트할 생각이다.&lt;br /&gt;
&lt;br /&gt;WPF 관련된 내용은 여기 페이지가 많아지는 걸 없애기 위해서 &lt;br /&gt;
그쪽에서 여러가지 테스트를 통한 내용들을 정리할 생각이다. &lt;br /&gt;
&lt;br /&gt;바쁘지만.. 요즘 같은 시기가 나에게는 다시금 오지 않을 30대 초반의 &lt;br /&gt;
자유인듯 하다. &lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>내 일상</category>
			<category>monitoring</category>
			<category>WPF</category>
			<author>gsi</author>
			<guid>http://iamgsi.com/402</guid>
			<comments>http://iamgsi.com/entry/WPF-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-Monitoring-%ED%88%B4-%EA%B0%9C%EB%B0%9C%EC%A4%91#entry402comment</comments>
			<pubDate>Fri,  3 Oct 2008 02:13:38 +0900</pubDate>
		</item>
		<item>
			<title>C# Deep Copy</title>
			<link>http://iamgsi.com/entry/C-Deep-Copy</link>
			<description>&lt;P&gt;&lt;br /&gt;
C#을 사용하다 보면 포인터의 개념이 없기 때문에 클래스인 경우는 참조 형태로 처리가 되는거 같아요.&lt;br /&gt;
&lt;br /&gt;A 의 클래스를 a, b로 선언하고 a의 값을 b로 대입하게 되면 참조 형태가 되어서 a의 값을 바꾸게 되면&lt;br /&gt;
결국에 b의 값도 바뀌게 되는 경우가 있습니다.&lt;br /&gt;
&lt;br /&gt;물론 데이터형인 경우는 깊은 복사가 이루어 지지만 클래스인 경우는 일반 복사가 이루어 지는듯 합니다.&lt;br /&gt;
간혹 깊은 복사를 해야 할때가 오는데요..&lt;br /&gt;
&lt;br /&gt;ICloneable을 상속 받아서 처리 하면 아래와 같이 처리 하면 될듯하네요.&lt;br /&gt;
&lt;br /&gt;// 샘플 코드&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; class Cell : ICloneable&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string var;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Var&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return var; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { var = value; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Cell(string var)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Var = var;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public object Clone()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new Cell(this.Var);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class Cells : List&amp;lt;Cell&amp;gt;, ICloneable&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Cells()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public object Clone()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cells listCell = new Cells();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (Cell c in this)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listCell.Add((Cell)c.Clone());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return listCell;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>C#</category>
			<author>gsi</author>
			<guid>http://iamgsi.com/394</guid>
			<comments>http://iamgsi.com/entry/C-Deep-Copy#entry394comment</comments>
			<pubDate>Wed, 24 Sep 2008 20:06:18 +0900</pubDate>
		</item>
		<item>
			<title>[C#] ListBox DrawItem 에 대한 의견..</title>
			<link>http://iamgsi.com/entry/C-ListBox-DrawItem-%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%98%EA%B2%AC</link>
			<description>&lt;P&gt;맨날 도구상자에 있는 컨트롤만 쓰고 있는 나로서는.. &lt;br /&gt;새로운 UI를 구상할때면.. 좀 난감해 지네요 ^^.. &lt;br /&gt;&lt;br /&gt;이번에는 ListBox를 확장해야할듯 해서&lt;br /&gt;&lt;br /&gt;바로 위와 같이 하나의 아이템에 복합적인 데이터가 들어가있다고 가정을 하고 작업을 해야 됩니다.&lt;br /&gt;이미지 정보와 해당 이름 또는 나이 저노하 번호 등등.. &lt;br /&gt;이걸 위해서는 DrawItem()을 따로 구현해 줘야 되네요.&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzE1OTM5NEBmczkudGlzdG9yeS5jb206L2F0dGFjaC8wLzMxMDAwMDAwMDAwMC5qcGc=&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzE1OTM5NEBmczkudGlzdG9yeS5jb206L2F0dGFjaC8wLzMxMDAwMDAwMDAwMC5qcGc=&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;240&quot; width=&quot;474&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;우선 데이터를 집어 넣을때는&lt;br /&gt;&lt;FONT color=#008000&gt;listBox1.Items.Add(new TestTemplate(&quot;손병욱&quot;, &quot;d:\\a.bmp&quot;));&lt;br /&gt;&lt;/FONT&gt;이와 같이 하나의 데이터 템플릿 클래스를 제작하고 그기에 맞도록 해당 데이터를 추가 해야 됩니다.&lt;br /&gt;&lt;br /&gt;그리고 DrawItem()을 가능하게 하기 위한 ListBox의 설정또한 잊지 말아야 하구요.. ^^&lt;br /&gt;&lt;br /&gt;간단하게 DrawItem의 드로잉 하는 부분을 아래와 같이 처리 하면 되는군요.&lt;br /&gt;&lt;br /&gt;&lt;/P&gt;
&lt;DIV style=&quot;BORDER-RIGHT: #80b888 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #80b888 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #80b888 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #80b888 1px solid; BACKGROUND-COLOR: #caeece&quot;&gt;&amp;nbsp;&amp;nbsp; private void listBox1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp;if(listBox1.Items.Count &amp;lt;= 0)&lt;br /&gt;&amp;nbsp; &amp;nbsp; return; 
&lt;P&gt;&amp;nbsp; &amp;nbsp;// Set the DrawMode property to draw fixed sized items.&lt;br /&gt;&amp;nbsp; &amp;nbsp;listBox1.DrawMode = DrawMode.OwnerDrawVariable;&lt;br /&gt;&amp;nbsp; &amp;nbsp;// Draw the background of the ListBox control for each item.&lt;br /&gt;&amp;nbsp; &amp;nbsp;e.DrawBackground();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;// Create a new Brush and initialize to a Black colored brush by default.&lt;br /&gt;&amp;nbsp; &amp;nbsp;Brush myBrush = Brushes.Black;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;// Determine the color of the brush to draw each item based on the index of the item to draw.&lt;br /&gt;&amp;nbsp; &amp;nbsp;switch (e.Index)&lt;br /&gt;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; case 0:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;myBrush = Brushes.Red;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp; &amp;nbsp; case 1:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;myBrush = Brushes.Orange;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp; &amp;nbsp; case 2:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;myBrush = Brushes.Purple;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;&amp;nbsp; &amp;nbsp; // 이 부분에서 해당 값을 가져 올때 TestTemplate의 값으로 형변환 한 후에 값을 접근가능..&lt;/FONT&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;STRONG&gt;TestTemplate tt = (TestTemplate)listBox1.Items[e.Index];&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;// Draw the current item text based on the current Font and the custom brush settings.&lt;br /&gt;&amp;nbsp; &amp;nbsp;e.Graphics.DrawImage(new Bitmap(tt.path), e.Bounds);&lt;br /&gt;&amp;nbsp; &amp;nbsp;e.Graphics.DrawString(tt.name, e.Font, myBrush,e.Bounds,StringFormat.GenericDefault);&lt;br /&gt;&amp;nbsp; &amp;nbsp;// If the ListBox has focus, draw a focus rectangle around the selected item.&lt;br /&gt;&amp;nbsp; &amp;nbsp;e.DrawFocusRectangle();&lt;br /&gt;&amp;nbsp; }&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;이때 이미지와 여러가지를 표현하기 위해서는 아래의 함수도 오버라이딩 해서 변경해줘야 하네요.&lt;br /&gt;&lt;/P&gt;
&lt;DIV style=&quot;BORDER-RIGHT: #80b888 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #80b888 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #80b888 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #80b888 1px solid; BACKGROUND-COLOR: #caeece&quot;&gt;&amp;nbsp; private void listBox1_MeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e)&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp;e.ItemHeight = 100;&lt;br /&gt;&amp;nbsp; }&lt;/DIV&gt;
&lt;P&gt;위의 내용을 토대로 샘플을 하나 만들어 볼까 합니다.&lt;br /&gt;&lt;br /&gt;하지만 고려되어야 하는 사항은 이미지가 들어가기 때문에&lt;br /&gt;많은 양의 데이터를 읽어 들일때 UI가 블락킹 되는 현상이 불현듯 보이네요..&lt;br /&gt;백그라운드 쓰레드나 일반 쓰레드를 통해서 따로 돌려야 할듯 합니다.&lt;br /&gt;그러면 조금더 나은 UI 및 컨트롤을 구현할 수 있을거 같습니다.&lt;br /&gt;&lt;br /&gt;개봉박두~~~.. &lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>C#</category>
			<category>C#</category>
			<category>listbox</category>
			<author>gsi</author>
			<guid>http://iamgsi.com/376</guid>
			<comments>http://iamgsi.com/entry/C-ListBox-DrawItem-%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%98%EA%B2%AC#entry376comment</comments>
			<pubDate>Sat, 23 Aug 2008 01:22:59 +0900</pubDate>
		</item>
		<item>
			<title>[C#] Round Rectangle 처리하기</title>
			<link>http://iamgsi.com/entry/C-Round-Rectangle-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0</link>
			<description>&lt;P&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfs8.tistory.com/upload_control/download.blog?fhandle=YmxvZzE1OTM5NEBmczgudGlzdG9yeS5jb206L2F0dGFjaC8wLzIxLnBuZw==&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfs8.tistory.com/upload_control/download.blog?fhandle=YmxvZzE1OTM5NEBmczgudGlzdG9yeS5jb206L2F0dGFjaC8wLzIxLnBuZw==&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;525&quot; width=&quot;635&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;RoundPanel 클래스를 제작했습니다.&lt;br /&gt;Panel을 상속해서 처리 했습니다.&lt;br /&gt;&lt;br /&gt;Round 하는 코드는 아래의 코드를 참조 하시면 됩니다. &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;DIV style=&quot;BORDER-RIGHT: #80b888 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #80b888 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #80b888 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #80b888 1px solid; BACKGROUND-COLOR: #caeece&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; static public GraphicsPath GetRoundedRectPath(Rectangle rect, int radius)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int diameter = 2 * radius;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Rectangle arcRect =&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new Rectangle(rect.Location, new Size(diameter, diameter)); 
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GraphicsPath path = new GraphicsPath();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; path.AddArc(arcRect, 180, 90);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; arcRect.X = rect.Right - diameter;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; path.AddArc(arcRect, 270, 90);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; arcRect.Y = rect.Bottom - diameter;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; path.AddArc(arcRect, 0, 90);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; arcRect.X = rect.Left;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; path.AddArc(arcRect, 90, 90);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; path.CloseFigure();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return path;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;Panel 함수에서 드로잉 하는 코드 입니다.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;DIV style=&quot;BORDER-RIGHT: #80b888 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #80b888 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #80b888 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #80b888 1px solid; BACKGROUND-COLOR: #caeece&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private void roundPanel_title_Paint(object sender, PaintEventArgs e)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RoundPanel panel = (RoundPanel)sender; 
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Graphics g = e.Graphics;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; g.SmoothingMode = SmoothingMode.HighQuality;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int width = panel.ClientRectangle.Width;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int height = panel.ClientRectangle.Height;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Rectangle rect = new Rectangle(0, 0, width-1, height-1);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (GraphicsPath path = RoundPanel.GetRoundedRectPath(rect, 8))&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (Brush brush = new LinearGradientBrush(&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new Rectangle(0, 0, panel.ClientRectangle.Width, panel.ClientRectangle.Height),&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Color.FromArgb(panel.Opcity, 102, 102, 102),&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Color.FromArgb(panel.Opcity, 0, 0, 0),&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 90.0f))&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //graphics.FillRectangle(brush, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; g.FillPath(brush, path);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //g.FillPath(Brushes.Yellow, path);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Pen pen = new Pen(Color.FromArgb(panel.Opcity, 255, 255, 255));&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; g.DrawPath(pen, path);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;이걸 처리 하다 보면 화면을 전환 하거나 리프레쉬할때 플리커 현상이 생기기도 합니다.&lt;br /&gt;이걸 해결하기 위해서 RoundPanel에 더블버퍼링 처리 코드를 추가 했습니다.&lt;br /&gt;&lt;/P&gt;
&lt;DIV style=&quot;BORDER-RIGHT: #80b888 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #80b888 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #80b888 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #80b888 1px solid; BACKGROUND-COLOR: #caeece&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public RoundPanel()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.SetStyle(&amp;nbsp; ControlStyles.UserPaint |&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ControlStyles.AllPaintingInWmPaint |&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ControlStyles.DoubleBuffer, true);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;/DIV&gt;
&lt;P&gt;실행 파일 : &lt;br /&gt;&lt;div class=&quot;imageblock left&quot; style=&quot;float: left; margin-right: 10px;&quot;&gt;&lt;a href=&quot;http://iamgsi.tistory.com/attachment/hk16.exe&quot;&gt;&lt;img src=&quot;http://cfs.tistory.com/blog/image/extension/exe.gif&quot; alt=&quot;&quot; style=&quot;vertical-align: middle;&quot; /&gt; TestPanelGradient.exe&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;.&lt;br /&gt;관련 코드 : &lt;br /&gt;&lt;div class=&quot;imageblock left&quot; style=&quot;float: left; margin-right: 10px;&quot;&gt;&lt;a href=&quot;http://iamgsi.tistory.com/attachment/hk17.zip&quot;&gt;&lt;img src=&quot;http://cfs.tistory.com/blog/image/extension/zip.gif&quot; alt=&quot;&quot; style=&quot;vertical-align: middle;&quot; /&gt; TestPanelGradient.zip&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;.&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>C#</category>
			<category>C#</category>
			<author>gsi</author>
			<guid>http://iamgsi.com/374</guid>
			<comments>http://iamgsi.com/entry/C-Round-Rectangle-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0#entry374comment</comments>
			<pubDate>Thu, 21 Aug 2008 17:04:21 +0900</pubDate>
		</item>
		<item>
			<title>[MFC] 폴더만 탐색 및 xml 데이터 생성</title>
			<link>http://iamgsi.com/entry/MFC-%ED%8F%B4%EB%8D%94%EB%A7%8C-%ED%83%90%EC%83%89-%EB%B0%8F-xml-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%83%9D%EC%84%B1</link>
			<description>&lt;P&gt;특정 폴더를 기준으로 하위 폴더를 찾아 내는 코드 입니다.&lt;br /&gt;그리고 그 폴더 내용을 xml 형태로 만들어 주는 코드도 포함되어 있습니다.&lt;br /&gt;xml 데이터로 만들어진 내용은 CEdit 컨트롤에 표시되며, 그 내용을&lt;br /&gt;저장할 수 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/P&gt;
&lt;p id=&quot;more373_0&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;373_0&#039;,&#039;하위 폴더를 검색하는 코드 표시하기&#039;,&#039;하위 폴더를 검색하는 코드 숨기기&#039;); return false;&quot;&gt;하위 폴더를 검색하는 코드 표시하기&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content373_0&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt;&lt;FONT color=#008000&gt;void CTreeSampleDlg::FindDirectory( CString path )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;CFileFind finder; &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;bool bWork = finder.FindFile( ( path + CString(&quot;\\*.*&quot;) ) );&lt;br /&gt;&amp;nbsp;while ( bWork )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; bWork = finder.FindNextFile();&lt;br /&gt;&amp;nbsp; if( finder.IsDots() )&lt;br /&gt;&amp;nbsp; &amp;nbsp;continue;&lt;br /&gt;&amp;nbsp; else if( finder.IsDirectory() )&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp;CString outputText;&lt;br /&gt;&amp;nbsp; &amp;nbsp;for( int i = 0; i &amp;lt; tabCount; i++ )&lt;br /&gt;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; outputText += CString(&quot;\t&quot;);&lt;br /&gt;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp; &amp;nbsp;outputText += finder.GetFileName();&lt;br /&gt;&amp;nbsp; &amp;nbsp;TRACE( &quot;%s\n&quot;, outputText );&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp; &amp;nbsp;tabCount++;&lt;br /&gt;&amp;nbsp; &amp;nbsp;FindDirectory( finder.GetFilePath() );&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;tabCount--;&lt;br /&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/div&gt;
&lt;p id=&quot;more373_1&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;373_1&#039;,&#039;폴더탐색 및 트리노드 추가 표시하기&#039;,&#039;폴더탐색 및 트리노드 추가 감추기&#039;); return false;&quot;&gt;폴더탐색 및 트리노드 추가 표시하기&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content373_1&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt;&lt;FONT color=#008000&gt;// 트리 노드 추가하는 함수&lt;br /&gt;HTREEITEM CTreeSampleDlg::AddTreeItem( HTREEITEM parent, CString nodeName )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;TVINSERTSTRUCT data; &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;data.hParent = parent;&lt;br /&gt;&amp;nbsp;data.hInsertAfter = TVI_SORT;&lt;br /&gt;&amp;nbsp;data.item.mask = TVIF_TEXT;&lt;br /&gt;&amp;nbsp;data.item.pszText = (LPSTR)(LPCSTR)nodeName;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;return m_Tree.InsertItem( &amp;amp;data );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// 하위폴더 검색해서 트리 컨트롤에 추가하는 코드&lt;br /&gt;void CTreeSampleDlg::FindDirectoryToTreeControl( CString path, HTREEITEM parent )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;CFileFind finder;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;bool bWork = finder.FindFile( ( path + CString(&quot;\\*.*&quot;) ) );&lt;br /&gt;&amp;nbsp;while ( bWork )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; bWork = finder.FindNextFile();&lt;br /&gt;&amp;nbsp; if( finder.IsDots() )&lt;br /&gt;&amp;nbsp; &amp;nbsp;continue;&lt;br /&gt;&amp;nbsp; else if( finder.IsDirectory() )&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;#if _DEBUG&lt;br /&gt;&amp;nbsp; &amp;nbsp;CString outputText;&lt;br /&gt;&amp;nbsp; &amp;nbsp;for( int i = 0; i &amp;lt; tabCount; i++ )&lt;br /&gt;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; outputText += CString(&quot;\t&quot;);&lt;br /&gt;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp; &amp;nbsp;outputText += finder.GetFileName();&lt;br /&gt;&amp;nbsp; &amp;nbsp;TRACE( &quot;%s\n&quot;, outputText );&lt;br /&gt;#endif //&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp; &amp;nbsp;// node 추가&lt;br /&gt;&amp;nbsp; &amp;nbsp;HTREEITEM node = AddTreeItem( parent, finder.GetFileName() );&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp; &amp;nbsp;tabCount++;&lt;br /&gt;&amp;nbsp; &amp;nbsp;FindDirectoryToTreeControl( finder.GetFilePath(), node );&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;tabCount--;&lt;br /&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/div&gt;
&lt;p id=&quot;more373_2&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;373_2&#039;,&#039;트리 노드 전체 탐색 표시하기&#039;,&#039;트리 노드 전체 탐색 숨기기&#039;); return false;&quot;&gt;트리 노드 전체 탐색 표시하기&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content373_2&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt;&lt;FONT color=#008000&gt;bool CTreeSampleDlg::SearchTreeNode( HTREEITEM node )&lt;br /&gt;{&lt;br /&gt;#if _DEBUG&lt;br /&gt;&amp;nbsp;CString outputText;&lt;br /&gt;&amp;nbsp;for( int i = 0; i &amp;lt; tabCount; i++ )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; outputText += CString(&quot;\t&quot;);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;outputText += m_Tree.GetItemText( node );&lt;br /&gt;&amp;nbsp;TRACE( &quot;%s\n&quot;, outputText );&lt;br /&gt;#endif //&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;if( m_Tree.ItemHasChildren( node ) )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; HTREEITEM childNode = m_Tree.GetChildItem( node );&lt;br /&gt;&amp;nbsp; do {&lt;br /&gt;&amp;nbsp; &amp;nbsp;tabCount++;&lt;br /&gt;&amp;nbsp; &amp;nbsp;if( SearchTreeNode( childNode ) )&lt;br /&gt;&amp;nbsp; &amp;nbsp; return 1;&lt;br /&gt;&amp;nbsp; } while( ( childNode = m_Tree.GetNextSiblingItem( childNode ) ) != NULL );&lt;br /&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;tabCount--;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;return 0;&lt;br /&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/div&gt;
&lt;p id=&quot;more373_3&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;373_3&#039;,&#039;트리노드탐색 및 xml 생성 표시하기&#039;,&#039;트리노드탐색 및 xml 생성 숨기기&#039;); return false;&quot;&gt;트리노드탐색 및 xml 생성 표시하기&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content373_3&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt;&lt;FONT color=#008000&gt;// 트리 부분을 탐색해서 char* 형태의 버퍼에 담아 줍니다.&lt;/FONT&gt;&lt;FONT color=#008000&gt;&lt;br /&gt;bool CTreeSampleDlg::SearchTreeNodeToXML( HTREEITEM node )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;CString outputText;&lt;br /&gt;&amp;nbsp;HTREEITEM refnode;&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;for( int i = 0; i &amp;lt; tabCount; i++ )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; outputText += CString(&quot;\t&quot;);&lt;br /&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;if( node == NULL )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; refnode = m_Tree.GetRootItem();&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp; memset( line_data, 0, sizeof(char)*1024 );&lt;br /&gt;&amp;nbsp; sprintf( line_data, &quot;&amp;lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;EUC-KR\&quot;?&amp;gt;\r\n\r\n&quot; );&lt;br /&gt;&amp;nbsp; strcat(total_data,line_data);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp; memset( line_data, 0, sizeof(char)*1024 );&lt;br /&gt;&amp;nbsp; sprintf( line_data, &quot;&amp;lt;PATHS&amp;gt;\r\n&quot; );&lt;br /&gt;&amp;nbsp; strcat(total_data,line_data);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; refnode = node;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp; memset( line_data, 0, sizeof(char)*1024 );&lt;br /&gt;&amp;nbsp; sprintf( line_data, &quot;%s&amp;lt;PATH name=\&quot;%s\&quot;&amp;gt;\r\n&quot;, outputText, m_Tree.GetItemText( node ) );&lt;br /&gt;&amp;nbsp; strcat(total_data,line_data);&lt;br /&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;if( m_Tree.ItemHasChildren( refnode ) )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; HTREEITEM childNode = m_Tree.GetChildItem( refnode );&lt;br /&gt;&amp;nbsp; do {&lt;br /&gt;&amp;nbsp; &amp;nbsp;tabCount++;&lt;br /&gt;&amp;nbsp; &amp;nbsp;if( SearchTreeNodeToXML( childNode ) )&lt;br /&gt;&amp;nbsp; &amp;nbsp; return 1;&lt;br /&gt;&amp;nbsp; } while( ( childNode = m_Tree.GetNextSiblingItem( childNode ) ) != NULL );&lt;br /&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;if( node == NULL )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; memset( line_data, 0, sizeof(char)*1024 );&lt;br /&gt;&amp;nbsp; sprintf( line_data, &quot;&amp;lt;/PATHS&amp;gt;\r\n&quot; );&lt;br /&gt;&amp;nbsp; strcat(total_data,line_data);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; memset( line_data, 0, sizeof(char)*1024 );&lt;br /&gt;&amp;nbsp; sprintf( line_data, &quot;%s&amp;lt;/PATH&amp;gt;\r\n&quot;, outputText, m_Tree.GetItemText( node ) );&lt;br /&gt;&amp;nbsp; strcat(total_data,line_data);&lt;br /&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;tabCount--;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;return 0;&lt;br /&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/div&gt;&lt;FONT color=#008000&gt;
&lt;p id=&quot;more373_4&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;373_4&#039;,&#039;CEdit 내용을 파일에 기록 표시하기&#039;,&#039;CEdit 내용을 파일에 기록 숨기기&#039;); return false;&quot;&gt;CEdit 내용을 파일에 기록 표시하기&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content373_4&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt;&lt;FONT color=#008000&gt;void CTreeSampleDlg::OnBnClickedButtonXmlsave()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;UpdateData( true );&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;CString buf;&lt;br /&gt;&amp;nbsp;m_Edit.GetWindowText( buf );&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;CFile file;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;file.Open( &quot;d:\\test.xml&quot;, CFile::modeCreate|CFile::modeWrite );&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;file.Write( (LPSTR)(LPCSTR)buf, buf.GetLength() );&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;file.Flush();&lt;br /&gt;&amp;nbsp;file.Close();&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;AfxMessageBox( &quot;저장 완료&quot; );&lt;br /&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/div&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;관련 소스 : &lt;br /&gt;&lt;div class=&quot;imageblock left&quot; style=&quot;float: left; margin-right: 10px;&quot;&gt;&lt;a href=&quot;http://iamgsi.tistory.com/attachment/hk15.zip&quot;&gt;&lt;img src=&quot;http://cfs.tistory.com/blog/image/extension/zip.gif&quot; alt=&quot;&quot; style=&quot;vertical-align: middle;&quot; /&gt; TreeSample.zip&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;.&lt;/FONT&gt;&lt;/P&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>MFC&amp;ActiveX</category>
			<category>c++</category>
			<category>mfc</category>
			<category>TreeControl</category>
			<author>gsi</author>
			<guid>http://iamgsi.com/373</guid>
			<comments>http://iamgsi.com/entry/MFC-%ED%8F%B4%EB%8D%94%EB%A7%8C-%ED%83%90%EC%83%89-%EB%B0%8F-xml-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%83%9D%EC%84%B1#entry373comment</comments>
			<pubDate>Thu, 21 Aug 2008 02:55:54 +0900</pubDate>
		</item>
		<item>
			<title>[MFC] XML의 계층구조 데이터를 읽어 들이는 코드 (GetchildNodes, getAttribute, nextNode)</title>
			<link>http://iamgsi.com/entry/MFC-XML%EC%9D%98-%EA%B3%84%EC%B8%B5%EA%B5%AC%EC%A1%B0-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%9D%BD%EC%96%B4-%EB%93%A4%EC%9D%B4%EB%8A%94-%EC%BD%94%EB%93%9C-GetchildNodes-getAttribute-nextNode</link>
			<description>&lt;P&gt;MFC에서 xml 데이터를 읽어 들이는 예제입니다.&lt;br /&gt;아래의 내용을 계층구조를 통해서 읽어 들이게 됩니다.&lt;br /&gt;자세한 소스는 소스 코드를 참조 하세요.&lt;br /&gt;&amp;nbsp; - XmlParser.h, cpp&lt;br /&gt;&lt;br /&gt;[xml 샘플]&lt;br /&gt;&lt;/P&gt;
&lt;DIV style=&quot;BORDER-RIGHT: #80b888 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #80b888 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #80b888 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #80b888 1px solid; BACKGROUND-COLOR: #caeece&quot;&gt;
&lt;P&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;EUC-KR&quot;?&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;PATHS&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;PATH NAME=&quot;Install Files&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;PATH NAME=&quot;Dev&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/PATH&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;PATH NAME=&quot;Dev2&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/PATH&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;PATH NAME=&quot;Dev3&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;PATH NAME=&quot;Dev3_a&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;/PATH&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;PATH NAME=&quot;Dev3_b&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;PATH NAME=&quot;Dev3_b_a&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/PATH&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;PATH NAME=&quot;Dev3_b_b&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;/PATH&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/PATH&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/PATH&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;PATH NAME=&quot;temp&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;PATH NAME=&quot;temp_a&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;PATH NAME=&quot;temp_b&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;PATH NAME=&quot;temp_b_a&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;/PATH&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;PATH NAME=&quot;temp_b_b&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;PATH NAME=&quot;temp_b_c&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;/PATH&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/PATH&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/PATH&amp;gt;&lt;br /&gt;&amp;lt;/PATHS&amp;gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;계층 구조를 읽어 들이는 코드 (재귀호출)&lt;br /&gt;&lt;br /&gt;1. 초기화 및 도입부&lt;br /&gt;&lt;/P&gt;
&lt;DIV style=&quot;BORDER-RIGHT: #80b888 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #80b888 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #80b888 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #80b888 1px solid; BACKGROUND-COLOR: #caeece&quot;&gt;
&lt;P&gt;&amp;nbsp;/// &lt;br /&gt;&amp;nbsp;MSXML2::IXMLDOMNodePtr nodeList = m_pDoc-&amp;gt;selectSingleNode( Token.c_str() );&lt;br /&gt;&amp;nbsp;_bstr_t bsElements(&quot;PATHS&quot;);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;if ( nodeList )&lt;br /&gt;&amp;nbsp; FindName( nodeList-&amp;gt;GetchildNodes() );&lt;/P&gt;
&lt;P&gt;&amp;nbsp;nodeList.Release();&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;2. 재귀호출 부분&lt;br /&gt;&lt;/P&gt;
&lt;DIV style=&quot;BORDER-RIGHT: #80b888 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #80b888 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #80b888 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #80b888 1px solid; BACKGROUND-COLOR: #caeece&quot;&gt;
&lt;P&gt;int tabCount = 0;&lt;/P&gt;
&lt;P&gt;HRESULT CXmlParser::FindName( MSXML2::IXMLDOMNodeListPtr&amp;amp; lparam )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;long elementCount = lparam-&amp;gt;Getlength();&lt;br /&gt;&amp;nbsp;for( int i = 0; i &amp;lt; elementCount; i++ )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; MSXML2::IXMLDOMElementPtr Element = lparam-&amp;gt;nextNode();&lt;br /&gt;&amp;nbsp; if( Element == NULL )&lt;br /&gt;&amp;nbsp; &amp;nbsp;break;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _bstr_t bsNodename = Element-&amp;gt;GetnodeName();&lt;br /&gt;&amp;nbsp; _bstr_t bsElement(&quot;PATH&quot;);&lt;br /&gt;&amp;nbsp; if( bsNodename == bsElement )&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp;_bstr_t bsname(&quot;NAME&quot;);&lt;br /&gt;&amp;nbsp; &amp;nbsp;_variant_t varElementName = Element-&amp;gt;getAttribute(bsname);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;// 해당하는 엘러먼트 Name의 이름 == 폴더 이름을 의미한다.&lt;br /&gt;&amp;nbsp; &amp;nbsp;CString strName;&lt;br /&gt;&amp;nbsp; &amp;nbsp;strName.Format( &quot;%S&quot;, varElementName.bstrVal ); &amp;nbsp; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;// 탭 카운터를 통한 출력&lt;br /&gt;&amp;nbsp; &amp;nbsp;CString strTabMergy;&lt;br /&gt;&amp;nbsp; &amp;nbsp;for( int tc = 0; tc &amp;lt; tabCount; tc++ )&lt;br /&gt;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; strTabMergy += &quot;\t&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp; &amp;nbsp;strTabMergy += strName;&lt;br /&gt;&amp;nbsp; &amp;nbsp;TRACE( &quot;%s\n&quot;, (LPSTR)(LPCSTR)strTabMergy);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;MSXML2::IXMLDOMNodeListPtr childElementlist = Element-&amp;gt;GetchildNodes();&lt;br /&gt;&amp;nbsp; &amp;nbsp;if( childElementlist )&lt;br /&gt;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; tabCount++;&lt;br /&gt;&amp;nbsp; &amp;nbsp; FindName( childElementlist );&lt;br /&gt;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Element.Release();&lt;br /&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;tabCount--;&lt;br /&gt;&amp;nbsp;lparam.Release();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;return S_OK;&lt;br /&gt;}&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;&lt;STRONG&gt;아래의 콘솔 화면 내용입니다.&lt;br /&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfs8.tistory.com/upload_control/download.blog?fhandle=YmxvZzE1OTM5NEBmczgudGlzdG9yeS5jb206L2F0dGFjaC8wLzIwLnBuZw==&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfs8.tistory.com/upload_control/download.blog?fhandle=YmxvZzE1OTM5NEBmczgudGlzdG9yeS5jb206L2F0dGFjaC8wLzIwLnBuZw==&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;204&quot; width=&quot;199&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;소스 코드 : &lt;br /&gt;&lt;div class=&quot;imageblock left&quot; style=&quot;float: left; margin-right: 10px;&quot;&gt;&lt;a href=&quot;http://iamgsi.tistory.com/attachment/hk14.zip&quot;&gt;&lt;img src=&quot;http://cfs.tistory.com/blog/image/extension/zip.gif&quot; alt=&quot;&quot; style=&quot;vertical-align: middle;&quot; /&gt; PungSangDemo.zip&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;.&lt;/P&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>MFC&amp;ActiveX</category>
			<category>c++</category>
			<category>IXMLDOMNodeListPtr</category>
			<category>IXMLDOMNodePtr</category>
			<category>mfc</category>
			<category>xml</category>
			<author>gsi</author>
			<guid>http://iamgsi.com/372</guid>
			<comments>http://iamgsi.com/entry/MFC-XML%EC%9D%98-%EA%B3%84%EC%B8%B5%EA%B5%AC%EC%A1%B0-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%9D%BD%EC%96%B4-%EB%93%A4%EC%9D%B4%EB%8A%94-%EC%BD%94%EB%93%9C-GetchildNodes-getAttribute-nextNode#entry372comment</comments>
			<pubDate>Wed, 20 Aug 2008 22:40:13 +0900</pubDate>
		</item>
		<item>
			<title>[C#] Image Blend - 두장 이미지 블랜딩 처리 하기</title>
			<link>http://iamgsi.com/entry/C-Image-Blend-%EB%91%90%EC%9E%A5-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%B8%94%EB%9E%9C%EB%94%A9-%EC%B2%98%EB%A6%AC-%ED%95%98%EA%B8%B0</link>
			<description>&lt;P&gt;Panel에 두장의 이미지(Bitmap)를 추가한 후에&lt;br /&gt;위의 이미지에 알파값을 추가해서 블랜딩 효과를 줘봤습니다.&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzE1OTM5NEBmczkudGlzdG9yeS5jb206L2F0dGFjaC8wLzE4LnBuZw==&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzE1OTM5NEBmczkudGlzdG9yeS5jb206L2F0dGFjaC8wLzE4LnBuZw==&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;300&quot; width=&quot;300&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P&gt;&lt;br /&gt;코드는 아래와 같아요..&lt;br /&gt;
&lt;HR&gt;
 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private void panel_before_Paint(object sender, PaintEventArgs e)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Graphics g = e.Graphics;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; g.DrawImage(beforeLeftImage, new PointF(0, 0));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#008000&gt;float[][] ptsArray = &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new float[] { 1, 0, 0, 0, 0},&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new float[] { 0, 1, 0, 0, 0},&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new float[] { 0, 0, 1, 0, 0},&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new float[] { 0, 0, 0, 0.7f, 0},&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new float[] { 0, 0, 0, 0, 1}&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ColorMatrix clrMatrix = new ColorMatrix(ptsArray);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ImageAttributes imageAtrr = new ImageAttributes();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imageAtrr.SetColorMatrix(clrMatrix,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ColorMatrixFlag.Default,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ColorAdjustType.Bitmap);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; g.DrawImage(beforeXrayLeftIamge,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new Rectangle(50, 50, beforeXrayLeftIamge.Width, beforeXrayLeftIamge.Height),&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0, 0, beforeXrayLeftIamge.Width, beforeXrayLeftIamge.Height, &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GraphicsUnit.Pixel,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imageAtrr);&lt;/FONT&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>C#</category>
			<category>Alpha</category>
			<category>Blend</category>
			<category>C#</category>
			<category>colormatrix</category>
			<category>ImageAttributes</category>
			<author>gsi</author>
			<guid>http://iamgsi.com/370</guid>
			<comments>http://iamgsi.com/entry/C-Image-Blend-%EB%91%90%EC%9E%A5-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%B8%94%EB%9E%9C%EB%94%A9-%EC%B2%98%EB%A6%AC-%ED%95%98%EA%B8%B0#entry370comment</comments>
			<pubDate>Sat, 16 Aug 2008 15:33:50 +0900</pubDate>
		</item>
	</channel>
</rss>
