일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ListBox
- 정처기 독학
- do it c
- 별찍기 기초
- tips강좌
- 충무창업큐브
- mfc 실습
- C++
- MFC 예제
- 마이크로소프트
- 실습
- 핵심 요약
- linux
- mysql
- MyThread
- win32
- 별찍기
- 유료강좌
- C
- 도움말
- MFC
- Tipsware
- 정보처리기사
- 미가공
- C언어
- 포트폴리오
- SSG
- 김성엽
- Time
- MyTread
- Today
- Total
목록MFC/개념 정리 (14)
History
UpdateData(true); //컨트롤의 값을 변수로 전달 UpdateData(false); //변수의 값을 컨트롤로 전달 UpdataData는 컨트롤과 변수의 값이 변경되면 갱신해 주는 함수이다. 기본값은 TRUE로 설정되어있다. MFC는 컨트롤과 값을 사용자가 고쳤다고 해서 스스로 판단하여 갱신시켜주지 않기 때문에 UpdataData와 같은 함수를 사용하는 것인데, 이때 사용자가 값이 변화가 생겨서 갱신시켜줘야 하는 컨트롤이 DoDataExchange에 컨트롤과 변수가 연결된 상태여야 한다. 사용 예시는 아래 내가 쓴 링크를 보고 참고하면 된다. https://hard-go-head.tistory.com/entry/MFC-STATIC-%EC%BB%A8%ED%8A%B8%EB%A1%A4-%ED%85%..
Edit컨트롤을 다루다 보면 tab키랑 enter키를 입력받는 경우가 있는데 아무 예외처리를 하지 않으면 다른 컨트롤로 포커스를 빼앗기거나 프로그램이 IDOK를 만나 꺼지는 경우가 있다. 이러한 경우 PreTranslateMessage 가상함수에서 키보드 관련 이벤트 예외를 처리해줘야 한다. 아래 코드를 보면 WM_KEYDOWN을 사용해서 키보드가 눌렸을 때를 체크한다. 그리고 그 메시지가 VK_TAB(TAB키의 상수값이다.) 인지 확인한다. 마지막으로 현재 메시지의 핸들이 내가 선택한 Edit의 핸들과 같은지 확인하고, 조건문 안에서 원하는 처리를 해주면 된다. 난 들여쓰기 기능과 Enter 기능을 쓰고 싶어서 아래 코드처럼 작성했다. BOOL CMFCCalenderDlg::PreTranslateMes..
SendMessage BOOL SendMessage( [in, optional] HWND hWnd, // 메시지를 받을 윈도우 핸들 [in] UINT Msg, // 전달할 메시지 [in] WPARAM wParam, [in] LPARAM lParam ); -동작 순서 - 메시지를 메시지 큐에 넣는 것이 아니라 곧바로 윈도우 프로시저(WinProc)로 보내 즉각 처리하도록 한다. - 메시지가 완전이 처리되기 전에 리턴하지 않는다.(블록 시킨다.) -장점 - 보낸 메시지의 정확한 처리 -단점 - 보낸 메시지가 완전히 처리될 때까지 기다리므로, 메시지를 보낸 쪽은 블록 상태에 머물게 된다. - 잘못하면 프로그램이 계속 멈춰있는 상태로 머물 수 있다. *멀티 스레드 사용할 시 SendMessage는 사용에 위험이..
static 컨트롤을 기본적으로 실행해 놓으면 뒤에 배경과 색상이 검은색으로 출력된다. 이러한 것을 바꾸기 위해 WM_CTLCOLOR 메시지 함수를 사용해서 static 컨트롤을 제어할 것이다. 모든 static컨트롤을 제어하고 싶으면 CTLCOLOR_STATIC 상수를 이용하면 사용한 모든 static을 제어할 수 있다. 마찬가지로 edit컨트롤도 CTLCOLOR_EDIT 상수를 이용하면 사용자가 사용한 모든 edit 컨트롤을 제어할 수 있다. 참고 코드는 아래와 같다. HBRUSH CMFCApplication3Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlCo..
보통 컴퓨터를 사용하다 보면 어떠한 아이콘에 마우스 포인터를 길게 갖다 놓을 때가 있다. 이 경우 컴퓨터에서는 툴팁이라는 기능을 제공한다. 예를 들어 내 PC 아이콘에 마우스 포인터를 길게 갖다 놨으면, 툴팁은 아래와 같다. 이제 예제를 만들어 보겠다. Dialog에서 아래와 같이 버튼을 만들었다. 첫 번째로 헤더에서 아래와 같이 선언을 해준다. CToolTipCtrl m_ctrl_tip_ctrl[4]; //툴팁 사용을 위해 .h에 CToolTipCtrl객체 생성 두 번째로 OnInitDialog()에서 툴팁이 출력될 컨트롤의 ID목록과 문구를 배열을 만든다. // 툴팁이 출력될 컨트롤의 ID 목록 int ctrl_id[MAX_CTRL_TIP_COUNT] = { IDC_TEST1_BTN, IDC_TEST..
1. 함수의 원형 LPARAM MAKELPARAM(WORD wLow, WORD wHigh); 2. 함수의 기능 이 매크로 함수는 16비트 크기의 변수인 wLow 와 wHigh의 값을 32비트 크기로 합쳐서 반환하는 함수이다. wLow는 32비트중에서 하위 16비트에 저장되고 wHigh는 상위 16비트에 저장된다. 윈도우즈 메시지에 포함되어 전달되는 두개의 인자중 하나인 lParam 을 구성할때 사용한다. 3. 함수의 반환값 wLow와 wHigh 값을 32비트 데이터로 합쳐서 반환한다. wLow값이 0x2345 이고 wHigh값이 0x6789라면 0x67892345 라는 값이 반환된다. 4. 사용 예제 마우스 좌표를 얻어서 다른 윈도우로 그 좌표를 전달해야하는데 메시지를 이용한다고 가정하자. 하지만, w..
WM_COMMAND 메시지 1. 대화상자나 윈도우에 만들어진 버튼 같은 컨트롤을 누르거나 리소스에 등록된 단축키를 사용하거나 메뉴에서 항목을 선택하면 WM_COMMAND 메시지가 발생한다. 2. WM_COMMAND 메시지는 다양한 상황에서 발생하기 때문에 메시지와 함께 전달되는 wParam과 lParam에 저장된 정보로 구분한다. 3. lParam이란? - 컨트롤의 핸들 값이다. - 버튼과 같은 컨트롤을 눌러서 WM_COMMAND 메시지가 발생했으면 lParam 변수에는 이 메시지를 발생한 컨트롤의 HWND 값이 저장되어 있다. 그러나 단축키와 같은 컨트롤이 아닌 경우에는 lParam에 NULL이 저장되어 있다. 4. wParam이란? - 상위 16비트에는 대부분 통보 코드(Notification cod..
WindowFromPoint 함수는 자신의 윈도우가 아닌 다른 윈도우에서 마우스 위치에 있는 윈도우의 핸들 값을 얻는 함수이다. 이 함수를 이용하면 크롬이나 카카오톡 등 pc에서 실행중인 모든 프로그램의 핸들 값을 가지고 올 수 있다. 이 함수는 마우스 위치를 얻어야 하는 함수이기 때문에 매개 변수로 POINT 값이 들어간다. 윈도우가 없으면 NULL값을 반환하지만 화면 영역을 넘어가지 않는 이상 NULL이 반환될 일은 없다. HWND WindowFromPoint(POINT point); 그래서 이 함수는 마우스의 위치를 알아야 하기 때문에 GetCursorPos함수와 같이 사용하는 것이 일반적이다. POINT a_pos; ::GetCursorPos(&a_pos); //마우스의 위치를 윈도우 좌표계로 얻..