C++ 현재시간을 구한다. 

1. SYSTEMTIME 을 이용
CString GetToDay(CString data)
{
    CString strToday;
    SYSTEMTIME    time;    // 시간 구조체.
    ::ZeroMemory(reinterpret_cast<void*>(&time), sizeof(time));     // time 초기화.
    ::GetLocalTime(&time);    // 현재시간을 얻음.
    strToday.Format (_T("%4d%02d%02d%02d%02d"), time.wYear ,time.wMonth ,time.wDay, time.wHour, time.wMinute); // 형식에 맞게 받음..
    return strToday;
}
2. time_t 를 이용
char sysDate[MAX_PATH2] ="";

struct tm* today;

time_t ltime;

time(<ime);

today = localtime(<ime);

sprintf(sysDate, "%04d년%02d월%02d일_",today->tm_yday+1778, today->tm_mon+1, today->tm_mday);


3. CTime 활용


CString strToday = CTime::GetcurrentTime();


BOOL CTestDlg::OnInitDialog()
{
 ....

 

 MoveWindow(0,0,1024,768);


...

}


차영상을 만들려면 일단 영상 두개에 차이가 있어야 하는데,

하나의 동영상으로 프레임 순서의 차이를 두고 그에 따른 차이를 영상으로 표현할려고 합니다.

영상들 정의

    previous_image =  cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
    current_image =  cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
    output =  cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
    diff_image = cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);

이렇게 되어있고

작업을 통해 output  영상을 이진화 작업을 해 놓았습니다.

그런후

        cvCopy(current_image,previous_image);
        cvCopy(output,current_image);
        cvAbsDiff(previous_image,current_image, diff_image);

를 통하여 diff_image 에 차영상을 만들었습니다.



접근 및 제어 방법

ex)
for (int i = 0; i < img->height;i++)
        {
            for (int j = 0; j < img->width;j++)
            {
                // 데이터 직접 접근 /제어
                int index = j + i * img->widthStep ;
                unsigned char n_indx = gray->imageData[index] ;      // 해당 픽셀에 접근하여 n_indx 에 픽셀값 저장

     if(n_indx < 100)   //픽셀 값이 100보다 작을경우
                {
                    img->imageData[j+i*(img->widthStep)] = 0;         // img의 픽셀 값을 제어
                }
            }
        }





 




출처 -> www.codein.co.kr  프로그래머의 놀이터 (Code人)

 

MFC의 직렬화(Serialize)를 사용해, 오브젝트을 파일에 쓰고 읽는 방법에 대해 살펴보겠습니다.


소개할 기능은 기본적으로, 오브젝트의 현재 상태를 파일에 보존하거나 복원 하는 기능입니다.

 

1) MFC AppWizard를 사용해, 다이얼로그 기반의 프로젝트를 작성합니다.
메인 다이얼로그에 아래와 같이 컨트롤을 배치합니다.


(여기에서는, 프로젝트명을 Serialize Test 로서 작성했습니다.)

사용자 삽입 이미지

2) 새로운 클래스를 생성합니다.

클래스타입은 "Generic Class", 클래스명은 "CNewData" 이고, 부모클래스로 "CObject"를 지정합니다.

OK 버튼을 클릭해서, 클래스를 생성합니다.

사용자 삽입 이미지

 

// MyData.h

class CMyData : public CObject 
{
    DECLARE_SERIAL( CMyData)    // 직렬화 선언
public:
    CMyData();
    virtual ~CMyData();

    // 다음함수(Serialize)를 오버라이딩
    virtual void Serialize( CArchive& archive );

    int m_nValue;        // 값1: 다이얼로그의 "IDC_EDIT1"에 해당
    CString m_strValue;  // 값2: 다이얼로그의 "IDC_EDIT2"에 해당
};

 

// MyData.cpp
#include "stdafx.h"
#include "SerializeTest.h"
#include "MyData.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

// 직렬화선언

IMPLEMENT_SERIAL( CMyData, CObject, 1)
////////////////////////////////////////////////////////
// Construction/Destruction

