자식 UI 추가
2023. 1. 5. 18:58ㆍ개인공부/Win32API
자식 UI쪽에서 클릭을 입력받으면 자식 UI 의 테두리 색깔이 변하게 설계를 했다. 그리고 간단하게 문자열을 WIN32에서 출력하는 방법을 썻다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
void CUIMgr::update()
{
CScene* pCurScene = CSceneMgr::GetInst()->GetCurScene();
const vector<CObject*>& vecUI = pCurScene->GetGroupObject(GROUP_TYPE::UI);
bool bLbtnTap = KEY_TAP(KEY::LBTN);
bool bLbtmAway = KEY_AWAY(KEY::LBTN);
for (size_t i = 0; i < vecUI.size(); ++i)
{
CUI* pUI = (CUI*)vecUI[i];
pUI = GetTargetedUI(pUI);
if (nullptr != pUI)
{
pUI->MouseOn();
if (bLbtnTap)
{
pUI->MouseLbtnDown();
pUI->m_bLbtnDown = true;
}
else if (bLbtmAway)
{
pUI->MouseLbtnUp();
if (pUI->m_bLbtnDown)
{
pUI->MouseLbtnClicked();
}
// 왼쪽버튼 떼면 ,눌렸던 체크를 다시 해제한다.
pUI->m_bLbtnDown = false;
}
}
}
}
CUI* CUIMgr::GetTargetedUI(CUI* _pParentUI)
{
bool bLbtmAway = KEY_AWAY(KEY::LBTN);
// 1. 부모 UI 포함, 자식 UI 들중 실제 타겟팅 된 UI를 가져온다.
CUI* pTargetUI = nullptr;
static list<CUI*> queue;
static vector<CUI*> vecNoneTarget;
queue.clear();
vecNoneTarget.clear();
queue.push_back(_pParentUI);
while (!queue.empty())
{
// 큐에서 데이터 하나 꺼내기
CUI* pUI = queue.front();
queue.pop_front();
// 큐에서 꺼내온 UI가 TargetUI 인지 확인
// 2. 타겟 UI 들 중, 더 우선순위가 높은 기준은 더 낮을 계층의 자식 UI
if (pUI->IsMouseOn())
{
if (nullptr != pTargetUI)
{
vecNoneTarget.push_back(pTargetUI);
}
pTargetUI = pUI;
}
else
{
vecNoneTarget.push_back(pUI);
}
const vector<CUI*>& vecChild = pUI->GetChildUI();
for (size_t i = 0; i < vecChild.size(); ++i)
{
queue.push_back(vecChild[i]);
}
}
// 왼쪽버튼 뗴면, 눌렸던 체크를 다시 해제한다.
if (bLbtmAway)
{
for (size_t i = 0; i < vecNoneTarget.size(); ++i)
{
vecNoneTarget[i]->m_bLbtnDown = false;
}
}
return pTargetUI;
}
|
cs |
어제 공부했던 구조를 수정해서 자식UI쪽에서도 마우스 입력을 받기 가능하게 설계를 하였다. 내일은 UI가 1개가 아니므로 2개이상의 UI를 관리가능한 방향으로 설계를 다시할 예정이다.
'개인공부 > Win32API' 카테고리의 다른 글
파일 입출력 (0) | 2023.01.08 |
---|---|
UI 기능 (0) | 2023.01.06 |
UI Manager (0) | 2023.01.04 |
Camera (0) | 2023.01.03 |
Animation- Component (0) | 2023.01.02 |