c++/MFC (11) 썸네일형 리스트형 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.. [MFC] Office CommandBars 추가하는 COM 에드인이 최초 실행시에만 로드되는 문제/Office Context Menu CommandBars Addin loads only initial start up. Office CommandBars (컨텍스트 메뉴) 추가하는 COM 에드인이 최초 실행시에만 로드되는 문제. "Caption", "Style", "Visible" 등 외에 "Tag"를 추가해야 함. 왜인지는 모름. CComVariant AddtButton; // Grab our button to sink events... VariantClear(&vtParam); vtParam.vt = VT_BSTR; vtParam.bstrVal = ::SysAllocString(CALL_MENU_NAME); hr = CallMethod(vtCtrls.pdispVal, L"Item", &AddtButton, 1, &vtParam); VariantClear(&vtParam); // If we can't find it, m.. [MFC] error C2248: 'CObject::CObject' 해결 CStringArray를 변수로 추가만 해도 2248에러-> CStringArray를 포인터로 변경 후 추가하니 해결됨. CStringArray m_arrMyString;->CStringArray *m_pArrMyString; 이전 1 2 다음