반응형

분류 전체보기 238

안드로이드 앱 커스텀 글꼴 넣기

출처 :http://t.dittos.pe.kr/post/9665021933 안드로이드 앱 커스텀 글꼴 넣기저는 안드로이드의 기본 글꼴 Droid Sans가 그다지 못생겼다고 생각하지는 않지만 글꼴은 앱의 인상에 상당히 큰 영향이 있는 것 같습니다. 특히 버튼 등 이미지로 만들어 놓은 UI와 동적으로 변하는 텍스트의 글꼴이 다르면 많이 어색합니다. 그래서 이 글에서는 앱 수준에서 전체적인 글꼴을 바꾸는 방법을 알아보겠습니다. 준비재배포가 자유로운 글꼴을 준비합니다. 사실 그런 한글 글꼴은 나눔글꼴이 거의 유일하죠. 영문 글꼴은 선택의 폭이 훨씬 넓습니다. 참고로 TrueType 글꼴보다 OpenType 글꼴의 용량이 훨씬 적은 것 같으니, otf 파일을 사용하시면 앱 용량이 무식하게 커지는 것을 막을 수 ..

Text자동 완성: AutoCompleteTextView

Text자동 완성: AutoCompleteTextView 인터넷 브라우져 같은 프로그램에서 제공하는 자동 완성 기능이 첨부된 TextView이다. 사용자가 특정 시점(android:completionThreshold 속성으로 조종)까지 입력한 data를 data set의 각 아이템 첫머리와 비교하여 일치하는 모든 data set의 item을 사용자에게 제시하여 사용자 입력을 최소화 할 수 있도록 한다. 다음은 클래스 상속 구조이다. 앞에서도 언급한 android:completionThreshold 속성은 사용자가 몇 글자를 입력했을 때부터 data set과 비교를 시작할 지를 정하며, 1~n의 정수를 속성값으로 입력 받는다. AutoCompletTextView에서 중요한 것은 selection liste..

Multi-thread programming(멀티 쓰레딩)

multithread programming(1) MFC에서의 Multithread OS는 구분하지 않지만 MFC는 사용자 편의를 위하여 두 가지 형태로 지원 1. Worker thread 2. User Interface thread Worker thread ::AfxBeginThread() 함수를 이용 CWinThread* ::AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, // 기본적으로 주 Process와 동일 UINT nStackSize = 0, DWORD dwCreateFlags = 0, // 0 또는 CREATE_SUSPENDED LPSECURITY_ATTRIBUT..

Program/C & C++ 2011.07.30

Multithread programming - Synchronization(2) (멀티쓰레딩의 동기화)

multithread programming - Synchronization(2) Critical Section 여러 Thread가 동시에 같은 메모리나 File을 Access하려고 할 경우 심각한 문제가 발생할 것이다. 이럴 경우 Critical Section으로 지정하면 하나의 Thread가 Access할 동안 다른 Thread가 Access하지 못하게 할 수 있다. stdafx.h 의 맨 아래 줄에 #include 를 추가하고 전역 변수로 CCriticalSection g_cs; 를 선언한다. 그래야 모든 Thread들이 Access할 수 있다. 이제 동시에 수행되어서는 안 되는 부분에 g_cs.Lock(); // 여기에동시에접근하면안되는코드를삽입한다 g_cs.Unlock(); Lock()~Unloc..

Program/C & C++ 2011.07.30

MFC를 이용한 범용 소켓을 이용한 예제

먼저 Stdafx.h 맨 아래 줄에 #include "afxsock.h" 추가한다. InitInstance() 함수에 CWinApp::InitInstance(); if (!AfxSocketInit()) { AfxMessageBox(_T("소켓 초기화 실패")); return FALSE; } ... 추가한다. 그런 다음 #include "ServerSocket.h" #include "DataSocket.h" ... // 멤버 변수로 선언 CServerSocket m_ServerSocket; CDataSocket m_DataSocket; ... // ServerSocket 초기화 m_ServerSocket.Init(this, 2000); ... // 메시지 처리기 만들어야 함, 헤더 파일에 다음 추가 afx..

Program/C & C++ 2011.07.30

소켓의 사용 유무

현재 소켓이 사용중인지 아닌지 어떻게 알 수 없을까? ==> 다음과 같이 간단히 해결할 수 있습니다. 소켓 객체는 멤버변수로 m_hSocket을 가지고 있는 데, 이 멤버는 현재 객체에 붙어있는 소켓의 핸들입니다. 이 소켓이 생성되고 소멸되지 않아서 현재 생존기간 중이라면 이 값은 결코 INVALID_SOCKET 이 아닙니다. if(m_hSocket != INVALID_SOCKET) { // 소켓이 생존 중일때 처리. } else { // 소켓이 닫혔을 때 처리 } 주의할 것은, 소켓이 생존중이라고 해서 반드시 연결상태는 아니라는 것입니다. Close()를 호출하면 소켓핸들은 파괴되고, m_hSocket의 값은 INVALID_SOCKET 이 됩니다.

Program/C & C++ 2011.07.29
반응형