본문 바로가기

About Programing/03. Tip

C#에서 C++의 CString 값 전달해 주기 출처 : http://blog.naver.com/just720?Redirect=Log&logNo=40137298010 C# 에서는 이렇게 쓸꺼야 일단 선언은 이렇게 하고 [DllImport("CV_capture.dll")] public static extern void CV_RegistInit(IntPtr _IntPtr); 넘겨 줄때는 이렇게! IntPtr _IntPtr = Marshal.StringToBSTR("abcd"); CV_RegistInit(_IntPtr); C++에서는 BSTR로 받아서 CString으로 변환해준다. extern "C" __declspec(dllexport) void __stdcall CV_RegistInit(BSTR _RegistName) { CString str; str.. 더보기
Register variable (레지스터 변수) 출처 : 클릭 레지스터 변수(Register variable)는 프로세서의 레지스터에서 처리되는 변수를 말합니다. 레지스터는 CPU 안에 있는 메모리로써, 기계어 한 두개 수준에서 직접 처리가 되므로 프로그램의 수행 속도를 향상시킬 수 있습니다. 따라서 프로그램의 수행에서 가장 영향을 주는 변수를 레지스터 변수로 선언하여 사용하면 프로그램 속도를 비약적으로 향상시킬 수 있는 경우가 있습니다. 하지만 register를 붙인다고 꼭 레지스터 변수로 선언되는 것은 아닙니다. 경우에 따라서는 남는 레지스터가 없을 수도 있으므로 여기서 말하는 레지스터는 컴파일러에게 반드시 그렇게 선언하라고 요구하는 의미보다는, "가능하면 레지스터로 처리하라" 는 정도의 약한 의미에 불과합니다. 레지스터 변수를 선언하려면 변수를 .. 더보기
RegQueryValueEx 함수 레지스트리 키를 이용하여 데이터를 얻을 때 사용한다. LONG RegQueryValueEx( HKEY hKey, LPCWSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ); HKEY hKey : RegOpenKey 함수로 얻은 key 값 LPCWSTR lpValueName : 아래 그림의 [이름]에 해당하는 값 LPDWORD lpReserved : NULL LPDWORD lpType : 얻고자 하는 데이터의 자료형을 얻고자 할때 (모를때 : NULL / 알고 있을 때 : DWORD) LPBYTE lpData : lpValueName 의 데이터를 얻고 싶을 때 (LPTYPE)형으로 데이터를 얻는다. LP.. 더보기
[MFC] 다른이름으로 저장하기 창 생성 void CUserClass::Save(void) { static char BASED_CODE szFilter[] = "한글 Files (*.hwp)|*.hwp||"; CFileDialog dlg (FALSE, "*.hwp", "*.hwp", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter); if (dlg.DoModal () == IDOK) { } } 더보기
외부 프로그램 실행 방법 SHELLEXECUTEINFO sei; memset(&sei, 0, sizeof(sei)); sei.cbSize = sizeof(sei); sei.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_DDEWAIT; sei.lpFile = "C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE"; sei.hwnd = NULL; sei.lpVerb = "open"; sei.nShow = SW_SHOWMINIMIZED; ShellExecuteEx(&sei); 더보기
MFC MDI에서 Child Window를 최대화로 시작하기 virtual void ActivateFrame(int nCmdShow) { // if another window is open, use default if(GetMDIFrame()->MDIGetActive()) CMDIChildWnd::ActivateFrame(nCmdShow); else // else open maximized. CMDIChildWnd::ActivateFrame(SW_SHOWMAXIMIZED); } 더보기
Thead를 이용한 암호화 / 복호화 더보기
일의 자리에서 반올림 , 올림 , 버림 (1) 일의자리에서 버림 버림: 123 일때 120 , 128 에서도 120 , .... 123 을 10 으로 나눈 몫은 12 이고 나머지는 3 123 / 10 --> 12 123 % 10 --> 3 123 - 123%10 을 하면 120 이 나옵니다. 다른 방법으로 123 을 10 으로 나눈 몫이 12 .. 123 / 10 여기에 10 을 곱하면 120 .. 123 / 10 * 10 참고로 이 성질을 이용하면 123 % 10 은 123 - 123/10*10 과 같은 표현입니다. (2) 일의 자리에서 반올림 반올림:123 에서 120 , 125 에서는 130 , 128 에서 130 수의 일의 자리에 5 를 더하면 5 이상의 수는 십이 자리로 올라가고 5 보다 작은 수는 올라가지 않습니다. (123 + 5.. 더보기
int main(void)는 이제 그만! 출처 : http://mwultong.blogspot.com/2006/12/c-argc-argv-main-function-parameter.html 각 함수에는 인수(파라미터)를 지정할 수 있습니다. 프로그램 본체인 main() 함수에도 당연히 인수를 지정할 수 있습니다. 메인 함수의 인수는, 운영체제에서 그 프로그램을 실행할 때 지정해 준 "옵션"입니다. 예를 들어 도스창(명령 프롬프트;CMD.EXE)에서 dir /? 이렇게 하면 dir 명령에 대한 도움말이 출력됩니다. 이때 "/?" 라는 문자열이 옵션이 되는 것입니다. main(int argc, char* argv[]) 에서 argc 는, 프로그램을 실행할 때 지정해 준 "명령행 옵션"의 "개수"가 저장되는 곳입니다. argv 는, 프로그램을 실행할.. 더보기
MFC Dialog 꽉찬 화면 BOOL PlayGameForm::OnInitDialog() { CDialog::OnInitDialog(); HWND m_hwnd = this->m_hWnd; LONG style = ::GetWindowLong( m_hWnd, GWL_STYLE ); style &= ~WS_CAPTION; style &= ~WS_SYSMENU; ::SetWindowLong( m_hWnd, GWL_STYLE, style ); int screenx = GetSystemMetrics( SM_CXSCREEN ); int screeny = GetSystemMetrics( SM_CYSCREEN ); // resize: SetWindowPos( NULL, -4, -4, screenx+8, screeny+4, SWP_NOZORDER ).. 더보기