- 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 |
- kill -9
- 시간대 테이블생성
- pid 찾아 kill
- MySQL
- 피쉬랜드
- rn
- vc++
- CentOS
- Back 키 클릭 감지
- sql exception
- MFC
- ffmpeg
- c언어
- view 획득
- 가변영역 스크롤
- 터치좌표 view
- reactnative
- SQL
- springboot 재가동
- Activity 전체화면
- 스크롤적용
- MariaDB
- group by
- 말줌임 CSS
- 코드로 서버 재실행
- springboot
- 시간대별 통계
- CSS
- 파티션 빠른 삭제
- mybatis exception
목록C, C++, MFC (29)
개발은 하는건가..
동영상을 디코딩하여 나온 RGB raw 데이터를 DirectX 나 openGl 같은 것들을 사용하지 않고 DC 에서도 충분히 빠른 속도로 출력이 가능하다. 화면을 가득 채우는 FHD 해상도의 영상도 높지 않은 CPU 점유율을 소모하면서 30 프레임은 가능했다. 단, 조건은 영상을 디코딩 시 32bit BGRA 형태여야 한다. 그래야 출력 과정에서 RGB 데이터들을 다시 재배치하는 연산을 수행하지 않고 그대로 출력이되므로 속도가 빠르다. RECT m_rcView = { 0, 0, 1280, 720 }; // 출력 영역 BITMAPINFO*m_pBitmapInfo = NULL; // 비트맵 정보 void CVideoStreamDlg::DrawVideo(CDC *pDC, BYTE *pFrameData, UIN..
AvPacket 를 raw 형태 그대로 저장한 파일을 mp4 파일 형태로 만든 코드이다. m_RecordFile 이 raw 파일을 open 한 CFile 형태이므로 m_RecordFile 사용하는 부분만 필요한 형태로 교체하면된다. CVideoRecorder::SRecordFrameInfo 이 구조체도 raw 파일 저장 시 영상크기나 코덱 정보를 저장했던 구조체이므로 반드시 필요하진 않으므로 영상크기만 필요한 형태로 교체해주면 된다. BOOL CRecordFilePlayer::ExportRecordFile(CString &strFileName) { BOOL bResult = FALSE; AVFormatContext* m_pOfmt_ctx = NULL; AVCodecParameters codecpar; A..
#define ENDIAN_SWAP16(A)(A = (((WORD)(A) & 0xff00) >> 8) | \ (((WORD)(A) & 0x00ff) > 24) | \ (((DWORD)(A) & 0x00ff0000) >> 8) | \ (((DWORD)(A) & 0x0000ff00)
아이콘이 나오지 않는 이유는 시스템 메뉴 속성이 빠져있기 때문인데 시스템 메뉴는 타이틀 바가 있어야지만 만들어 집니다. 리소스 에디터에서는 아무리 속성을 조작해봐도 타이틀바 없이 시스템 메뉴를 추가 할 수가 없기 때문에 태스크 바에 아이콘이 나오지 않는 것입니다. 해결 방법은 너무 간단합니다. 아래 코드 한줄을 프로그램 생성 부(OnCreate or onInitDialog)에 넣어주면 문제는 간단히 해결됩니다. ModifyStyle(NULL, WS_SYSMENU); 3.예제 4.참고 - 2001.08.06 Smile Seo -
1.요약 이전에 제가 LHCTRACE라고 해서 debug창에 trace된 내용을 더블클릭하면 소스의 위치로 찾아가는 매크로를 만든 적이 있습니다.(팁 게시판 참조) 하지만 이미 Visual C++의 CRT에 포함되어 있다는 걸 이제야 알았습니다. 2.본문 ANSI CRT에는 TRACE와 같은 기능이 없지만 Visual C++에는 _RPTn 들과 _RPTFn 들이 있습니다. 여기서 _RPTFn 을 주목할 필요가 있는데 _RPTFn 은 다음과 같은 형태의 매크로들을 말합니다. _RPTF0(reportType, format); _RPTF1(reportType, format, arg1); _RPTF2(reportType, format, arg1, arg2); _RPTF3(reportType, format, ar..
MFC 프로그램을 만들때, 프로그램의 성능을 최적화 하기 위해서 화면의 전체를 그리지 않고, 그려야 하는 부분만 계산하여 다시 그리도록 하는 방법을 사용하고 있습니다. 이경우 일반적으로 CView 클래스의 onDraw() 함수안에서 GetClipBox() 함수를 사용하는데, 아시는지 모르겠지만, GetClipBox() 는 항상 윈도우의 전체 영역을 리턴하도록 되어 있습니다. 왜냐하면 MFC로 만들어진 SDI의 경우 CView와 CFrameWnd가 CS_VREDRAW 와 CS_HREDRAW 속성을 가지고 있는 윈도우 클래스를 사용하기 때문입니다. 따라서, 윈도우가 리사이징 될때마다 항상 자신의 영역 전체를 다시 그리도록 되어 있는 것입니다. 따라서, 이 문제점을 해결하기 위해서는 CS_VREDRAW 와 C..
#ifndef WS_EX_LAYERED #define WS_EX_LAYERED 0x00080000 #define LWA_COLORKEY 0x00000001 #define LWA_ALPHA 0x00000002 #endif // ndef WS_EX_LAYERED Then some declarations in the header-file: // Preparation for the function we want to import from USER32.DLL typedef BOOL (WINAPI *lpfnSetLayeredWindowAttributes)(HWND hWnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags); lpfnSetLayeredWindowAttributes m_p..
BOOL TransparentMyBlt( HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nXSrc, int nYSrc, COLORREF colorTransparent) { CDC dc, memDC, maskDC;//, tempDC; dc.Attach( hdcDest ); maskDC.CreateCompatibleDC(&dc); CBitmap maskBitmap; //add these to store return of SelectObject() calls CBitmap* pOldMemBmp = NULL; CBitmap* pOldMaskBmp = NULL;..
// 16bit 컬러 값에서 RGB 추출 COLORREF color; // RGB 컬러값 BYTE getRed(WORD color) { return (color>>10); } BYTE getGreen(WORD color) { return (color>>5)&31; } BYTE getBlue(WORD color) { return (color&31); } // 추출한 RGB 16bit 컬러로 병합 WORD rgbMix(int red,int green,int blue) { return (red
링크 라이브러리에 Msimg32.lib 추가 BLENDFUNCTION bf; bf.AlphaFormat = 0; bf.BlendFlags= 0; bf.BlendOp = AC_SRC_OVER; bf.SourceConstantAlpha = 100; AlphaBlend(pDC->GetSafeHdc(), 0, 0, width, height, dcMem.GetSafeHdc(), 0, 0, width, height, bf);
**** Raw image Data를 DC에 사용할 수 있게 가공 // 비트맵 정보 객체 생성 및 초기값 설정 (가로 / 세로 / colordepth) PBITMAPINFO pBmp = new BITMAPINFO; pBmp->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); pBmp->bmiHeader.biWidth = width; pBmp->bmiHeader.biHeight = height; pBmp->bmiHeader.biPlanes = 1; pBmp->bmiHeader.biBitCount =m_bInfo.bmiHeader.biBitCount; pBmp->bmiHeader.biCompression = BI_RGB; pBmp->bmiHeader.biSizeImage = 0..
변수 2개의 값을 서로 swap 하는 매크로입니다. #define SWAP(a,b) {(a)^=(b)^=(a)^=(b);}
jump to 0 Addr void (* reset_ptr)(void); *(dword *)(&reset_ptr) = 0x00000000L; reset_ptr();
첫째, 문자열 리터럴은 합쳐진다. 이는 매크로라기 보다는 C언어의 특징이다. 이 기능을 사용하면 긴 출력 문장을 손쉽게 여러 개의 부분 문자열로 나눌 수 있다. 또한 다음에 소개될 매크로 연산자를 사용할 때의 표현식도 좀 더 풍부하게 구성할 수 있다는 장점이 있다. printf("이름: %s\n" "나이: %d\n" "전화번호: %s\n", a, b, c); 위의 코드를 보자. printf 다음에는 총 세 개의 연속된 문자열 리터럴이 나타난다. 이 세 개의 리터럴은 합쳐져서 "이름: %s\n나이: %d\n전화번호: %s\n" 과 동일한 문자열이 된다. 둘째, ## 연산자를 사용해서 토큰을 합성해서 만들어 낼 수 있다. ##은 합치기 연산자 이다. 다음과 같은 기능을 생각해 보자. COUNT(start)라..