VisualStudio.C++.C#/코딩팁,함수활용,단편 ( 156 ) 유니티 에서 C++ 로 제작된 DLL 활용 방법 . native plug-ins 유니티 에서 제공하는 DLL 활용 방법 설명 페이지 - https://docs.unity3d.com/Manual/Plugins.html Unity - Manual: Plug-insAssembly Definition File Format Import and configure plug-ins Plug-ins In Unity, you normally use scriptsA piece of code that allows you to create your own Components, trigger game events, modify Component properties over time and respond to user input indocs.unity3d.com C++ 로 제작된 DLL 류들은 "nati.. 2024. 7. 10. MFC . CView . CDC TextOutW 문자열 출력. MFC . CView 문자열 출력 CDC* pDC = GetDC(); pDC->TextOutW(100,100,_T("Hello CView")); //인자 x,y. 좌표원점 : CView 의 좌상단 ReleaseDC(pDC); // 필수 해제 처리해야함. /// 혹은 CClientDC 이용해도 됨. CClientDC dc(this); dc.TextOutW(100, 100, _T("Hello CView")); 첫 등록 : 2023.12.03 최종 수정 : 단축 주소 : https://igotit.tistory.com/5040 2023. 12. 3. CEvent . Lock() . SetEvent() . ResetEvent() CEvent 생성자 CEvent( BOOL bInitiallyOwn = FALSE, BOOL bManualReset = FALSE, LPCTSTR lpszName = NULL, LPSECURITY_ATTRIBUTES lpsaAttribute = NULL); 2번 인자 bManualReset - TRUE : ResetEvent() 호출해야 이벤트가 Reset 상태로 됨. - FALSE : SetEvent() 호출이후 ResetEvent() 호출하지 않아도 자동으로 Reset 상태로 됨. 헤더파일 : afxmt.h 코드예. #include // 무인자로 생성하는 경우, 2번인자 기본 FALSE 적용된다. // SetEvent() 호출하여 대기해제이후 ResetEvent()별도 // 호출하지 않아도 셀프 Re.. 2022. 4. 9. MFC. CTreeCtrl. Tree Control . 트리 컨트롤 사용법. 개요. VC++ 에서 Tree Control사용법 정리. 기본 활용법. 1. 도구상자에서 Tree Control 을 대화상자에 배치하고 Tree Control 의 속성창에서 ID를 적절한것으로 설정. 2. 클래스 위저드 실행하여 멤버 변수추가. 예: m_TreeNXTask 3. Tree Control 속성의 Has Button과 Has Lines 속성을 모두 True 로 하기. 4. 트리에 아이템 추가하기 위한 트리컨트롤 멤버 함수 InsertItem (, , ,) 호출한다. 상세. - 기본 활용법. 앞의 순서대로 각 단계별 이미지와 함깨 설명한다. 1. 도구상자에서 Tree Control 을 대화상자에 배치하고 Tree Control 의 속성창에서 ID를 적절한것으로 설정. 2. 클래스 위저드 실행하여.. 2022. 4. 4. MFC. menu, context menu MFC 컨텍스트 메뉴 만들기 1. 리소스에서 메뉴 추가. 예: IDR_MENU_3DCHART 2. 메뉴보이게 하기. - 아래 함수 호출되면 마우스커서가 메뉴의 좌 상단 꼭지점에 배치된 상태로 보인다. int CCyChartView::Show_Menu3dChart() { CMenu menu, *pSubMenu; if (!menu.LoadMenuW(IDR_MENU_3DCHART)) return 0; if (!(pSubMenu = menu.GetSubMenu(0))) return 0; CPoint pos; GetCursorPos(&pos); SetForegroundWindow(); // 메뉴출력 pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_TOPALIGN, pos.x, po.. 2022. 4. 4. win api. Cryptography API : Next Generation. 암호화. 복호화. Cryptography API: Next Generation (CNG) - 이전 windows api 중 Crypto API 로 불렸던 CryptEncrypt, CryptDecrypt ,, (헤더파일 : wincrypt.h ) 들은 폐기되고 Cryptography API 로 대치됨. 이번 버전의 것과 차별성을 강조하려고 Next Generation 이라고 부르고 간략하게 CNG 로 표기. - 헤더파일 : bcrypt.h - dll 파일명 : bcrypt.dll MS 제공 Cryptography API 설명. 암호화 API: 차세대 - Win32 apps CNG는 암호화 키 관리, 암호화 및 데이터 보안, 암호화 및 네트워크 보안에 대한 암호화 보안 소프트웨어를 만드는 데 사용할 수 있는 암호화 API입니.. 2022. 4. 4. VC++ . _CRT_SECURE_NO_WARNINGS . #pragma warning(disable: 4996) 오류가 아닌데 VC++ 컴파일 오류 나는 상황 VC++ 에서 컴파일 결과 아래 에러 리스트에 이 함수는 안전하지 않다. 다른 함수 사용해라. 이 경고 안나오게 할려면 _CRT_SECURE_NO_WARNINGS 추가하라는 문구 보이는 경우 해결책 통상 scanf 등 과 같은 함수 사용하려 할 때 상기와 같은 오류 보여주며, 대안으로 다른 함수 사용하라고 제시해주는함수를 보면 구질구질 하기 짝이 없는 경우가 많다. 제시해준 함수를 사용해도 되고 아래처럼 코드에 기록해두면 C4996 은 오류로 처리하지 않고 정상적으로 컴파일 가능. #pragma warning(disable: 4996) 첫 등록 : 2022.03.07 최종 수정 : 단축 주소 : https://igotit.tistory.com/3532 2022. 3. 7. MFC . 응답없음 해결책 . PeekMessage , DispatchMessage 응답없음 MFC 대화상자든 일반 응용프로그램이든 처리량이 많은 것을 루프문에서 실행시 해당 처리가 완료되기 전까지는 사용자 마우스 입력 키보드 입력등이 처리되지 못하고 먹통처럼 보이고 프로그램 타이틀에 응답없음 이라는 표시가 보인다. 해결방법. 처리 루프 안에 PeekMessage 로 메시지 여부 점검하여 처리할것 있다면 UI 관련 처리도 수행하도록 한다. void function_processing() { for(,,,){ Forced_MessageHandler(); // 이것 호출되면 마우스, 키보드 입력등의 처리 수행됨. //처리할것들.이것저것 } } void Forced_MessageHandler() { MSG msg; // GetMessage 는 메시지 수신될때까지 대기 하기 때문에 무한대기에 .. 2022. 3. 5. C++ . namespace . 네임스페이스 내부에 선언하여 네임스페이스로 분리 식별 가능한것 : 변수, 함수, 클래스등. 네임스페이스로 분리 식별 안되는것 : #define 문. // 네임스페이스 정의. 헤더 파일등. namespace my_namespace { int a_int; void function(){ } namespace my_ns2{ // 네임스페이스 내부에 네임스페이스 추가 가능. int a_int; // 앞의 my_namespace 의 a_int 와 다르게 취급됨. }//namespace my_ns2 } // namespace my_namespace // 활용하는곳. my_namespace::a_int = 100; // 네임스페이스:: 으로 접근 가능. my_namespace::my_ns2::a_int = 200; u.. 2022. 3. 1. std::string . 검색, 비교 , 추출 , 지우기 . find compare substr erase find, rfind ,front , back #include std::string my_str = "my string is bla bla bla .? ! . . end"; // 반환값. my_str 에서 인자".?" 를 찾아서 . 이 있는 곳의 인덱스 반환. // 인자로 전달한 문자가 my_str 에 없는 경우 std::npos 반환. int idx_find = my_str.find(".?"); // 25 반환됨. // 뒤에서 부터 검색 rfind int idx_find = my_str.rfind(">"); //뒤에서 부터 첫번째 찾은 > 의 인덱스 반환됨. /// rfind, find 모두 검색결과 없는 경우 std::string::npos 반환. if(my_str.find(",,,") == std:.. 2022. 2. 24. Rapid Json . 체크 함수들 . /// RapidJson 체크 함수들. .HasMember("키이름"); // 키이름의 항목이 있는지 확인. .IsObject(); // object 인지 확인. .IsNull();// nul 인지 확인. .IsString(); // 문자열인지 확인. .IsBool(); // bool 인지 확인. .IsNumber(); // 숫자인지 확인. .IsInt(); // 정수인지 확인. .IsDouble(); // double 인지 확인. 첫 등록 : 2022.02.23 최종 수정 : 단축 주소 : https://igotit.tistory.com/3512 2022. 2. 23. std::string . 숫자 . stoi, stof, stol,stod, to_string std::string 을 숫자로 stoi, stof, stol , stod : std::string 을 int, float, long, double 로 간단 변환. 주의 : stoi 같은 경우 최대 10자리 정수까지만 변환된다. // C++11 부터. #include std::string my_str_i = "12345"; std::string my_str_i2 = "1234567890123456"; int i = std::stoi(my_str_i); // 정수로. base 지정하지 않으면 최대 10자리까지 정수변환. int64_t = std::stoi(my_str_i2); //주의 : 문자열 앞에서 부터 10개만 숫자로 변환됨. 숫자를 std::string 으로 to_string() #include i.. 2022. 2. 23. MFC . AfxMessageBox . 문자열 표현 못하는 경우 있음 상황. 아래코드의 마지막 처럼 CString 의 문자열 사이즈 확인하면 48000 이상인데, AfxMessageBox 창에선 아무 문자도 안보이는 증상 . 원인 문자열 길이가 너무 긴 경우 표현 못함. 수량 변경하면서 확인결과 사이즈 40000 까지는 표현가능. 45000 은 표현 못했음. int CCyRestBybit_SPOT::Acquire_Symbol_All(CString cfs_id_market, CCyD_CyFinSymbol::Symbols* p_ccyd_symbol) { std::string url = "https://api.bybit.com/spot/v1/symbols"; std::string result; m_CCyLibCurlOpenSSL.https_get(url, &result); CS.. 2022. 2. 23. C# . Process . Kill , CloseMainWindow , Close , Exited C# Process Namespace:System.Diagnostics Kill() 대상 프로세스 즉시 중지 시킨다. 하위 프로세스는 중지 안됨. Kill(Boolean) 프로세스를 즉시 중지하고, 선택적으로 자식/하위 프로제스 중지. kill(true); 로 호출하면 프로세스 하위의 모든 프로세스 들도 모두 중지 됨. CloseMainWindow() main wnindow 로 종료하라는 메시지 송신만 하는것. 대상 프로세스가 윈도우를 갖고 있어야 본 함수 사용가능. 메시지 수신한 main window 가 종료 메시지 수신시 종료처리 안해도 되는 선택권 있음. 또한 main window 가 종료전 저장해야할 데이터등이 있다면 저장완료하고 종료해주는 식의 처리 가능. 반면, Kill 은 대상 프로세스가 종.. 2022. 2. 8. VS . bug .MFC. RC : fatal error RC1107: invalid usage; use RC /? for 해결책. 오류 증상. - VC++ (버전 2022 등 전체 버전에서 유사하게 발생하는듯) 코딩 하는 중에 아래와 같은 얄궂은 구문의 오류창 뜨면서, MFC 프로젝트의 리소스 에 접근이 안되고 x 박스 뜸. RC : fatal error RC1107: invalid usage; use RC /? for 해결책 - 해결책은 간단. 프로젝트 설정에서 VC++ Directory 나 Library Directory 에 신규 추가했던 경로의 마지막에 슬래시 \ 부착해뒀다면 슬래시 제거. \ 부착하지도 않았는데 위의 오류 증상 생겼다면 최근 신규 추가했던 경로의 마지막에 슬래시 \ 추가. 위 조치하고 Visual Studio 닫았다가 다시 열면 MFC 프로젝트에서 리소스에 정상 접근 가능. from https://stacko.. 2022. 2. 3. C#. MS 공식지원 WebSocket 라이브러리. 개요 - MS 공식지원 websocket 라이브러리. - .net 에서 WebSocket 지원 함. 상세보기 (아래 링크) ASP.NET Core에서 WebSocket 지원 ASP.NET Core에서 Websocket을 시작하는 방법을 알아봅니다. docs.microsoft.com ClientWebSocket 클래스 MS 제공정보 ClientWebSocket 클래스 (System.Net.WebSockets) WebSocket 서비스에 연결하기 위해 클라이언트를 제공 합니다.Provides a client for connecting to WebSocket services. docs.microsoft.com ClientWebSocket 기본 코딩 아래 코드는 공개되어있는 웹소켓서버(룹백 서버임) 와 접속하여.. 2020. 12. 26. C#. WebSocketSharp. 웹소켓 라이브러리. 개요 - C# 용 웹소켓 라이브러리. WebSocketSharp 설치방법. - 웹소켓 클라이언트 C# 코드예. - Connect 함수 실행시 발생하는 TLS handshake 오류 해결. 설치방법. Visual Studio C# 프로젝트에서 NuGet 패키지에서 검색 WebSocketSharp 에서 보이는 아래 붉은박스 선택하고 버튼 Install 클릭. - 버전 : 1.0.1 (현재 2020.12.27 NuGet 으로 배포되는 최신버전임) 웹소켓 클라이언트 기본 코딩 - 아래 코드는 공개되어있는 웹소켓서버(룹백 서버임) 와 접속하여, 클라이언트에서 키보드로 입력한 글자를 송신하면 서버는 글자들을 그대로 다시 클라이언트로 송신하고 클라이언트 화면에 표현되는 방식으로 작동함. ReadyState 상태 . .. 2020. 12. 26. MFC. 대화상자에 분할 윈도우 구현. // 헤더파일. class CDlgSplitDlg : public CDialogEx { // Construction public: CDlgSplitDlg(CWnd* pParent = nullptr);// standard constructor CFrameWnd* m_pMyFrame; CSplitterWnd m_cSplitter; .... } // cpp 파일. int CDlgSplitDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialogEx::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here // Initialize a context for t.. 2020. 12. 5. 이전 1 2 3 4 ··· 9 다음