목록프로그래밍/MFC (6)
개발자 블로그
문제의 현상을 조금 구체적으로 설명하면, 일단 Windows7에서는 문제가 안되고, Windows10에서만 발생한다. (Windows8은 없어서 테스트 못해 봄) 트레이 영역에 생성한 아이콘을 마우스 우클릭 했을 때 컨텍스트 메뉴를 띄워주는데, 윈도우의 시작표시줄을 우클릭 했을 때 뜨는 컨텍스트 메뉴가 동시에 떠버리는 현상이다. 같이 뜨는 것 자체도 문제지만, 이렇게 동시에 떴을 때 아래 이미지처럼 z-order가 시작표시줄이나 시스템 컨텍스트 메뉴보다도 더 밑에 위치해 있어서 선택하는 것 역시 쉽지가 않다. 문제의 원인을 파악하는건 어렵지만 해결 방법은 매우 간단한 경우가 많은데, 이번에도 그랬다..마우스 우클릭 이벤트를 잡는 부분의 코드를 WM_RBUTTONDOWN 이벤트를 잡아서 처리했는데, 이걸 ..
즐겨찾기를 정리하다가 예전에 추가해놓았던 RichEdit 컨트롤 관련 자료들을 그냥 삭제하기 아까워서 정리를 해둘까한다.그 때 당시 만들던 MFC 프로그램이 원래 그냥 에디트 컨트롤을 사용했었는데 키워드 강조 기능을 추가하기 위해서 RichEdit 컨트롤로 전환을 했었다. 그 과정에서 문제가 생긴게.. 텍스트의 양이 늘어나면 키워드 강조를 위해서 소모되는 시간이 굉장히 크게 증가했었다. 이 문제를 해결하기 위해서 찾았었던 자료들이다.자 그럼 느려터진 RichEdit 컨트롤의 속도를 향상시키기 위해서 찾아봤었던 자료들.. 1. Fast HTML syntax highlighting with the Rich Edit control - Code Project 2006년도 자료라서 그런건지 데모 프로그램이 제대로..
비슷한 문제를 겪을 사람이 얼마나 될지는 모르겠지만,, 일단 기록해둔다. 우선 ZipArchive 라이브러리는 MFC에서 사용할 수 있는 zip 파일 압축 및 해제 라이브러리다. MFC에 내장된 클래스는 아니고, Code project에서 다운받은 라이브러리다. (여기를 클릭하면 해당 글로 이동함.)요즘은 MFC를 사용하는 사람도 적을 것 같고, 또 컴파일 할 때 에러가 나기 때문에 최신버전의 visual studio에서는 사용이 불가능하다.개발자의 사이트에서 최신버전의 라이브러리를 다운받을 수 있지만 소유권을 주장할 수 있는 프로그램에 사용하는것은 라이센스 위반이다. 이 경우에는 라이브러리를 별도로 구입해야 한다. 뭐 꼭 라이브러리 홍보하려고 쓰는 것 같네. 어쨌든 나는 더이상 사용 안한다. MFC를 ..
윈도우 프로그램에서 시스템 날짜를 변경해야 하는 경우, 해당 기능을 하는 소스코드. 아래 예제는 시스템의(운영체제) 날짜를 2014년 2월 1일로 변경함. (원하는 경우 시간도 변경 가능) SYSTEMTIME new_time; // windows system 날짜 변경 GetLocalTime(&sys_time); new_time = sys_time; /* TCHAR buff[1024]; swprintf(buff, _T("%d년, %d월, %d일"), new_time.wYear, new_time.wMonth, new_time.wDay); MessageBox(buff); */ new_time.wYear = 2014; // 원하는 날짜 new_time.wMonth = 2; new_time.wDay = 1; S..
아주 잘 정리된 페이지가 있어서 링크로 대체함.영어라서 좀 그렇긴한데.. 크게 어려운 내용은 없고 어차피 코드가 중요하니깐.. 아래 링크에서는 총 3가지 방법을 소개하고 있는데난 첫 번째 방법을 사용했음(참고로 저자가 추천하는 방법은 아니라고 함. GetAdaptersInfo를 사용하기를 추천하고 있음.)이유는 어차피 키 생성을 목적으로 단지 유니크한 시드값을 원했기 때문에가장 코드가 단순한 첫 번째 방법을 사용(UuidCreateSequential)여러개의 네트워크 어탭터가 있다 하더라도해당 함수로 얻을 수 있는 MAC address는 하나밖에 없다는점을 유의 ※ 관련글 보기 ☞ Three ways to get your MAC address.
MFC에서 날짜 계산을 하기 위해서 CTimeSpan을 사용한다.하지만 CTimeSpan 클래스의 생성자는 최대 날짜단위의 계산을 제공한다.그러니깐, 180일 전후의 날짜를 얻을 수는 있지만, 3개월 또는 6개월 뒤의 날짜를 얻기 위해서는 별도의 계산을 해야된다. 여기서 고려해야 될 사항은월마다 일 수가 각각 다르다는 점(30일, 31일)윤년을 고려해야 된다는 점이렇게 있다. 윤년의 계산방법은 아래와 같다.년(year)을 4로 나눠서 나누어 떨어지면 윤년다만 100으로 나누워서 떨어지면 윤년아님다만 400으로 나누워서 떨어지면 윤년 이런 사항들을 고려해서 만든 fnAddMonth 라는 함수다.CTime fnAddMonth(CTime& _time, int _month) { CTime new_time; ne..