본문 바로가기

MFC

[스크랩] - [컨트롤이야기] 아무도 말해주지않은 스크롤바 기능 스크롤바 관련해서 정보를 찾던 도중 유용하게 쓰일 정보를 발견해서 스크랩 하였다 Ospace님께 다시한번 감사 드립니다 --------------------------------------------------------------------------------------------------- [컨트롤이야기] 아무도 말해주지않은 스크롤바 기능 작성자: Ospace (ospace114 at naver.com) http://discount77.com/blog/ospace 스크롤바는 상당히 많이 사용하고 있는 컨트롤 중에 하나이다. 내용을 한 화면에 표시하지 못할 경우 그 일부를 표시하고 나머지 내용은 스크롤 바로 상하, 혹은 좌우로 이동하면서 볼 수 있게 한다. 또는 일정 정수 구간 값을 이동하면서 원하.. 더보기
SHGetFileInfo로 파일 속성 알기 SHGetFileInfo는 매우 유용한 API다 어찌나 친절한 지 File의 정보를 몽땅 건내준다 (심지어 아이콘 정보까지 말이다) 여기서는 간단하게 파일 속성을 알기 위한 용도로 사용했다 CString strDrive; SHFILEINFO shInfo; .... SHGetFileInfo(strDrive,0,&shInfo,sizeof(SHFILEINFO),SHGFI_TYPENAME | SHGFI_ATTRIBUTES); .... if ( !(shInfo.dwAttributes & SFGAO_HIDDEN) ) // 숨김파일은 제외한다 코딩 여기서 붉은색 플래그는 #define SHGFI_ICON 0x000000100 // get icon #define SHGFI_DISPLAYNAME 0x000000200 /.. 더보기
다이얼로그 가장자리 깎아내기 가장자리를 깎아낼 때 쓴다 void CXXXDialog::RoundEdge(CRect clientRect) { // 모서리를 둥글게 CRgn rgnTop; CRgn rgnBottom; // 상단 모서리를 자르고. rgnTop.CreateRoundRectRgn(0,0,clientRect.Width(),clientRect.Height(),9,9); rgnBottom.CreateRectRgn(0, clientRect.Height()-10, clientRect.Width()-1, clientRect.Height()); // 해당 영역을 합치고. CombineRgn(rgnTop, rgnTop, rgnBottom, RGN_OR); // 잘려진 영역을 적용하고 SetWindowRgn(static_cast(rgnTop.. 더보기
프로그램 Alt+F4 감지 프로그램에서 Alt+F4를 입력받으면 중간에 어떠한 일을 수행하고 종료를 해야 하는 경우가 있다 그 때 Alt+F4 를 감지해서 특정 일을 수행 한 후 종료하게 하려면 다음과 같이 작성해라 BOOL CDirectVideoDialog::PreTranslateMessage(MSG* pMsg) { // 중간 생략 if(pMsg->message == WM_SYSKEYDOWN && pMsg->wParam == VK_F4) { if (::GetKeyState(VK_MENU) < 0) { //여기에 할 일을 작성 return TRUE; } } // 중간 생략 } PreTranslateMessage에서 감지 하여도 되지만 WM_SYSCOMMAND에서도 처리할 수 있습니다. 아래와 같이 하면 프로그램 오른쪽 위에 있는 .. 더보기
리스트컨트롤 아이템 자동 선택 하기 리스트컨트롤을 사용하는데 자동으로 선택해와야 하는 경우가 생겨 찾아보니 데브피아에 저런 내용이 검색되었다 저도 같은 내용을 검색 하다가 다음과 같은 내용을 찾았습니다. 즐프.. ^^; ListCtrl::SetSelectionMark(int i) : i번째 item을 선택하는 것은 맞습니다. 단지 포커스까지 주지 않기때문에 표시(파란줄)가 되지 않을 뿐이지 내부적으로 현재 선택된 아이템은 i번째 아이템입니다. m_list1.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED) : 이것만 사용하시면 문제가 발생할 수 있습니다. 내부적으로 자동 선택된 아이템의 인덱스와 표시(파란줄)된 아이템의 인덱스가 달라질 수 있거든요.. 표시된 아이템을 삭제하려고 삭제 버튼을 눌렀는데 딴 아이.. 더보기