강의 도중에 교재에 있는 내용을 그대로 쳤는데도 에러가 나고 컴파일 되지 않을 경우, 에러를 찾기가 무척이나 힘듭니다. 저도 격어봐서 알지만, 자기가 짠 코드에서 철자 하나 틀리고 넘어가면 기본 20분은 헤매고 다닐거란 생각이 듭니다. 그래서, 대학 강의 받으러 다닐 때, 저는 참 winDiff 를 많이 사용한거 같군요. 두개의 소스 코드를 비교해 주는 프로그램입니다. 실행 후 File 메뉴를 보면 Compare File 과 Compare Directories 항목이 있는데요, Compare Directories 를 누르고, Dir 1에는 원본, Dir 2에는 자신이 책이나 강의 교재를 보고 짠 코드를 선택하면 다른 부분이 있는 파일을 빨간색으로 보여줍니다. (다만, 원본과 교재를 보고 짠 코드의 파일 ..
사용하다가 주로 격는 에러만 몇 가지 정리해 봅니다. 1. error C2065 : 'i' : undeclared identifier 변수를 잘못 선언하거나 선언하지 않은 경우 발생 2. error C2509 : 'OnLButtonDown' : member function not declared in 'XXXDlg' 함수를 잘못 선언하거나, 선언하지 않은 경우 발생 3. error LNK2001 : unresolved external symbol "protected: void_thiscall XXXDlg::OnLButton(....)" 함수를 선언만 해 놓고 소스 코드에 구현하지 않은 경우에 발생합니다. 4. MDI(다중도큐먼트)기반 프로그램에서 헤더파일을 인클루드 할 때에는 다음과 같이 도큐먼트 헤더가..
1. 스레드의 생성 CWinThread *pThread = ::AfxBeginThread(ThreadFunc, LPVOID) ThreadFunc : 스레드로 구동시킬 함수의 이름 LPVOID : 스레드에 넘겨줄 함수의 데이터나 구조체, 클래스의 포인터 2. 스레드의 구동 스레드에 들어갈 함수는 전역으로 다음과 같이 선언됩니다. UINT ThreadFunc(LPVOID param); 3. 스레드 종료 스레드 생성시 만든 pThread 포인터를 이용하여 TerminateThread 함수를 호출할 수 있습니다. 하지만, 스레드를 강제 종료시키는 일은 스레드가 자신이 사용한 메모리를 해제하는 일 등의 정리할 기회도 없이 갑자기 종료되므로, 많은 문제를 일으킬 수 있습니다. 따라서, 다음과 같이 while문의 조..
앱위젯에서 어떠한 상태를 저장하기 위해서는 단순히 메모리(static 변수나 intent )를 이용해서는 안됩니다. 그 이유는 핸드폰이 꺼졌을 경우에는 메모리 변수들은 사라지고, 또한 static으로 선언된 메모리 변수는 위젯을 삭제하게 되면 그 시점에서 가장 우선순위가 낮은 프로세스로 이동하게 됩니다. 그렇게 되면 언제든지 OS에 의해 변수를 포함한 프로세스가 종료될 수 있게됩니다. 앱위젯의 설정을 저장하는 것은 여러가지가 있지만, 본 포스트에서는 SharedPreferences 를 이용하여 설정을 저장하고 불러올 수 있도록 하겠습니다. 만들어볼 예제. Configure Activity에서 정수값을 저장하고 위젯에서 보여준다. 그 후에, 위젯에서 Configure Activity로 버튼을 눌러 이동하면..
안드로이드에서는 SDK 1.6 버전 이상부터는 위젯의 갱신 시간을 조절하는 android:updatePeriodMillis 를 기본 30분으로 지정하고 있습니다. 그 이유는 너무 잦은 화면 갱신은 베터리의 극심한!! 소모를 야기한다고 레퍼런스 문서에 나와있습니다. 따라서, 위젯의 업데이트 = 베터리의 소모 라는 것을 유념하여 주시고, 포스트 글을 봐주시기 바랍니다. 위젯을 업데이트 하는 방법은 2가지가 있습니다. 1. Background Service를 이용한 화면 갱신법 2. AlarmManager를 이용한 화면 갱신법. Service로 위젯을 업데이트하는 것은 베터리 소모가 조금 심합니다. 또한, 메모리 정리 어플에의해 종료가 될 수도 있지만, 몇초 단위의 업데이트를 할 수 있으므로, 알람매니저를 이..