본문 바로가기

X-dea

(120)
Android Launch image 팅김 안드로이드 첫 시작시 나오는 스플래시 이미지의 크기를 ios 크기에 맞춰서 크게 잡았더니 크래시가 발생함 스플래시의 이미지의 픽셀이 너무 높을 경우 일부기기에서 로딩을 하지 못하는 현상으로 크래시가 발생 아래의 에러코드를 살펴보면 잡다한게 많지만 이미지를 그리지 못한다는 메세지가 다수 보임 해결 방법 : 안드로이드 화면크기의 픽셀크기로 splash 이미지로 만들어야함 [Google Play Console에서 남겨진 비정상 종료 로그]java.lang.RuntimeException: at android.view.DisplayListCanvas.throwIfCannotDraw (DisplayListCanvas.java:260) at android.graphics.Canvas.drawBitmap (Canvas..
Android Studio 3.0.1 webview [Android] Android Studio 3.0.1 WebView 이용 1. 메니페스트 설정 위에 인터넷을 이용하겠다는 퍼미션을 등록해줘야 함. 2. 화면.xml 설정 화면을 꽉 채우는 형태로 넣어 봄. 3. Activity.java 설정public WebView mWebview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebview = (WebView) findViewById(R.id.screen_main); WebSettings webSettings = mWebview.getSettings..
MFC 수정가능한 ComboBox 구현 ■ Editable한 ComboBox의 Item 변경하기( Combo Type은 DropDown ) 1. 콤보박스 생성2. (선택)콤보박스 멤버변수 만들기3. 콤보박스 이벤트( CBN_EDITCHANGE )추가 4. CBN_EDITCHANGE함수에서 m_Combo.GetWindowText( CString )를 통해 콤보박스에 입력된 스트링을 불러옴( ※ 이때 GetCurSel의 반환값이 선택된 위치가 아닌 CB_ERR를 반환하게 됨 즉, 수정 후에는 GetCurSel이 파괴됨 -1을 반환하니 65535 이런값을 반환해줄것임 WORD형이니깐 )5. 수정하고자하는 콤보의 위치의 아이템을 DeleteString( index ); ( ※ 찾아봤지만 InsertString은 가능하지만 이후에 수정하는 함수는 없는..
호출스택( call stack )이 제대로 보이지 않는 경우 주로 포인터 NULL참조를 할 때 발생하는 경우이다.그런데, visual studio에서 콜스택을 제대로 보여주지 않은 경우가 있을 수 있다.아래와 같은 경우이다. 이런 경우 정확히 어딘가에서 NULL포인터를 참조 하는지 알 수가 없다.따라가보면 Library 까지 들어가기 때문에 이는 역시 어디가 문제인지 알 수가 없다. 그래서 디버그 옵션에 예외에 보면 해결할 수 있는 방법이 있다. 디버그 예외설정에 Win32 Exceptions 트리를 눌르면 Access violation이 있는데 이것을 체크해주면 정상적으로 작동이 된다. 자체 IDE에서 접근불가에 대한 crash를 깊게 라이브러리단 까지 표현해 주는 것인데, 여기서 체크를 해주면 해당코드에서 멈추게 된다. 그러면 호출 스택이 안깨지고 어디에서 N..
visual studio 빌드 속도 향상 1. HDD보다는 SDD( 환경적 요소 )2. Stdafx.h 이용3. 프로젝트 속성->구성 속성->C/C++->코드생성에서 "최소 다시 빌드 가능" 아니요(/GM-)설정( 멀티프로세서 컴파일을 하기 위해서 필요함 )4. 프로젝트 속성->구성 속성->C/C++->일반에서 "다중 프로세서 컴파일" 예(/MP) 설정 실제로 확인하기 위해선 컴파일 하는 중 작업관리자에 CPU 사용률을 보면 제대로 적용되었다면 CPU 사용100%로 컴파일 하는 것을 확인해볼 수 있다.
MFC Ctrl+C, Ctrl+V virtual BOOL PreTranslateMessage(MSG* pMsg); BOOL Class::PreTranslateMessage(MSG* pMsg){// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.if( pMsg->message == WM_KEYDOWN ){if( pMsg->wParam == 'c' || pMsg->wParam == 'C' ){if( GetKeyState( VK_CONTROL ) < 0 ){// 처리}}}return CDialogEx::PreTranslateMessage(pMsg);} WM_KEYDOWN 메시지를 처리하는 방식으로 해도 무관.
MFC List Control 복사 붙여넣기 BOOL CopyToClipboard( CListCtrl* pListCtrl, LPCTSTR lpszSeparator = _T( "\t" ) ); BOOL Class::CopyToClipboard( CListCtrl* pListCtrl, LPCTSTR lpszSeparator /*= _T( "\t" ) */ ){ASSERT(pListCtrl && ::IsWindow(pListCtrl->GetSafeHwnd())); CString sResult;POSITION pos = pListCtrl->GetFirstSelectedItemPosition();if (!pos)return TRUE; CWaitCursor wait;int nItem, nCount = 0;int nColumn = 1; if ((pListCtr..
문자열과 각 타입간의 변환 void CUtil::CStringToString( std::string* p_Dest, CString p_Obj ){*p_Dest = p_Obj;} void CUtil::StringToCharArray( char* p_Dest, std::string p_Obj ){strcpy( p_Dest, p_Obj.c_str() );} void CUtil::CStringToCharArray( char* p_Dest, CString p_Obj ){std::string temp = p_Obj;strcpy( p_Dest, temp.c_str() );} void CUtil::CStringToUINT( __time64_t* p_Dest, CString p_Obj ){*p_Dest = _tcstoui64( p_Obj, NUL..