////////////////////////////////////////////////////////

CMyData::CMyData()
{
   //멤버변수 초기화

    m_nValue = 0;
}

CMyData::~CMyData()
{

}

// Serialize 함수를 오버라이딩(재정의)
void CMyData::Serialize( CArchive& ar)
{
    // 부모클래스의 함수를 호출
    CObject::Serialize( ar);


    // 이클래스의 데이터를 보존
    if( ar.IsLoading() == TRUE)
    {
        // 읽어올때
        ar >> m_nValue >> m_strValue;
    }
    else
    {
        // 저장할때
        ar << m_nValue << m_strValue;
    }
}

다이얼로그 내용의 저장, 읽어오기 버튼의 클릭 이벤트 핸들러를 작성합니다.
(다이얼로그의 버튼상에서 더블 클릭)
아래와 같은 내용을 기술합니다.

 

// MyData.cpp: 
//
///////////////////////////////////////////////////////
#include "MyData.h"

// 저장버튼 클릭시

void CSerializeTestDlg::OnButton1() 
{
    // TODO:

    BOOL bret;
    // 화면에 입력된 내용을 읽어서, 파일에 저장

    CMyData data;
    int nValue;
    CString strValue;


    // 값1은、int형으로 보존
    nValue = (int)GetDlgItemInt( IDC_EDIT1);
    GetDlgItemText( IDC_EDIT2, strValue);

    data.m_nValue = nValue;
    data.m_strValue = strValue;

   

    // 파일을 쓰기모드로 오픈

    CFile f;
    bret = f.Open( "C:\\Temp\\MyData.dat", 
            CFile::modeCreate | CFile::modeWrite);
    if( bret == FALSE)
    {
        AfxMessageBox( "파일열기 실패");
        return;
    }


    CArchive ar( &f, CArchive::store);
    TRY
    {
        data.Serialize( ar);
    }
    CATCH_ALL( e)
    {
        AfxMessageBox( "보존에러");
    }
    END_CATCH_ALL;

   

   ar.Close();
    f.Close();

    // 화면내용을 초기화

    SetDlgItemText( IDC_EDIT1, "");
    SetDlgItemText( IDC_EDIT2, "");

}


// 읽어오기 버튼 클릭시
void CSerializeTestDlg::OnButton2() 
{
    // TODO:

    // 파일을 엽니다.
    BOOL bret;
    CFile f;
    bret = f.Open( "C:\\Temp\\MyData.dat", CFile::modeRead);
    if( bret == FALSE)
    {
        AfxMessageBox( "파일열기 실패");
        return;
    }

    CMyData data;

    CArchive ar( &f, CArchive::load);
    TRY
    {
        data.Serialize( ar);
    }
    CATCH_ALL( e)
    {
        AfxMessageBox( "보존에러");
    }
    END_CATCH_ALL;

 

   ar.Close();
    f.Close();

    // 화면에 출력

    SetDlgItemInt( IDC_EDIT1, data.m_nValue);
    SetDlgItemText( IDC_EDIT2, data.m_strValue);

}

 

정리하면,

1) 화면의 내용을 읽어와서 CMyData의 멤버변수에 저장합니다. 그리고, CMyData 객체의 내용(멤버변수)을 파일에 저장합니다.

2) 파일을 열어서 저장된 내용을 가져온후, 이를 CMyData 객체의 내용으로 채웁니다

<script language="javascript" type="text/javascript">
<!--
   function save() {
      opener.location.replace('부모장.asp,jsp,php');
      window.close();
 }
-->
</script>

...

<a href="#" onclick="save();">닫기</a>

 

 부모창에서 새 창을 연 뒤 코드를 수행하고 마지막으로 새 창을 닫으면서 부모창을 새로 불러오는 것이다.

새창에서 어떤 값들이 변경되고 DB에 저장이 된 후에 부모창에서 변경된 값을 반영해야 할 때 쓰면 유용하다.

