Computer/C, CPP, MFC
[CPP, MFC] 윈도우, 다이얼로그 최대화
초기화부분에서, this->ShowWindow(SW_SHOWMAXIMIZED); this->UpdateWindow(); 도움. SW_HIDE : 윈도우를 화면에 보이지 않게 한다. SW_MINIMIZE : 윈도우를 최소화한다. SW_RESTORE : 윈도우를 원래의 크기와 위치로 화면에 표시한다. SW_SHOW : 윈도우를 화면에 보이게 한다. SW_SHOWMAXIMIZED : 윈도우를 최대한 크게 하여 표시한다. SW_SHOWMINIMIZED : 윈도우를 최소한 작게 하여 표시한다. SW_SHOWMINNOACTIVE : 윈도우를 아이콘으로 표시한다. SW_SHOWNA : 윈도우를 현재 상태로 표시한다. SW_SHOWNOACTIVATE : 윈도우를 가장 최근의 크기와 위치로 표시한다. SW_SHOWNOR..
Computer/C, CPP, MFC
공용 언어 런타임 지원의 설정에 따라 빌드 결과값이 다르다?
오잉? 왜! 왜! 다르게 보이는거야??!? 예전에 만들어둔 MFC프로그램에서 보는것과 처리값이 다르게 보이는것이다. 오? 왜 이러지 내가 잘 못 만들었나? (그렇지... 컴퓨터는 거짓말 안하니까~) 디자인 파일이라서 데이터 하나하나가 중요한데.. 그래서 확인이 필요했다. 계산기 오픈!! hex 값 96 이면 dec로 150이 맞는데 오잉?! 오잉? 0.00001초 정도 하고... 당연하니까~ 계산기 처리 단위를 바꿔보았다. 그랬다. 뭐... 당연하고 사실 -106이 맞다.............................. 는 안돼!!! 난 저걸 원하는게 아니라고!!! 그래서 뭐가 문제일까? 단위도 바꾸고 비트도 자르고 했지만, 귀찮다.. 빌드 설정 문제인가 싶어서 프로젝트 속성을 확인했다. 의심되어 보..
Computer/C, CPP, MFC
CRegKey/SetValue 바꾸자
디자인변환 프로그램을 만들일이 있어서 오랜만에 C++를 만지작 만지작 하던 중, 레지스트리에 저장된 값을 불러오고, 저장할 일이 생겼다. 그래서 생각없이, 예전에 많이 사용하던 그때 그 코드로 사용했다. 저장할때, SetValue를... CRegKey RegKey; RegKey.Create(HKEY_CURRENT_USER, "블라블라"); RegKey.SetValue(nConversionEnabled, "이거블라블라"); RegKey.Close(); 그리고 빌드. 빌드. 빌드... 으움? 왜!!!!!!!! C4996이 뜨냐고!!!!! 그랬다. 또, 무언인가 고전틱한 고전고전의 느낌이라 취약점이 있겠지. 오버플로우가 생길수 있을려나... 바로 검색! 뚜뚱! 해당함수는 QueryValueEx , Setval..
Computer/C, CPP, MFC
ReadFile()
간단정리 RedFile(파일핸들, 저장버퍼 포인터, 읽어오는 바이트수,출력용인수, 비동기아니면 NULL) ReadFile() 파일에서 데이터를 읽어옴. 동기, 비동기 모두 사용가능함. 원형 BOOL ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped ); - HANDLE hFile: 읽고자 하는 파일의 핸들. 이 파일은 GENERIC_READ 액세스 권한으로 열어야 합니다. - LPVOID lpBuffer: 읽어 올 데이터를 저장할 버퍼의 포인터 입니다. - DWORD nNumberOfBytesToRead: 실제 읽어오는 바이트 수를 지..
Computer/C, CPP, MFC
SetFilePointer()
간단정보SetFilePointer(대상 파일의 핸들, 옮길 위치, NULL, 시작위치)파일을 처음 열었을때, 포인터의 위치는 파일의 처음, IO 처리에 따라 파일포인터가 자동으로 이동. SetFilePointer()파일 포인터를 원하는 위치로 옮길때 사용.32비트와 64비트를 동시에 지원하기 위해 2번째 인수와 3번째 인수를 통해 각 4바이트씩 64비트, 오프셋을 전달할수 있다.SetFilePointerEx 를 사용하는것이 좋다. 원형DWORD SetFilePointer( HANDLE hFile, LONG IDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod); - HANDLE hFile: 파일포인터를 옮기고자 하는 대상 파일의 핸들. - LO..
Computer/C, CPP, MFC
프로그램 종료
프로그래밍을 하던중 어떻게 하면 안전하게 프로그램을 종료할까 생각해보았다.바로 구글링 메모릭 발생 때문에..문제들이 대부분 발생하는것으로 보여지더라.. 아하! 그렇구나, 라고 다시 한번 느낀 후... 쓰던대로 그냥 'ExitProcess' 이거 사용하였다. 끝! 메인 다이얼로그::OnInitDialog()에서 프로그램을 종료하고 싶다.OnClose나 기타 메소드가 먹지 않거나 먹어도 메모리 충돌 오류메시지가 나온다.exit(0);를 넣어줘도 되나 비정상적인 terminated라 메모리 누수가 발생한다. 방법은 다음과 같다. ::SendMessage(this->m_hWnd, WM_CLOSE, NULL, NULL);혹은 ::SendMessage(GetSafeHwnd(), WM_CLOSE, NULL, NULL..
Computer/C, CPP, MFC
윈도우 버전 알아보기
int GetWindowsType(void) { /* return value : -1 : 버전얻기 실패 1 : Windows 95, 2 : Windows 98, 3 : Windows ME, 4 : Windows NT, 5 : Windows 2000, 6 : Windows XP, 7 : Windows 2003, 8 : Windows Vista, 2008 9 : Windows 7, 2008 R2 10: Windows 10, */ int nVersion = -1; OSVERSIONINFOEX osvi = { 0, }; BOOL version_ex_flag = 0; osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); if (!(version_ex_flag = GetVer..
Computer/C, CPP, MFC
timeSetEvent 와 친구들
이틀째, 프로그램에서 데이터를 보내주는걸 확인하는 부분이 있는데 (사실 이부분도 몰랐다..내가 만든게 아니니ㅜㅜ)계속 무한루프 걸렸는지 '응답없음' 으로도도한 녀석 같으니 대꾸가~ 없어!!!!!!!! 이리보고 저리보고 이부분일꺼라고 예상은 되었다.. WaitForSingleObject 예상은 했지만, 역시나... 이녀석과 같이 놀고 있는 녀석이 범인이였다.timeSetEvent이놈옴~!!! 재현이 1시간이상 걸리니.. ㅜㅜ지루해~ WaitForSingleObject 에서 받아야되는데 받지를 못하니.. 참고: WaitForSingleObject 자! 그럼 timeSetEvent에 대해서 알아보자.멀티미디어 타이머로 아주아주 높은 정확도의 타이머이다.일정한 주기마다 표시된 콜백 함수나 이벤트를 호출 한다. ..
Computer/ETC
Thread(스레드)
메인스레드 외에 다른 스레드를 사용하여 비동기로 동작할 필요성을 느끼게된다.이럴때 스레드를 사용하여 각각 독립적인 동작으로 사용할 수 있다.스레드를 분리하지 않고 메인스레드로만 이용한다면 다량의 데이터를 연산, 관리하는 부분에서 동작을 실행중이기 때문에 다른것들은 하지 못하고 그 동작이 끝날때 까지 기다려야한다. 스레드는 메인스레드와 독립된 동작이기 때문에 멤버변수나 해당클래스의 객체를 이용해서 접근해야한다.스레드 함수 안에서 해당클래스의 변수나 함수로 바로 접근할 수 없다. .h 헤더//타입은 UINT를 해야 하고 매개변수 lParam을 넘겨 주어야 한다static UINT ThreadProc(void *lParam); .cpp 구현AfxBeginThread(ThreadProc, this); nNum1..
Today6
Yesterday125
Total262,251