일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정보처리기사
- MyTread
- ListBox
- SSG
- C
- 포트폴리오
- 도움말
- C언어
- tips강좌
- Time
- mysql
- 핵심 요약
- 정처기 독학
- MyThread
- win32
- 유료강좌
- 충무창업큐브
- 별찍기
- linux
- MFC
- C++
- MFC 예제
- mfc 실습
- 김성엽
- Tipsware
- 미가공
- 마이크로소프트
- do it c
- 실습
- visual
- Today
- Total
History
[MFC] static컨트롤 하이퍼링크 적용하기 본문
MFC에서 자주 사용하는 Static Text Control에 하이퍼 링크 기능을 적용하는 방법에 대해서 설명하겠다.
하이퍼 링크의 사전적 용어는 아래 네이버 사전 용어 링크를 첨부하겠다.
https://terms.naver.com/entry.naver?docId=861505&cid=42346&categoryId=42346
하이퍼링크
하이퍼텍스트 문서 내의 하나의 단어나 구(phrase), 기호, 화상과 같은 요소와 그 문서 내의 다른 요소 또는 다른 하이퍼텍스트 문서 내의 다른 요소 사이의 연결. 하이퍼텍스트 링크, 핫 링크라고
terms.naver.com
우선 Dialog에 들어가서 Static Text Control을 윈도우에 생성시킨다. 그러면 아래 그림과 같이 나올 것이다.
그 후 Static Text Control의 속성에서
1. Static Text Control의 ID를 부여한다. 필자는 IDC_LINK_STATIC이렇게 아이디를 부여했다.
2. 알림->TRUE 이렇게 바꾼다.
위 두 작업을 한 이유는 Static Text Control를 클릭했을 때 메시지를 처리하기 위함이다.
알림 속성은 자식 윈도우에게 발생한 이벤트를 부모 윈도에게 알리기 위해 사용된다.
위의 작업이 끝났으면 Static Text Control의 이벤트 처리기를 생성한다.
이벤트 처리기는 Static Text Control을 누르고 우클릭하면 이벤트 처리기를 추가할 수 있다.
필자는 Static Text Control이 클릭되는 순간 이벤트가 발생되게 만들겠다.
void CMFCApplication27Dlg::OnStnClickedLinkStatic()
{
ShellExecute(NULL, L"open", L"chrome.exe",L"https://hard-go-head.tistory.com/", NULL, SW_SHOW);
}
ShellExecute 함수를 사용해서 크롬으로 필자의 주소를 크롬으로 접속한 후 사용자에게 보여주겠다.라는 속성을 주었다.
추가로 시각적으로도 하이퍼링크처럼 보이게 하고 싶으면, OnCtlColor 메시지를 추가해서 글자색을 변경해줄 수 있다.
그러면 아래 이미지와 같다.
코드는 아래와 같다.
HBRUSH CMFCApplication27Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd!=NULL&& pWnd->GetDlgCtrlID()==IDC_LINK_STATIC){
pDC->SetTextColor(RGB(0, 188, 188));
}
return hbr;
}
이렇게까지 적용시켰는데 뭔가 하이퍼링크에 밑줄과 굵기가 추가되면 더 이쁠 것 같다.이 작업을 하기위해 그냥 폰트를 생성하고 API를 사용해서 써도 되지만, LOGFONT 구조체를 사용하여 하이퍼링크를 꾸며보도록 하겠다.
우선 헤더에 폰트 객체를 선언한다.
private:
CFont m_font;
그 후 OnInitDialog()에서 아래 코드를 작성해준다. 그러면 좀 더 이쁜 하이퍼링크가 완성될 것이다.
LOGFONT font_info; //구조체 변수 선언
::GetObject(GetStockObject(DEFAULT_GUI_FONT), sizeof(LOGFONT), &font_info);
//현재 시스템이 사용하는 기본 폰트 속성을 얻어와서 기존 속성은 유지하고 바꾸고 싶은 속성만 변경할 수 있게 해준다.
font_info.lfUnderline = TRUE; //밑줄 적용
font_info.lfWeight = 2000; //굵기 적용
memcpy(font_info.lfFaceName, L"굴림체", sizeof(L"굴림체")); //굴림체 속성 부여
m_font.CreateFontIndirect(&font_info); //사용자가 재정의한 폰트 속성으로 폰트 생성
GetDlgItem(IDC_LINK_STATIC)->SetFont(&m_font); //static text 컨트롤에 적용
//GetDlgItem(IDC_LINK_STATIC)->SetWindowText(L"내 주소"); //사용자가 하이퍼링크 이름 수정할 수 있음
위 코드까지 적용하고 실행하면 아래와 같다.
확실히 좀 더 하이퍼링크처럼 만들어졌다.
'MFC > 개념 정리' 카테고리의 다른 글
[MFC] WindowFromPoint 함수 (0) | 2022.10.26 |
---|---|
[MFC] WM_CTLCOLOR 메시지 처리 코드(Static, Edit) (0) | 2022.10.26 |
[MFC] 아이콘 간단하게 바꾸는 방법 (2) | 2022.10.02 |
DragQueryFile 사용방법 및 예시 코드 (0) | 2022.07.23 |
윈도우 기본 스크롤바 기초 (0) | 2022.02.01 |