Study Memos/Windows Programming (66) 썸네일형 리스트형 Drag and Drop (Section 71) 참고> blog.naver.com/tipsware/221148420395 1. 프로그램에 파일 Drop이 불가능할 경우 해당 윈도우가 WS_EX_ACCEPTFILES 라는 확장 속성을 가지고 있지 않아서 그렇다. -> WS_EX_ACCEPTFILES 속성을 사용하려면 CreateEx() 함수로 윈도우를 생성할 때 이 속성을 넣어주면 됨 2. 파일이 윈도우에 Drop되면 해당 윈도우에 WM_DROPFILES 메시지가 발생함 3. Drag and Drop을 사용하려면 운영체제의 Shell API를 사용해야 하기 때문에 'shellapi.h' 헤더 파일을 추가해야 함 4. GetFileAttributes(): 경로를 넣어주면 해당 항목의 파일 속성 값을 반환해줌 -> 비트 연산자를 이용하여 FILE_ATTRI.. 비어있는 Zip 파일 만들기 (Section 70) 참고> blog.naver.com/tipsware/221147948788 1. 빈 파일에 Zip 파일 헤더 정보를 넣어주면 비어있는 Zip 파일을 만들 수 있다. -> unsigned char table[22] = {0x50, 0x4B, 0x05, 0x06, 0x00,}; fwrite(table, 1, 22, p_file); fclose(p_file); ListBox의Owner Draw 속성 사용법 (Section 69) 참고> blog.naver.com/tipsware/221147732296 1. ListBox에서 'Owner Draw' 속성을 사용하려면 IDC_FRIEND_LIST 컨트롤의 'Owner Draw' 속성을 Visual Studio에서 찾은 후 'Fixed'로 변경해야 함 => 항목을 추가할 때 문자열을 기존처럼 사용하려면 'Has Strings' 속성을 'True'로 해야 함 ListBox 배경 색상 변경 (Section 68) 참고> blog.naver.com/tipsware/221147541743 1. ListBox의 배경색은 'Owner Draw' 로 변경이 안되서 WM 메시지를 사용해야 함. 2. WM_CTLCOLOR : 컨트롤에서 사용할 DC의 상태 값을 설정할 수 있게 해주는 메시지 3. 예전 16bit Windows 운영체제에서는 WM_CTLCOLOR 메시지를 썼지만 이후에는 WM_CTLCOLORBTN, WM_CTLCOLORLISTBOX 등 각 컨트롤별로 메시지가 세분화됨 4. 대화상자의 윈도우 프로시저에서 WM_CTLCOLORLISTBOX 메시지 처리를 추가해주면됨 => 리턴 값으로 ListBox가 사용할 배경 Brush 객체의 핸들 값을 반환해주면 ListBox는이 Brush 객체로 배경을 그려줌 => 글자색, .. 빨간색 버튼 만들기 (Section 65) 1. Owner Draw 기술: Windows 운영체제가 개발자로 하여금 컨트롤의 색상을 자신이 원하는 색상으로 변경할 수 있도록 지원해주는 기술 -> 컨트롤의 'Owner Draw' 속성을 True로 하면 해당 컨트롤은 스스로 그림을 그리지 않음. -> 컨트롤이 다시 그려져야 할 때마다 WM_DRAWITEM 메시지를 대화 상자로 보내서 사용자가 직접 그릴 수 있도록 함 Notify 메시지 (Section 63) 참고> blog.naver.com/tipsware/221144458154 1. Notify 메시지: 자식 Window에 일어난 사건을 부모 Window에게 알리기 위해 전달하는 메시지 ex) 부모 Window내의 자식 Widnow인 버튼을 클릭했을 때 부모가 그 이벤트를 알고 싶을 때 2. Windows 기본 컨트롤은 비교적 단순한 작업만 수행하기 때문에 WM_COMMAND 메시지로 Notify를 하면 됨 3. Windows 운영체제가 발전하면서 컨트롤들이 점점 복잡해졌고, WM_COMMAND 메시지로는 Notify 정보를 저장할 수 없게 되어 WM_NOTIFY 메시지가 새롭게 추가됨 4. 컨트롤마다 Notify 정보가 다르기 때문에 C 언어의 포인터 문법을 OOP의 다형성 개념과 비슷하게 사용함. 그래.. ListBox (Section 61) 참고> blog.naver.com/tipsware/221143564746 1. ListBox는 대량의 문자열도 관리할 수 있도록 하기 위해 Linked List 자료구조를 기반으로 만들어짐. 2. ListBox도 윈도우이므로 메시지 사용 가능 -> ListBox와 같이 다양한 기능을 가진 컨트롤은 메시지를 통해서 사용할 수 있도록 구현되어 있음. -> SendMessage() 함수 이용 3. 대화 상자에 추가되는 컨트롤들은 대부분 윈도우이므로 GetDlgItem 함수로 해당 컨트롤의 윈도우 핸들 값을 얻어올 수 있음. 4. LB_SETCURSEL 메시지 : ListBox에 방금 추가된 문자열이 어떤 것인지 확인할 수 있는 메시지 5. LB_RESETCONTENT 메시지 : ListBox에 추가된 전체 문.. 에디트 간 문자열 복사 (Section 60) 참고> blog.naver.com/tipsware/221142391101 1. GetDlgItemText 함수: 문자열을 표시하는 모든 대화 상자의 컨트롤에서 문자열을 얻어 올 수 있는 함수 2. Visual Studio 솔루션 다시 검사 기능을 활용하면 Visual Studio 의 오류를 바로 잡는 경우가 있음. 지금까지 나는 무조건 재빌드를 했었음. 이전 1 2 3 4 5 6 ··· 9 다음