버튼 추가

김주현·2021년 9월 16일
0

MFC

목록 보기
2/4

버튼 추가

  1. 리소스뷰 -> 다이얼로그 -> IDD_FORM
  2. 도구 상자에서 버튼 클릭후 생성가능
  3. 버튼 우클릭후 이벤트 처리기 추가->메시지 유형(BN_Clicked) 버튼 클릭시 원하는 대로 함수명 변경후 함수내에서 버튼클릭시 이벤트 지정 가능
  4. 버튼 누른후 ALT + ENTER후 캡션수정혹은 버튼상태에서 글씨 쓰면 버튼 안 내용 수정 가능
  5. 유닛툴 클래스 생성후
if(m_tUnitTool.GetSafeHwnd() == nullptr)
		m_tUnitTool.Create(IDD_CUnitTool);
	m_tUnitTool.ShowWindow(SW_SHOW);
    

추가하면 버튼 클릭시 유닛틀 생성됨

유닛 다이얼로그에서 도구상자 -> 에딧컨트롤 생성

에딧컨트롤은 실행시 글을 입력받을수있음

우클릭 후 변수추가를 통해 변수 추가가능

두개의 에딧 컨트롤의 변수를 추가 한후 버튼을 추가 -> 버튼을 더블클릭시 클릭 이벤트 함수로 이동

void CUnitTool::OnBnClickedButton1()
{
	UpdateData(true);
    //UpdateData는 컨트롤과 변수의 값이 변경되면 갱신시켜주는 함수이다.
    //인자가 true일경우 컨트롤의 값을 변수로 전송 하고 false일경우 반대로 변수의값을 컨트롤로 전송한다.
	data2 = data1;
	UpdateData(false);
	// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
}

7.스탯입력과 출력

typedef struct tagTexInfo
{
	LPDIRECT3DTEXTURE9 pTexture;// HBITMAP와 비슷한 역할을 할 놈. 
	D3DXIMAGE_INFO tTexInfo; 
}TEXINFO;

typedef struct tagTile
{
	D3DXVECTOR3 vPos; 
	D3DXVECTOR3 vSize; 
	int			iDrawID; 
	int			iOption; 
}TILE;

typedef struct tagUnitInfo
{
#ifdef _AFX
	CString wstrName; 
#else
	wstring wstrName; 
#endif // _AFX
	int iAtt; 
	int iDef; 
}UNITINFO;

구조체 헤더에 스탯을 저장할 UNITINFO정의

스태틱 테스트와 리스트 박스 버튼 에딧컨트롤을 적절히 배치

  • 리스트 박스 에는 사용자가 보고 선택할 수 있는 항목의 목록 (예: 파일 이름)이 표시 됩니다
private:
	map<CString, UNITINFO*> m_mapUnitInfo; 

CUnitTool에 멤버 변수로 UNITINFO를 저장할 맵 추가

다음 Add 버튼 클릭시 입력한 정보로 INFO구조체를 만들어 맵에 넣어줌

void CUnitTool::OnBnClickedButton2()
{
	// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
	UpdateData(TRUE); 
	UNITINFO* pUnitInfo = new UNITINFO; 
	pUnitInfo->wstrName = m_wstrName; 
	pUnitInfo->iAtt = m_iAtt; 
	pUnitInfo->iDef = m_iDef; 

	m_mapUnitInfo.emplace(pUnitInfo->wstrName, pUnitInfo); 
	m_ListBox.AddString(pUnitInfo->wstrName); 
	UpdateData(FALSE); 
}
void CUnitTool::OnLbnSelchangeList1()
{
	// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
	UpdateData(TRUE); 
	int iIndex = m_ListBox.GetCurSel();
	CString wstrFindName = L""; 
	m_ListBox.GetText(iIndex, wstrFindName);
	auto& iter = m_mapUnitInfo.find(wstrFindName);
	if (iter == m_mapUnitInfo.end())
		return; 
	m_wstrName = iter->second->wstrName; 
	m_iAtt = iter->second->iAtt; 
	m_iDef = iter->second->iDef; 

	UpdateData(FALSE); 
}

리스트 박스는 맵에서 정보를 가져와 출력해줌

0개의 댓글

관련 채용 정보