728x90
반응형
BEGIN_MESSAGE_MAP(CMFCApplication2Dlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_COMMAND_RANGE(IDC_BTN01, IDC_BTN88, Onbutton1)
ON_BN_CLICKED(IDC_RESET, &CMFCApplication2Dlg::OnBnClickedReset)
END_MESSAGE_MAP()
// 전 버튼의 ID
int firstID = 0;
// 현재 누른 버튼의ID
int secondID = 0;
// 짝수번으로 선택한 버튼인 상황에서 이전 버튼과 다를경우를 세기위해.
int even = 0, check = 1;
// 버튼 비활성화, 사라짐
void CMFCApplication2Dlg::ClikBTN(int IDsecond, int IDfirst, int num) {
GetDlgItem(IDsecond)->EnableWindow(false);
// 현재 id가 1007 이하일때
int id1 = IDsecond + 8;
if (IDsecond < 1008) {
if (IDfirst == id1) {
GetDlgItem(IDfirst)->ShowWindow(false);
GetDlgItem(IDsecond)->ShowWindow(false);
}
if (IDfirst != id1 && num == 0) {
GetDlgItem(IDfirst)->EnableWindow(true);
GetDlgItem(IDsecond)->EnableWindow(true);
}
}
// 현재 id가 1008이상 1015 이하일때
int id2 = IDsecond - 8;
if (IDsecond < 1016 && IDsecond > 1007) {
if (IDfirst == id2) {
GetDlgItem(IDfirst)->ShowWindow(false);
GetDlgItem(IDsecond)->ShowWindow(false);
}
if (IDfirst != id2 && num == 0) {
GetDlgItem(IDfirst)->EnableWindow(true);
GetDlgItem(IDsecond)->EnableWindow(true);
}
}
}
// 버튼 클릭시
void CMFCApplication2Dlg::Onbutton1(UINT ID) {
even = check % 2;
firstID = secondID;
secondID = ID;
ClikBTN(secondID, firstID, even);
check++;
}
// 리셋
void CMFCApplication2Dlg::OnBnClickedReset()
{
for (int i = 0; i < 16; i++) {
GetDlgItem(IDC_BTN01 + i)->ShowWindow(true);
GetDlgItem(IDC_BTN01 + i)->EnableWindow(true);
}
check = 1;
even = 0;
firstID = 0;
secondID = 0;
}
728x90
반응형
'Education > Edu | .net' 카테고리의 다른 글
# 11.1) [MFC] 주식 프로그램 (0) | 2021.01.19 |
---|---|
# 10.2) [MFC] 시작하기3 (0) | 2021.01.18 |
# 9.2) [MFC] 시작하기2 (0) | 2021.01.15 |
# 9.1) [C/C++] c++ 기본문법4 (0) | 2021.01.15 |
# 8) [C/C++] c++ 기본문법3 (0) | 2021.01.14 |