- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 가변영역 스크롤
- group by
- 시간대별 통계
- CSS
- c언어
- Activity 전체화면
- springboot 재가동
- MFC
- 말줌임 CSS
- vc++
- springboot
- 파티션 빠른 삭제
- MySQL
- 터치좌표 view
- 코드로 서버 재실행
- pid 찾아 kill
- ffmpeg
- reactnative
- Back 키 클릭 감지
- sql exception
- MariaDB
- SQL
- view 획득
- CentOS
- rn
- 스크롤적용
- 시간대 테이블생성
- mybatis exception
- 피쉬랜드
- kill -9
목록C, C++, MFC (29)
개발은 하는건가..
#include #include void fft(complex double *x, int n) { if (n == 1) { return; } // 짝수 인덱스와 홀수 인덱스로 분할합니다. complex double even[n / 2]; complex double odd[n / 2]; for (int i = 0; i < n / 2; i++) { even[i] = x[2 * i]; odd[i] = x[2 * i + 1]; } // 짝수 인덱스와 홀수 인덱스의 FFT를 수행합니다. fft(even, n / 2); fft(odd, n / 2); // FFT 결과를 결합합니다. for (int i = 0; i < n / 2; i++) { complex double w = exp(-2 * M_PI * i / n)..
named 뮤택스를 이용하여 프로그램이 실행 중인지 체크 한다. BOOL CBaseApp::IsDuplicateLaunch() { HANDLE hMutext = CreateMutex(NULL, TRUE, AfxGetAppName()); BOOL bResult = (GetLastError() == ERROR_ALREADY_EXISTS); return bResult; } BOOL CBaseApp::InitInstance() { if (IsDuplicateLaunch() == TRUE) { // 프로그램이 이미 실행 중입니다. return FALSE; } // 필요한 동작... return FALSE; }
아래의 함수에서 m_edClientLog 는 richEdit 의 컨트롤 변수이다. 로그 출력용 richEdit 에 1000 라인까지만 출력하도록 하는 기능 void outRichEditText(TCHAR *pwszLog, COLORREF color) { CPoint point; int first_pos = m_edClientLog.LineIndex(m_edClientLog.GetLineCount()); m_edClientLog.SetSel(first_pos, first_pos); point = m_edClientLog.PosFromChar(first_pos); m_edClientLog.SetCaretPos(point); CHARFORMAT cf; memset(&cf, 0, sizeof(CHARFORMAT..
조이스틱 탐지 JOYINFO joyinfo; UINT wNumDevs; BOOL bAttached; // 연결된 조이스틱 장치의 개수 확인 if ((wNumDevs = joyGetNumDevs()) == 0) { TRACE("No device\n"); return; } // 조이스틱이 연결 시 순서대로 JOYSTICKID1, JOYSTICKID2 조이스틱 ID 를 가진다. // JOYSTICKID1 의 조이스틱 현재 정보를 요청하여 에러가 없다면 연결된 것으로 판별. bAttached = joyGetPos(JOYSTICKID1, &joyinfo) == JOYERR_NOERROR; if (bAttached == FALSE) { TRACE("Joystick not plugged\n"); return; } J..
geodatasource 에서 제공하는 오픈소스를 이용해서 두 지점간의 거리를 쉽게 계산 가능. 거리 = distance(지점1의 위도, 지점1의 경도, 지점2의 위도, 지점2의 경도, 거리 단위); 거리 단위 : 'M' = 마일, 'K' = 킬로미터, 'N' = 해리 /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ /*:: :*/ /*:: This routine calculates the distance between two points (given the :*/ /*:: latitude/longitude of those points). It is being used to calculate :*/ /*:: ..
OpenSSL 1.0.1g 예전 버전의 64bit 라이브러리가 필요하여 빌드하는 방법을 찾아 정리해봄 1. https://www.openssl.org/source/old/ 에 접속하여 필요한 버전의 링크로 이동한 후 해당 파일을 다운로드 받습니다. 다운로드 받은 파일을 원하는 경로에 압축해제 합니다. 2. Perl 을 다운로드 받습니다. https://www.activestate.com/products/perl/ Cross-platform, secure Perl by ActiveState - for developers and enterprise Perl powered by the ActiveState Platform. Designed to meet the security and package manage..
CSkinSliderCtrl 을 상속받아 원하는 클래스를 만든 후 아래와 같이 CustomDrawSliderBg, CustomDrawThumb, OnSliderPosChange 를 override 하여 원하는 형태로 DC 에 그리고 필요한 이벤트를 연결하면된다. 이벤트를 연결하면된다 #pragma once #include "SkinSliderCtrl.h" class CTestSliderCtrl :public CSkinSliderCtrl { public: CGCSSliderCtrl(); virtual ~CGCSSliderCtrl(); struct CSCallback { void(*OnSliderPosChange)(CGCSSliderCtrl *pSlider, int pos, void *pOwner); voi..
윈도우의 배율에 따라 컨트롤의 크기나 위치가 변경되는 것을 막으려고 DPI 인식을 높은 DIP 인식으로 변경해도 리소스 에디터에서 배치한 컨트롤의 위치가 배율에 영향을 받아 변경된다. 찾고 찾아도 한방에 처리할 수 있는 방법은 못찾았고 그나마 내가 생각한 쉬운 방법을 정리해본다. 우선 윈도우 배율을 변경하지 말고 100% 상태로 리소스 에디터에서 컨트롤들의 크기와 위치를 맞춘 후 실행해서 맞게 배치되었는지 확인한다. SetCtrlMove, PrintCtrlArrangePos 함수를 추가하고 OnInitDialog 에서 호출한다. PrintCtrlArrangePos 함수를 통하여 현재 윈도우의 자식 컨트롤 윈도우들을 모두 찾아 해당 위치를 로그로 출력한다. void CBaseDialog::SetCtrlMo..
HDC hDc = ::GetDC(0); FLOAT fDPIScaleX = GetDeviceCaps(hDc, LOGPIXELSX) / 96.0f; FLOAT fDPIScaleY = GetDeviceCaps(hDc, LOGPIXELSY) / 96.0f; ::ReleaseDC(0, hDc); fDPIScaleX, fDPIScaleY 에 각 가로 세로 비율이 저장되는데 보통은 가로세로 비율을 동일하게 나온다. 디스틀레이 설정에서 125% 또는 150% 로 설정했을 경우 각 1.25, 1.5 값을 반환한다. 배율되지 않은 원본 좌표가 필요할 경우 해당 좌표 / fDPIScaleX 해서 얻으면 되겠다.
카메라의 Pan Tilt 조정에 모바일 게임에서 사용되는 가상 조이스틱 패드 같은 컨트롤이 필요하여 만들어 보았다. 사용방법 // GDI+ 를 사용하므로 Application 클래스에서 GDI+ 를 사용할 수 있도록 초기화 한다. // 리소스 편집기에서 Static 컨트롤을 올리고 컨트롤 변수를 생성하여 CPantTiltCtrl 로 서브클래싱한다. //CStaticm_PanTiltCtrl; CPanTiltCtrlm_PanTiltCtrl; // 컨트롤 변수를 통해 초기화 함수 호출 m_PanTiltCtrl.InitControl(GetAppImagePath(), this); m_PanTiltCtrl.SetBackgroundColor(RGB(32, 35, 54)); 컨트롤에서 사용되는 2개의 png 파일이 필..
x, y 의 좌표를 알고 있을 때 각도구하는 식 ? = atan2(Y, X) * 180 / 3.14 A 또는 B 와 같은 위치의 좌표를 알고 있을 때 원점 기준 50 만큼 떨어진 곳의 좌표을 얻어야 할 때 식 x = cos(radian) * 50; y = sin(radin) * 50; radin 값은 A 의 좌표 값을 위에 있는 식으로 각을 구한 뒤 아래 공식으로 구함.. radian = 각도 * PI / 180.0f;
컨텍스트 메뉴를 띄울 버튼이나 마우스 클릭 이벤트 핸들러를 추가 후 다음과 같이 사용하여 띄운다. void CMainWnd::OnRButtonDown(UINT nFlags, CPoint pt) { CGCSContextMenu cm; // ::GetCursorPos(&pt); // ::ScreenToClient(pThis->GetSafeHwnd(), &pt); cm.CreatePopupMenu(); // cm.AddMenu(커맨드ID, 메뉴텍스트, 메뉴 아이콘 이미지 파일 경로); cm.AddMenu(4000, _T("메뉴1"), _T("메뉴1용 아이콘 파일 전체경로")); cm.AddMenu(4001, _T("메뉴2"), _T("메뉴2용 아이콘 파일 전체경로")); cm.ShowPopupMenu(pare..
별도로 생성된 스레드에서 대상 윈도우의 DC 로부터 비트맵을 복제 후 ffmpeg 으로 인코딩 하여 파일로 저장한다. const double frameInterval = 1000.0 / 30; int calcInterval = 0; BYTE *pImageData = NULL; HDC hdcMemory = NULL; BITMAPINFO *pDibBitmapInfo = &(m_DibBitmapInfo); HBITMAP hDibBitmap = NULL, hOldBitmap = NULL;; LONGLONG nFrameCnt = 0; LONGLONG nStartTs = 0; DWORD dwSleep = 0; int startX = pThis->m_TargetRect.left; int startY = pThis->..
# Header #pragma once #include #define MAX_DATA_LENGTH1500 class CUdpSocket { public: CUdpSocket(); ~CUdpSocket(); friend class CUdpServer; enum EResultCode { EUDP_NO_OPERATION = -2, EUDP_GENERAL_FAIL = -1, EUDP_SUCCESS = 0, EUDP_INVALID_DATA, EUDP_MAX_DATA_LENGTH_OVER, EUDP_CANCELED = WSAEINTR,// blocking operation canceled by WSACancelBlockingCall() EUDP_BAD_SOCKET = WSAEBADF,// bad socket des..