본문 바로가기

반응형

c++

(13)
[c++] 모던 C++ 동시성 프로그래밍의 실제 (1) - c++ 메모리 모델. 원자계 atomic. 자리가 사람을 만든다고 오늘도 어김없이 업무가 주어지고 항상 아무것도 모르는 상태로 실무에 들어가는 느낌이다. 아직까지도 포인터를 사용할 때마다 shared_ptr, unique_ptr을 구글에 검색해 보고 있고, 검색할 때마다 새롭다. 메모리 모델 atomic 원자계 연산 : 방해받지 않고 수행될 수 있는 연산 연산의 부분 순서 : 순서가 재지정되어야 하는 일련의 연산 원자계 스마트 포인터 std::shared_ptr과 std::weak_ptr은 동시성 프로그램에서 개념적 문제를 가짐 : 변형 가능한 데이터를 공유해서 데이터 경쟁에 취약. 리소스에 대한 접근이 원자계임을 보장하지 못함. std::atomic_shared_ptr과 std::atomic_weak_ptr 멀티스레딩 스레드 std::threa..
Xcode14 사용기 (1) - console app 1. 실행 2. console app 만들기 3. 프로젝트 명 4. 프로젝트 속성 : "File-Project Settings" 빌드 시스템 및 빌드 output path를 설정할 수 있다. 5. 빌드 & run : 빌드 : command + B 실행 : command + R *Derived Folder하위(DerivedData/helloWorld/Build/Products/Debug)에 빌드 파일 생성됨을 확인함. 6. 디버깅 : - breakpoint 추가 : command + \ 디버깅 시 visual studio의 진단도구와 같은 기능이 좌측에 표시된다.
JavaScript와 MFC간 통신 JS에서 MFC함수 호출 //MyHtmlClass.h class CMyHtmlClass: public CDHtmlDialog { DECLARE_DISPATCH_MAP() VOIDMfcFunc(LPCTSTR _strParam1, LPCTSTR _strParam2); } //MyHtmlClass.cpp BEGIN_DISPATCH_MAP(CEzCallManagerMainDlg, CDHtmlDialog) DISP_FUNCTION(CMyHtmlClass, "MfcFunc", MfcFunc, VT_EMPTY, VTS_BSTR VTS_BSTR) END_DISPATCH_MAP() BOOL CMyHtmlClass::OnInitDialog() { CDHtmlDialog::OnInitDialog(); EnableAutoma..
[MFC] PostMessage/SendMessage 문자열 인자 넘기기 문자열 인자 넘기기 CString *pstrString = new CString(strString); //new 해야함. ::PostMessage(hWnd, UM_MY_MESSAGE, (WPARAM)0, (LPARAM)pstrString); LRESULTCMyClass::OnMyMessage(WPARAM wParam, LPARAM lParam) { CString* pstrString = (CString*)lParam; CString strString= pstrString->GetString(); //TODO : ......................... return 0; }
[MFC] static Thread 생성, 사용 CreateThread, SetEvent, WaitForSingleObject Thread 선언, 생성 staticDWORD WINAPI MyThread(LPVOID pArg);//선언 HANDLEhMyEvent; hMyEvent = CreateEvent( NULL, FALSE, FALSE, "MY_EVENT_NAME" ); DWORD WINAPI MyThread(LPVOID pArg) { while( TRUE ) { DWORD dwWaitObject = WaitForSingleObject(hMyEvent, 1000);// 1000 : 1초 대기 WAIT_TIMEOUT. if( dwWaitObject == WAIT_TIMEOUT ) { // TODO: } else if( dwWaitObject == WAIT_OBJECT_0 ) { // TODO: } else { // TODO: }..
[MFC] CEdit 에디트 박스 KillFocus, 포커스 제거 CEdit 에서는 KillFocus가 안됨... BOOL CMyClass::PreTranslateMessage(MSG* pMsg) { if(pMsg->message == WM_LBUTTONDOWN) { if ( pMsg->hwnd == ((CEdit *)GetDlgItem(IDC_MY_EDIT))->m_hWnd) { /// } else { SetFocus(); //현재를 포커스로 둠. 그럼 해제됨. } } }
[MFC] Edit 에디트 입력 제한하기. SetLimitText는 길이만, 바이트 단위로 제한 안되므로... SetLimitText는 길이만 제한되고 바이트 단위로 제한 안됨. 하지만 한글은 2byte character. 에디트에 UM_UPDATE추가void CMyClass::OnEnUpdateEditMyEdit() { UpdateData(TRUE); CString strReturn = ""; m_edMyEdit.GetWindowText(strReturn); INT nMaxLen = MultiByteToWideChar(CP_UTF8, 0, strReturn, -1, NULL, 0); if (nMaxLen > (MAXLEN + 1) && m_nIndex != 1) { DWORD dwSel = m_edMyEdit.GetSel(); m_edMyEdit.SetWindowText(m_strOld); m_edMyEdit...
[MFC] string to wstring/wstring to string변환/ CStringA <-> CStringW std::wstring NarrowToWide(const std::string& szNarrow) { int size = MultiByteToWideChar( CP_ACP, // code page 0, // character-type options szNarrow.c_str(), // string to map szNarrow.size(), // number of bytes in string NULL, // wide-character buffer 0 // size of buffer ); size++; WCHAR* pBuf = new WCHAR[size]; memset(pBuf,0,size*sizeof(WCHAR)); int size2 = MultiByteToWideChar( CP_ACP, // code p..

반응형