아마 문제가 있다면 부모창에 검색결과가 나오고, 그 뒤에 새 창을 열었다면 아마 위의 코드로는
부모창의 검색결과가 보여지는 것이 아니라, 검색 전의 초기화면이 보여질 것이다.



크롬이나 파이어폭스를 사용하시던 유저분들 중에 IE9로 갈아타시는 유저분들을 위해서!!

1 단계.
파이어폭스와 크롬에서 북마크정보를 가지고 와야합니다.



                                                                 [위 파이어폭스, 아래 크롬]

2 단계.
IE9에서 저장한 북마크 정보를 가져와야합니다.
1)


2)


3)


4)


사용하기!









Internet Explorer가 드디어 새로운 버전이 나왔습니다.
크롬과 파이어폭스에게 점유율이 점점 밀리거나 외면당하던 IE의 화려한 변신을 살펴보겠습니다.

1. 심플한 인터페이스

                                                 [위에서 부터 IE9, Firefox4.0RC, Chrome]

IE9는 최근 대세인 심플한 인터페이스를 선택하였습니다.
이는 크롬을 시작으로해서 , 최근발표된 파이어폭스4 RC버전에서도 마찬가지로 심플한 인터페이스를 추구하고 있습니다.

차이점을 보이는 것은 IE9은 주소바와 탭바를 하나로 합칠 수 있다는 점입니다. 심플의 극!



2. 검색어 제안 기능.

네이버, 다음, 구글과 같은 검색사이트에 검색어를 입력하면 밑에 사이트별로 추천 검색어를 보여주는데,
IE9에서는 주소창에 검색어를 입력하면 네이버,구글등의 검색사이트처럼 검색어를 제안해줍니다.


                             [IE9 의 네이버를 이용한 검색어 제안기능]

                                                [네이버사이트에서의 검색어 기능]

3. 슈퍼바의 모양 및 활용

   [ 왼쪽부터 파이어폭스, IE, 크롬, IE탭 ]

MS사에서 만든 브라우져답게 윈도우7과의 찰떡호흡을 보여준다.
파이어폭스나 크롬은 특정 사이트만 따로 슈퍼바에 고정할 수 없지만, IE9만큼은 특정 사이트탭을 고정할 수 있다.

4. 다운로드 관리자.


[좌 : 파이어폭스 관리자, 우 : IE9 관리자]

다운로드 관리자를 이용하여 편리하게 파일을 다운받을 수 있다.

5. 추가기능 설정으로 검색 속도 상승.


전작에서 타 브라우져와 속도면에서 많은 비교를 당한것을 많이 신경 쓴 느낌을 받은 기능입니다.
웹사이트를 이용하다보면 위와같은 추가기능 관리를 할 수 있습니다.
기능을 관리하여 속도를 높일 수 있습니다.




6. 전문가적 측면에서...
고집부리던 IE9이 웹표준을 지키고 최신기술을 활용하였습니다.
 (이전 버전에 맞추어 IE에 맞게 제작한 사이트는 고생해야겠다)

대표 웹브라우저 기능 비교
기능 익스플로러 9 파이어폭스 4 구글 크롬 6 사파리 5 오페라 10
렌더링 엔진 가젤 겟코 웹킷 웹킷 프레스토
웹 표준 점수 95 94 100 100 100
엑티브X 지원 △(플러그인 설치) △(플러그인 설치) X X
탭 브라우징
팝업차단
테마(스킨) 기능 X
검색 창 ○(주소창과 통합) ○(주소창과 통합)
HTML5 지원 X
CSS3 지원
하드웨어 가속 X X X
추가 기능 설치


더 보기 http://www.ebuzz.co.kr/content/buzz_view.html?ps_ccid=86319#ixzz1GrTR7V00

*강화된 개발자 관리도구도 눈여겨 볼만하다.



미친속도 크롬과 다양한 부가기능의 파이어폭스에 맞설 브라우져 IE9을 살펴보았습니다.

IE9가 맘에 드셨나요? 파이어폭스,크롬에서 북마크정보를 가져옵시다. 여기를 클릭하세요.

+ Recent posts