건담 더블오 11편 - 이미지 스샷
Etc 2007. 12. 15. 22:53 |![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
// DataGridView 객체 얻어 오기
DataGridView dgv = sender as DataGridView;
if (dgv == null)
return;
// 셀단위로 선택된 것이 있는지 찾는다. 하나도 없을때 리턴
if (dgv.SelectedCells.Count == 0)
return;
// DB와 연결되어 있을때. DataSet의 테이블 정보를 가져온다.
DataTable dtItem = azitro_testDataSet.Tables[0];
// DataRow를 가져 오기 위해서 DataGridView의 선택된 셀정보를 가져와서
// RowIndex를 리턴해 준다.
// RowIndex의 값을 사용해서 DataRow를 구한다.
DataRow rwItem = dtItem.Rows[dgv.SelectedCells[0].RowIndex];
// Row의 셀 정보를 가져온다. (DB 내용)
string strCatenum = rwItem["cate_Num"].ToString();
string strCatedep = rwItem["cate_dep"].ToString();
string strCatesel = rwItem["cate_sel"].ToString();
string strsiImg = rwItem["icon_img"].ToString();
txtSelName.Text = rwItem["item_name"].ToString();
txtSelContents.Text = rwItem["item_contents"].ToString();
// DB에 있는 내용을 사용해서 폴더 경로를 구한다.
string filepath;
filepath = Application.StartupPath
+ "\\itemlist\\"
+ strCatenum + "\\"
+ strCatesel + "\\"
+ strsiImg + ".png";
// 파일이 존재 하는지 검사한다.
if (File.Exists(filepath))
{
// 이미지를 연결하고 화면에 출력한다.
picItemImage.Image = Image.FromFile(filepath);
}
else
{
// 이미지가 없을때 null 처리
picItemImage.Image = null;
}
ITEMIDLIST *pidlBrowse;
char pszPathname[MAX_PATH];
BROWSEINFO BrInfo;
BrInfo.hwndOwner = GetSafeHwnd();
BrInfo.pidlRoot = NULL;
memset( &BrInfo, 0, sizeof(BrInfo) );
BrInfo.pszDisplayName = pszPathname;
BrInfo.lpszTitle = "선택하고자 하는 폴더를 선택해 주십시오.";
BrInfo.ulFlags = BIF_RETURNONLYFSDIRS;
// 다이얼로그 띄우기
pidlBrowse = SHBrowseForFolder(&BrInfo);
if( pidlBrowse != NULL)
{
// 패스를 얻어옴
BOOL bSuccess = ::SHGetPathFromIDList(pidlBrowse, pszPathname);
if ( bSuccess )
{
m_szSafedefaultPath = pszPathname; //<-- 여기서 값을 입력
UpdateData(FALSE);
}
else
{
MessageBox("잘못된 폴더명입니다.", "lol", MB_OKCANCEL|MB_ICONASTERISK );
}
}
Dll 프로젝트를 하나 만들고 xml을 읽는 테스트를 진행해 봤다.
아래의 xml 파일을 읽는 테스트...
<?xml version="1.0" encoding="euc-kr" ?>
<Symbols>
<Scanorders>
<order Name="default">
<!--false이면 지그재그-->
<lineartype>true</lineartype>
<!--두개씩 쌍을 이룬다.
처음 두개는 진행방향 from > to 이고,
뒤에 두개는 흐름방향 이다.-->
<left>-1</left>
<right>-1</right>
<top>-1</top>
<bottom>-1</bottom>
</order>
</Scanorders>
<!--DefaultSymbol은 true이면 line이고, false이면 rectangle 이다.-->
<Symbol Name="none" Uid="0" Type="line" DefaultSymbol="true">
<HorizontalPixels>1</HorizontalPixels>
<VerticalPixels>11</VerticalPixels>
<SymbolWidth>12</SymbolWidth>
<SymbolHeight>13</SymbolHeight>
<ScanOrder>14</ScanOrder>
<TotalPixels>15</TotalPixels>
<TotalWidth>16</TotalWidth>
<TotalHeight>17</TotalHeight>
<Length>18</Length>
<Color>
<r>128</r>
<g>129</g>
<b>130</b>
</Color>
</Symbol>
<Symbol Name="none" Uid="0" Type="line" DefaultSymbol="true">
<!-- <HorizontalPixels>1</HorizontalPixels> -->
<VerticalPixels>2</VerticalPixels>
<SymbolWidth>2</SymbolWidth>
<SymbolHeight>2</SymbolHeight>
<ScanOrder>2</ScanOrder>
<TotalPixels>2</TotalPixels>
<TotalWidth>2</TotalWidth>
<TotalHeight>2</TotalHeight>
<Length>2</Length>
<Color>
<r>80</r>
<g>81</g>
<b>82</b>
</Color>
</Symbol>
<Symbol Name="none" Uid="0" Type="line" DefaultSymbol="true">
<HorizontalPixels>3</HorizontalPixels>
<VerticalPixels>3</VerticalPixels>
<SymbolWidth>3</SymbolWidth>
<SymbolHeight>3</SymbolHeight>
<ScanOrder>3</ScanOrder>
<TotalPixels>3</TotalPixels>
<TotalWidth>3</TotalWidth>
<TotalHeight>3</TotalHeight>
<Length>3</Length>
<Color>
<r>150</r>
<g>151</g>
<b>152</b>
</Color>
</Symbol>
</Symbols>
C++ 에서 테스트할때..
TRACE("--- xml start ---\n");
if(m_TestXmlWrap2.Load("d:\\symbol.xml")) {
// 정상적으로 읽었다면 여기로..
HRESULT hr;
MSXML2::IXMLDOMDocument2Ptr pDoc;
MSXML2::IXMLDOMNodeListPtr pNodeList;
MSXML2::IXMLDOMNodePtr pNodeSub;
MSXML2::IXMLDOMNodeListPtr pNodeSubList;
MSXML2::IXMLDOMNodePtr pNodeSubSub;
MSXML2::IXMLDOMNodePtr pNodeSubSubSub;
MSXML2::IXMLDOMElementPtr pNodeSubElement;
BSTR bszNodeValue;
TRACE("--- xml start ---\n");
if(m_TestXmlWrap2.GetDoc()) {
pNodeList = m_TestXmlWrap2.GetDoc()->selectNodes(".//Symbol");
for(int i = 0; i < pNodeList->length; i++) {
pNodeSub = pNodeList->Getitem(i);
// 같은 노드가 하나 이상은 존재 하지 않는다고 가정한다.
pNodeSubSub = pNodeSub->selectSingleNode(".//HorizontalPixels");
string value = "none";
if(pNodeSubSub)
value = (LPCTSTR)pNodeSubSub->Gettext();
TRACE1("Symbol/HorizontalPixels=%s\n", value.c_str());
}
}
TRACE("--- xml end ---\n");
TRACE("--- xml start ---\n");
if(m_TestXmlWrap2.GetDoc()) {
pNodeList = m_TestXmlWrap2.GetDoc()->selectNodes(".//Symbol");
for(int i = 0; i < pNodeList->length; i++) {
pNodeSub = pNodeList->Getitem(i);
pNodeSubList = pNodeSub->selectNodes(".//Color");
for(int i = 0; i < pNodeSubList->length; i++) {
pNodeSubSub = pNodeSubList->Getitem(i);
string value;
// 같은 노드가 하나 이상은 존재 하지 않는다고 가정한다.
pNodeSubSubSub = pNodeSubSub->selectSingleNode(".//r");
value = "none";
if(pNodeSubSubSub)
value = (LPCTSTR)pNodeSubSubSub->Gettext();
TRACE1("Symbol/Color/r=%s\n", value.c_str());
// 같은 노드가 하나 이상은 존재 하지 않는다고 가정한다.
pNodeSubSubSub = pNodeSubSub->selectSingleNode(".//g");
value = "none";
if(pNodeSubSubSub)
value = (LPCTSTR)pNodeSubSubSub->Gettext();
TRACE1("Symbol/Color/g=%s\n", value.c_str());
// 같은 노드가 하나 이상은 존재 하지 않는다고 가정한다.
pNodeSubSubSub = pNodeSubSub->selectSingleNode(".//b");
value = "none";
if(pNodeSubSubSub)
value = (LPCTSTR)pNodeSubSubSub->Gettext();
TRACE1("Symbol/Color/b=%s\n", value.c_str());
}
}
}
TRACE("--- xml end ---\n");
// 저장
m_TestXmlWrap2.Save(_T("d:\\save_test.xml"));
}
Dll 코드 :
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
본 메일은 2007/12/07 기준으로 본 세미나에 참석하신 회원님들께 발송되는 발신전용 메일입니다. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
입력방법 #1
foreach (string str in parentString)
{
TreeNode tn = treeView1.Nodes.Add(str);
foreach (string substr in childString)
{
tn.Nodes.Add(substr);
}
}
treeView1.EndUpdate();
}
입력방법 #2
foreach (string str in parentString)
{
treeView1.Nodes.Add(str);
}
foreach (TreeNode tn in treeView1.Nodes)
{
foreach (string substr in childString)
{
tn.Nodes.Add(substr);
}
}
treeView1.EndUpdate();
}
입력방법 #3
TreeNode tn = new TreeNode();
foreach (string str in childString)
{
tn.Nodes.Add(str);
}
foreach (string str in parentString)
{
TreeNode tnParent = treeView1.Nodes.Add(str);
}
treeView1.EndUpdate();
}