본문 바로가기
반응형

개발언어/C++37

[피보나치 수열 소스] 피보나치 수열 알고리즘 C++ 소스 피보나치 수열 알고리즘 피보나치 수열이란 앞의 2수를 더한 수가 그다음 숫자가 되고 다시 2수를 더하것이 그다음 숫자게 되게 반복되는 숫자들입니다. 피보나치 공식을 보면 쉽게 이해 할 수 있습니다. 알고리즘 문제나 면접문제로 자주 나오니 외워두면 괜찮습니다. 일단 재귀함수로 피보나치를 구현하는 것이 편리합니다. 재귀 함수 없이도 구현이 가능하지만 조금 번거러울 수 있습니다. 피보나치 수열 공식 f(1) = f(2) = 1 f(n) = f(n-1) + f(n-2) 피보나치 수열 C++ 소스 #include int fib(int n); int main(int argc, char* argv[]) { int input; cout > input; for(int i=1; i 2011. 3. 23.
Visual C++ DSW 다른 창에 열기 DSW 확장자 같은 창에 열기 Visual C++ 다른 창에 열기 Visual C++ 프로젝트를 다른 창에 열기 위해서는 폴더의 속성을 바꾸어 주어야 합니다. 내컴퓨터를 열고 폴더 옵션에서 [파일형식] 탭에 DSW 확장자를 찾습니다. 그리고 [고급]을 누러서 보면 [같은 창에서 열기] 속성이 지정되어 있습니다. VC++ 프로젝트가 각기 다른 프로젝트로 열리는 것이 편하기 때문에 이런 속성을 지정하는 것입니다. Visual Studio에는 설정하는 것이 없습니다. 폴더옵션에서 Visual C++ 의 확장자 DSW 을 선택하고 [고급]버튼을 눌러줍니다. [같은 창에서 열기] 속성을 제거 합니다. 이제 여러 프로젝트를 열때 각기 다른 Visual Studio에서 프로젝트가 열리게 됩니다. 2011. 2. 22.
MessageBox MB_DEFBUTTON2 속성으로 MB_YESNO 버튼 NO 자동선택하기 MessageBox 의 MB_YESNO 속성 MessageBox 메시지 박스에서 Yes, No 버튼중 No버튼에 포커스를 자동적으로 두고 싶을때 MB_DEFBUTTON2 속성을 이용할 수 있습니다. 삭제 같은 메세지처리를 할경우 습관적으로 사용자가 엔터를 치게 되면 Yes 버튼에 포커스를 주기 때문에 바로 삭제가 되게 됩니다. 고개의 입장에서는 귀찮아서 엔터를 친것인데 중요한 데이타가 삭제되게 됩니다. 이럴 경우 메세지박스를 보여줄 때 포커스를 No버튼(두번째 버튼에) 포커스를 주어 해결할 수 있습니다. 메세지박스 No버튼에 포커스 주는 예제 if( MessageBox(_T("삭제하시겠습니까??"), _T("삭제"), MB_YESNO | MB_ICONINFORMATION | MB_DEFBUTTON2 ) .. 2011. 2. 9.
LIBCMT.lib(crt0.obj) : error LNK2001: unresolved external symbol _main LIBCMT.lib(crt0.obj) : error LNK2001: unresolved external symbol _main 에러 (crt0.obj) : error LNK2001: unresolved external symbol _main 에러가 발생하였을 경우, Project Settings 을 확인하여 (crt0.obj) : error LNK2001: unresolved external symbol _main 에러를 잡을 수 있습니다. Project 설정에 보면 _ATL_MIN_CRT 라는 설정이 Preprocessor definitions 에 들어 가 있는 것을 알 수 있습니다. _ATL_MIN_CRT 문자를 지워서 컴파일을 하면 에러가 없이 컴파일이 됩니다. ATL/WTL의 위져드로 생성을 할 .. 2011. 1. 20.
[debug assertion failed] debug assertion failed 에러 해결 debug assertion failed 에러 해결방 debug assertion failed 에러가 VC++ 할때 발생하였다. 무엇이 잘못되어 debug assertion failed 에러가 났는 지 알 수 가 없었습니다. 해결방법에 대해서 고민하였는 데 이럴 경우 간단히 해결 할 수 있습니다. debug assertion failed 에러가 발생하였을 때는 window을 Create하는 부분이나 초기화하는 부분에서 예기치못하게 접근하는 코드가 있을 것이다. 이런 부분에 무작위로 중단점을 잡고 하나씩 잘못 접근하고 있는 코드를 찾아서 해결하면 된다. 해결방법 debug assertion failed 에러발생시, 생성이나 초기화 부분에 중단점을 걸로 잘못 접근하는 코드를 찾아 해결합니다. 2011. 1. 4.
COM BSTR로 호출하여 받기 COM BSTR로 호출하여 받기 CString인 문자열을 BSTR 타입으로 넘기고 이를 BSTR타입으로 받는 방법이다. CComPtr m_pAcceptDlg; CComBSTR bstrPntID = strPatientID.AllocSysString(); HRESULT hResult = m_pAcceptDlg->ShowCallMsg(bstrPntID); 프로젝트파일.tlb IAcceptModule : IDispatch { // // Raw methods provided by interface // virtual HRESULT __stdcall ShowAccept ( IUnknown * pUnkn, VARIANT_BOOL * pbResult, long lHwnd ) = 0; virtual HRESULT __s.. 2010. 10. 20.
Com AddBack 와 AddFont 소스 Com AddBack 와 AddFont 소스 ATL / COM 전병선 씨의 책을 보다가 COM에 대해서 조금 알게 되었다. Com으로 Add 메서드를 호출하는 부분만 완성한 Com AddBack 와 AddFont 의 미완성 소스이다. AddBack 소스와 미완료된 AddFont 소스를 보면 AddBack 프로젝트로 만들어진 Com에 IAdd, IAddEnd의 인터페이스를 구현해 두었고 이를 AddFont가 호출하여 쓰게 되어있다. Com 프로젝트인 AddBack는 릴리즈 폴더에 AddBack.dll과 프로젝트 폴더에 AddBack.tlb라는 파일 2개가 생성된다. Dll은 regsvr32 로 등록을 해주고 AddFont 프로젝트에서 AddBack.tlb는 #import 해주면 된다. tlb란? 타입라이브.. 2010. 10. 6.
STL 문장 내 단어 검색 STL 문장 내 단어 검색문장을 입력하고 단어를 검색할 수 있는 멤버 함수를 가진 contents_t 클래스를 정의한다. STL을 이용하여 find 멤버함수로 문장 내 단어를 검색 할 수 있다. 소스코드 #include "stdafx.h" #include #include class contents_t { private: std::string contents; public: contents_t(std::string c) : contents(c) { } bool find(const std::string &x) const { if( contents.find( x ) == std::string::npos ) return false; // 같다면 ? return true; } }; int main(int argc.. 2010. 8. 9.
OutputDebugString CString 의 범위가 넘어도 출력하기 OutputDebugString CString 의 범위가 넘어도 출력하기 OutputDebugString(strQuery.Mid(0, 1024) + _T("\n")); if(strQuery.GetLength() > 1024) OutputDebugString(strQuery.Mid(1023, strQuery.GetLength()-1024) + _T("\n")); 2010. 8. 6.
_ATL_USE_CSTRING_FLOAT CString 문자열 길 늘려주는 방법 _ATL_USE_CSTRING_FLOAT CString 문자열 길 늘려주는 방법입니다. CString 에 할당된 문자열이 길게되면 문자열 범위가 넘어서서 문제가 됩니다. #define _ATL_USE_CSTRING_FLOAT 로 선언을 하거나 또는 CString 변수를 여러개 선언하여 나누어서 처리한후에 합쳐줍니다. 2010. 7. 28.
[에러] uuid.lib(ocidl_i.obj) : fatal error LNK1103: debugging information corrupt; recompile module uuid.lib(comcat_i.obj) : fatal error LNK1103: debugging information corrupt; recompile module 환경사항 Windows XP Service pack 3 + Visual studio 6.0 + Platform SDK Server2003 R2 사용 에러 메시지 uuid.lib(ocidl_i.obj) : fatal error LNK1103: debugging information corrupt; recompile module Error executing link.exe. 해결책 C:\Program Files\Microsoft Platform SDK\Lib 폴더의 uuid.lib 파일의 이름을 삭제 또는 변경해주면 됩니다. 2010. 7. 19.
c:\program files\microsoft visual studio\vc98\include\utility(21) : fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit c:\program files\microsoft visual studio\vc98\include\utility(21) : fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit internal heap limit reached; use /Zm to specify a higher limit 위와 같이 Zm500 으로 컴파일 메모리를 늘려준다. 참고 사이트 : http://blog.naver.com/intencelove?Redirect=Log&logNo=20098282915 http://yunhyeon.tistory.com/160 c:\program files\microsoft visua.. 2010. 7. 14.
[ERROR] C++ One or more breakpoints cannot be set and have been disabled. Execution will stop at the beginning of the program. One or more breakpoints cannot be set and have been disabled. Execution will stop at the beginning of the program. --------------------------- Microsoft Visual C++ --------------------------- One or more breakpoints cannot be set and have been disabled. Execution will stop at the beginning of the program. --------------------------- 확인 --------------------------- 디버그 할 때 BP(브레이크 포인터) 설정 안될 경우가 발.. 2010. 7. 1.
c++ 현재시간 구하기 c++ 현재시간 C++ 현재시간을 구한다. 1 CString strToday; // 오늘 날짜를 받을 변수. 2 3 SYSTEMTIME time; // 시간 구조체. 4 ::ZeroMemory(reinterpret_cast(&time), sizeof(time)); // time 초기화. 5 6 ::GetLocalTime(&time); // 현재시간을 얻음. 7 strToday.Format (_T("%4d%02d%02d%02d%02d"), time.wYear ,time.wMonth ,time.wDay, time.wHour, time.wMinute); // 형식에 맞게 받음.. 8 2010. 5. 31.
COM 으로 구현된 우편번호 검색에 접근하여 값 문자열 변환하여 전달 받기 Converting with ATL Macros COM 으로 구현된 우편번호 검색에 접근하여 값 문자열 변환하여 전달 받기프로젝트들은 dll로 모두 나누워져있다. 그리고 com으로 구현한것은 vb, c++, java, c# 어느 언어로 구현되었다고 하더라도 공통적으로 쓸 수 있는 모듈로 구성하기 위함이다. 여기서 중요한것은 어떤 언어에서 자료형이 다른 언어에서 자료형과 동일하지 않다는 것이다. 그래서 com으로 구현하므로 그 모듈에 접근하여 함수를 호출한 결과값을 해당 매크로로 변환작업을 거쳐 값을 전달 받을 수 있는 것이다. 값을 변환 할때 매크로를 쓰게 된다. 참고 사이트 : http://dozob.springnote.com/pages/1428956.xhtml Converting with ATL Macros ATL provides a group o.. 2010. 5. 28.
Notify Handling in ATL Dialog (Standard Control) Notify Handling in ATL Dialog (Standard Control) [출처] Notify Handling in ATL Dialog (Standard Control)|작성자 삐삐러브 SUMMARY 윈도우즈는 메시지 기반의 시스템이다. 모든 하위 윈도우를 제어할 때에는 해당 윈도우에 고유의 메시지들을 전달하여 처리한다. 하위 윈도우에서 부모 윈도우로 정보를 전달하는 방법도 메시지를 이용하는데, 이 경우에는 특별히 통지 메시지 (Notification Message)라고 부른다. 이 문서에서는 ATL 다이얼로그에서 하위 윈도우(표준 콘트롤)에서 보내는 통지 메시지를 부모 윈도우 (다이얼로그)에서 받아서 처리하는 방법에 대해 설명한다. FUNDAMENTALS MFC와 유사하게 ATL에서도 메.. 2010. 5. 27.
vector 을 이용하여 combox 에 AddString 하기 vector 을 이용하여 combox 에 AddString 하기 1 std::vector STL_AcceptSort; // vector 자료형으로 선언 2 std::vector::const_iterator iter; // 반복자 생성 3 4 STL_AcceptSort.push_back("접수순서1"); // push_back로 맨뒤로 문자열 원소 추가함. 5 STL_AcceptSort.push_back("접수순서2"); 6 STL_AcceptSort.push_back("접수순서3"); 7 8 for(iter = STL_AcceptSort.begin(); iter != STL_AcceptSort.end(); ++iter) //탐색시작~ 9 { 10 m_cmbAcceptSort.AddString( (LPCS.. 2010. 5. 27.
c++ atoi 로 문자를 숫자형으로 변환 컨버트하기 Converts a given string to an integer. 문자를 숫자형으로 컨버트하여 준다. atoi Converts a given string to an integer. int WINAPI atoi( const TCHAR *sz); Parameters sz Source character string. Return Values Returns the string's integer value. Remarks This version of atoi supports only decimal digits, and does not allow leading white space or signs. It supports both Unicode and ANSI strings. Other versions can v.. 2010. 5. 27.
_T( ) 매크로 펌 : http://binyjini.tistory.com/entry/T-매크로-정리 보통 프로그래밍을 할 때 _T("") 매크로를 사용하면서도 그냥 컴파일 에러가 나면 한번 써보고 에러 안나면 오케이 하고선 그냥 넘어가는 경우가 있을지도 모른다는 생각에 간단히 정리합니다. 우리가 보통 유니코드 문자열을 처리할 때 L"this is a literal string" 과 같이 하는데요, _T 매크로를 사용하게 되면 프로젝트 세팅에 유니코드가 정의되어 있으면 유니코드 문자열로 컴파일 하고 그렇지 않으면 ANSI문자열(MBCS 포함)로 컴파일 됩니다. 아래는 간단한 예 입니다. pWnd->SetWindowText( "Hello" ); 이 코드 대신에 다음 코드가 사용됩니다. pWnd->SetWindowText( .. 2010. 5. 26.
GetWindowText 함수의 용도 GetWindowText 함수 사용의 예) 1 const nBuffSize = 512; // 버퍼의 사이즈를 정한다. 2 char szBuff[nBuffSize], buf2[nBuffSize]; // 버퍼공간을 선언한다. 3 m_wndResiNo1Edit.GetWindowText(szBuff, nBuffSize); //해당컨트롤 변수의 메소드로 가지고 있는 문자열을 받는다. 4 m_wndResiNo2Edit.GetWindowText(buf2, nBuffSize); //컨트롤변수로 해당 버퍼로 문자열을 가져온다. 영어로 된거 읽어라. MSDN 보다 좋은거는 없다. 영어공부도 하고 얼마나 좋냐~ CWnd::GetWindowText This method copies the CWnd caption title i.. 2010. 5. 26.
c++ 탭 컨트롤 탭 변경하기 c++ 탭 컨트롤 탭 변경하기 탭 지정(변경)을 하기 위한 메소드이다. 탭변경이후 이벤트를 처리하기 위해서 호출한다. 소스는 아주 간단하다. 1 void CDetailWindow::ChangeTab(int nTab) 2 { 3 // nTab로 탭변경 처리함. 4 m_tabDeatil.SetCurSel(nTab); 5 6 // 탭 변경후 아무런 이벤트를 호출한다. 7 BOOL bHandled; //초기화되지 않아 쓰래기값? 8 OnTabChanged(0, 0, bHandled); // 탭 변경이벤트 처리호출 9 } 2010. 5. 26.
마우스 위치에 하위 메뉴 출력하기 마우스 위치에 하위 메뉴 출력하기 마우스 클릭하 위치를 받아 POINT p 자료형으로 받는다. :: GetCursorPos(&p); 포커스의 위치를 받는다. 메뉴 리소스를 로드하고 받은 메뉴리소스를 해당 좌표에 서브메뉴로 출력한다. 출력후 메뉴리소스를 해제한다. (파괴함) 1 //세부 메뉴를 보여줌 2 HMENU hMenu, hPopupMenu; 3 4 // 해당 조건에 따라서 다른 메뉴를 보여줌. 5 if(g_bCooperation) 6 // 메뉴 리소스 로드 7 hMenu = LoadMenu(_Module.m_hInst, MAKEINTRESOURCE(IDR_CHART_MENU_RSVCARD_WS)); 8 else 9 hMenu = LoadMenu(_Module.m_hInst, MAKEINTRESOUR.. 2010. 5. 26.
C++ GDI Font, Brush 생성과 삭제 C++ GDI Font, Brush 생성과 삭제 c++ GDI 객체생성 하는 방법과 삭제하는 방법입니다. Font 생성과 Brush 생성하고 객체를 해제를 꼭해주어야 합니다. 뭐 어려운 내용은 없고 폰트 생성 옵션과 브러쉬 생성 옵션을 숙지 하시면 됩니다. 1 ////////////////////////////////////////////////////////////////////////// 2 /** 3 @brief : CreateGDIObject 4 5 @date : 2010-05-25 오후 4:27:27 6 @author: Kwangho Park 7 @remark: GDI 생성. Font, Brush 등. 8 수정내역 9 -------------------------------------------.. 2010. 5. 25.
다이얼로그에 라인, 사각형 등의 UI 그리기 다이얼로그에 라인, 사각형 등의 UI 그리기 C++ 에서 UI 작업하는 함수이다. 라인을 그리거나 도형을 그리는 함수이다. 펜 객체를 써서 라인을 그리고 도형을 그리는 것이다. 주의해야 할것은 .. 펜이라는 객체는 이전에 쓰던 펜을 저장해두고 새로 쓸펜을 지정해준다. 그리고 다시 이전 펜으로 복원해주고 새로 쓴펜을 삭제해주면 된다. 1 ////////////////////////////////////////////////////////////////////////// 2 /** 3 @brief : OnUIDraw 4 5 @date : 2010-05-20 오전 9:25:16 6 @author: Kwangho Park 7 @remark: UI 그려주기. 8 수정내역 9 ---------------------.. 2010. 5. 20.
ComboBox 의 Item과 List 구성하기 ComboBox 의 Item과 List 구성하기 연관글 보기 2010/05/13 - [개발언어/C++] - ComboBox의 GetCurSel의 ItemDate를 가져와서 SQL Querey 하기 ComboBox의 Item과 List를 DB를 통해서 구성합니다. 1 void CSearchModule::LoadVIPInfo() 2 { 3 // VIP ComboBox 초기화 4 m_comboVIP.ResetContent(); 5 m_comboVIP.AddString(_T("전체")); 6 m_comboVIP.SetItemDataPtr(0, new CString(_T("전체"))); 7 8 // SQL Query 작성 9 CString strQuery = _T(""); 10 strQuery.Format(_T(.. 2010. 5. 14.
ComboBox의 GetCurSel의 ItemDate를 가져와서 SQL Querey 하기 ComboBox의 GetCurSel의 ItemDate를 가져와서 SQL Querey 하기 연관된 글보기 2010/05/14 - [개발언어/C++] - ComboBox 의 Item과 List 구성하기 1 // ComboBox의 GetCurSel의 ItemDate를 가져와서 SQL Querey 하기 2 CString CSearchModule::GetJoinCode() 3 { 4 int nItem = m_comboPatientDiv2.GetCurSel(); 5 long lValue; 6 if(nItem > 0) 7 { 8 lValue = *(reinterpret_cast(m_comboPatientDiv2.GetItemDataPtr(nItem))); 9 CString strT = _T(""); 10 strT.F.. 2010. 5. 13.
WTL 7.0 / WTL 8.0 / WTL7.1 / WTL 7.5 / WTL8.0 다운로드 MS 사이트 WTL 7.0 다운로드 MS 사이트 About your download Windows Template Library (WTL) 7.0 If your download does not start after 30 seconds, click here: Start download Instructions Windows Template Library (WTL) is a library for developing Windows® applications and UI components. It extends ATL (Active Template Library) and provides a set of classes for controls, dialogs, frame windows, GDI objects, and more. T.. 2010. 5. 9.
[에러] unresolved external symbol __imp__PathAddBackslashA 해결하기 컴파일시 에러가 발행하였다. 에러는 LINK 링커 에러이다. 에러메시지 1 --------------------Configuration: ControlTest - Win32 Debug-------------------- 2 Linking... 3 ControlTest.obj : error LNK2001: unresolved external symbol __imp__PathAddBackslashA@4 4 ControlTest.obj : error LNK2001: unresolved external symbol __imp__PathRemoveFileSpecA@4 5 Debug/ControlTest.exe : fatal error LNK1120: 2 unresolved externals 6 Error exec.. 2010. 5. 7.
[ERROR] WTL 위져드로 작성시 한글 깨짐 현상 해결하기 WTL 위져드로 작성시 한글 깨짐 현상 해결하기 WTL을 위져드로 작성하면 영문에 맞게 리소스가 생성이 됩니다. 그래서 한글로 작성시 한글이 깨져 출력되게 됩니다. 생성된 프로젝트의 프로젝트명.rc 파일을 열어서 아래의 노란색 부분을 지웁니다. 1 //Microsoft Developer Studio generated resource script. 2 // 3 #include "resource.h" 4 5 #define APSTUDIO_READONLY_SYMBOLS 6 ///////////////////////////////////////////////////////////////////////////// 7 // 8 // Generated from the TEXTINCLUDE 2 resource. 9 /.. 2010. 5. 3.
[ERROR] unresolved external symbol _ImmReleaseContext@8 링크할 때 가장 많이 접하는 에러가 바로 "unresolved external symbol...." 에러 메시지이다. 컴파일은 작성한 소스를 이용해서 링크를 하기 위한 중간단계의 오브젝트 파일을 생성하고, 이들 오브젝트 파일을 이용해서 링크과정을 거쳐 실행 파일을 만든다. 링크할 때 필요한 오브젝트 파일이 없으면 "unresolved...." 에러 메시지가 발생한다. 외부에서 제공하는 함수의 오브젝트 파일을 묶어서 제공하는 것을 라이브러리(Library)라고 한다. 다음 에러 메시지를 살펴보자 "unresolved external symbol ImmReleaseContext@8" ImmReleaseContext 함수에 대한 오브젝트 코드가 없다는 메시지이다. 이 에러를 해결하는 방법은 ImmRelease.. 2010. 5. 3.
반응형