728x90
MFC 문자열 CString 한자씩 잘라내기 혹은 특정 부분만 잘라내기 (CString Mid, Right, Left 함수)
이 포스트는 이전 블로그에서 이전된 포스트입니다.

 

CString에 있는 문자열 중 특정 부분만 가져올려면 Mid 함수를 사용하시면 편합니다.

이는 아래와 같은 구조의 함수입니다.

CString Mid(

int nFirst,

int nCount (생략가능)

) const;

 

nFirst는 잘라낼 문자의 첫 위치입니다.

nCount는 잘라낼 개수입니다. (생략시 시작위치부터 끝까지를 불러옵니다./ 즉, 앞에만 잘림)

 

CString t_cstr = _T("Contents");                  
MessageBox(t_cstr.Mid(0,1));

 

즉, 첫자만 잘라낼려면 아래와 같습니다.

 

 

출력:

 

 

 

다른 예제로 2번째문자부터 4자를 자르려면 같은 방식입니다.

시작 위치인 1(0부터 시작입니다.)과 글자수인 4를 인자로 사용합니다.

 

CString t_cstr = _T("Contents");                  
MessageBox(t_cstr.Mid(1,4));

 

출력:

 

반응형

 

 

같은 방식으로 Mid 대신 Left와 Right도 사용할 수 있습니다.

Left 함수는 문자열의 좌측(시작)부터 인자의 숫자까지만 출력합니다.

CString Left(

int nCount

) const;

즉, "Contents"라는 내용을 가진 CString을 인자 2를 이용하여 자르면,  "Co"만 출력됩니다.

 

Right 함수는 문자열의 우측(끝)부터 인자의 숫자까지 좌측으로 이동후 출력합니다.

CString Right(

int nCount

) const;

즉, "Contents"라는 내용을 가진 CString을 인자 2를 이용하여 자르면,  "ts"만 출력됩니다.

 


 

 

참고링크:

Mid : https://msdn.microsoft.com/en-us/library/aa300543(v=vs.60).aspx

Left : https://msdn.microsoft.com/en-us/library/aa300477(v=vs.60).aspx

Right : https://msdn.microsoft.com/en-us/library/aa300592(v=vs.60).aspx

 

 

728x90
728x90
MFC 'Static Text' 글자 색상 변경
이 포스트는 이전 블로그에서 이전된 포스트입니다.

 

 

1. 리소스 뷰에서 'Dialog > (우클릭)클래스 마법사' 실행

 

 

2. '메시지' 탭에서 'WM_CTLCOLOR추가

 

 

3. 연결되는 소스 창에서 '9~12' 행의 내용을 추가합니다.

 

 - 9~12 행을 제외한 값은 기본적으로 코딩되어 있습니다.

 - 9행의 IDC_STATIC_11은 글자 색을 변경할 Static Text의 ID 값입니다.

 - 만약 모든 Static Text의 글자 색을 변경시키려면 IF 문 없이 바로 11행만 추가합니다.

 

HBRUSH C진수변환기Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)            
{
    HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO:  여기서 DC의 특성을 변경합니다.

    // TODO:  기본값이 적당하지 않으면 다른 브러시를 반환합니다.
    
    if (pWnd->GetDlgCtrlID() == IDC_STATIC_11)    // 9행
    {
        pDC->SetTextColor(RGB(150, 150, 150));     // 11행
    }

    return hbr;
}

 

반응형

 

728x90
728x90

 

MFC Thread(쓰레드/스레드)의 간단한 구현 및 사용 예제 / 쓰레드에서 본래 윈도우 멤버변수 사용하기

 

이 포스트는 이전 블로그에서 이전된 포스트입니다.

 

먼저 mfc에서 thread 생성 시에는 AfxBeginThread 함수를 이용합니다.

이에 대한 자세한 설명은 MSDN에 넘기겠습니다.

https://msdn.microsoft.com/ko-kr/library/s3w9x78e.aspx

 

 

만약 MFC에서 무한 루프로 동작할 일이 있다면(즉, 백그라운드에서 계속 작업할 일이 있다면)

간단하게 while(1) 같은 걸로 돌릴려 할텐데 이 경우 MFC는 그냥 사용하면 메시지 핸들에서 처리하지 못하고 응답없음이나 기타 오류로 다운되 버리죠..

 

이럴경우 WM_CREATE, 즉 윈도우 생성될때 쓰레드를 같이 하나 생성해버리고, 쓰레드에서 무한 루프를 돌려버리면 됩니다.

 

1. 먼저 쓰레드에 사용될 함수부터 만듭니다. AfxBeginThread에 사용됨

​다이어로그 헤더파일로 가서 아래 함수를 선언합니다.​ (TestDlg.h) 

6행만 입력하시면 됩니다.

static UINT ThreadFirst(LPVOID _mothod);

이 경우 해당 함수가 꼭 static 선언이 되어야 합니다.

 

// CTestDlg 대화 상자
class CTestDlg : public CDialogEx
{
// ..다른코드 생략
public:
    static UINT ThreadFirst(LPVOID _mothod);                    
};

 

이후 함수안에서 행해질 동작을 구현합니다. 이는 소스파일에서 수행하면 됩니다. (TestDlg.cpp)

 

UINT CTestDlg::ThreadFirst(LPVOID _mothod)
{
    CTestDlg *fir = (CTestDlg*)_mothod;

    while (1)
    {
        // ..이 곳에 루프 시 수행할 동작을 선언하세요.
        Sleep(1000);
    }
    return 0;
}

 

2. 이후 Thread를 생성합니다.

이는 뭐.. 버튼에 넣어 줘도 되고, 윈도우 실행시부터 실행하려면 WM_CREATE, 즉 OnCreate 함수에 넣어줍니다.

7~14행을 추가합니다.

 

int CTestDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CDialogEx::OnCreate(lpCreateStruct) == -1)
        return -1;

    // TODO:  여기에 특수화된 작성 코드를 추가합니다.
    CWinThread *p1 = NULL;
    p1 = AfxBeginThread(ThreadFirst, this);

    if (p1 == NULL)
    {
        AfxMessageBox(L"Error");
    }
    CloseHandle(p1);

    return 0;
}

 

이렇게 하면 정상적으로 프로그램이 실행되고, 백그라운드로(실제론 다른 쓰레드로) 무한 루프 작업도 돌릴수 있습니다.

 

반응형

 

아, 추가적으로 static 함수인 쓰레드 함수 안에서 본래의 다이어로그의 변수는 사용이 불가능하기 때문에 아래와 같이 사용하시면 됩니다.

7~8행만 참고하시면 됩니다.

 

UINT CTestDlg::ThreadFirst(LPVOID _mothod)
{
    CTestDlg *fir = (CTestDlg*)_mothod;

    //아래 두 줄을 참고합니다.
    //m_NumOutput은 본래 DIALOG에 선언된 int 변수라 가정
    CTestDlg* pDlg = (CTestDlg*)AfxGetApp()->m_pMainWnd;
    pDlg->mNumOutput = 100;

    return 0;
}

 

 

사용후 제거를 사용안했는데 

이는 아래 링크를 들어가서 참고하시면 될 것 같습니다.

http://injunech.tistory.com/38

 

728x90
728x90
이 포스트는 이전 블로그에서 이전된 포스트입니다.

 

 

kmplayer 사용 시, 업데이트 창이 계속 출력되어 불편한 경우가 있습니다.

이 경우 아래와 같이 설정하시면 업데이트 창이 미출력되도록 할 수 있습니다.

 

 

알약, windows defender, v3의 실시간 감시/호스트파일 변조를 비활성화 한 후 진행해야 합니다.

 

1. 폴더를 열고 아래 경로로 이동합니다.
   C:\Windows\System32\drivers\etc

 

 

2. 해당 폴더에 있는 'hosts'라는 파일을 '워드패드'로 열어줍니다.

 

반응형

 

 3. 아래 내용을 맨 아래에 추가합니다.
   127.0.0.1 cdn.kmplayer.com         : 중간의 공백은 탭으로 처리합니다.

 

 

 4. 이후 저장하시면 다음부터 kmplayer를 실행 시, 업데이트 창이 출력되지 않습니다.

특정 안티바이러스프로그램(예로 알약)은 hosts 파일 변경을 하지 못하도록 하는 기능을 가지고 있어
해당 프로그램(알약 등)을 종료 후, 저장을 시도하셔야 합니다.

 

궁금한 점은 댓글을 담겨주세요.



728x90
728x90

#제주도 #신분증 #주민등록증 #국내선신분증분실 #국내선신분증 #제주공항신분증 #제주도신분증분실 #제주도신분증 #공항등본 #공항신분확인 #공항보안검색대


안녕하세요, 이야기하는 남자입니다.

오늘은 신분증을 분실하였을 때 국내선 탑승하는 방법에 대해 말씀드리겠습니다.



여행을 하다보면 가끔 물건을 잃어 버릴때가 있죠..

특히 신분증을 잃어버린 것을 공항에 와서야 알았을 때..!


하늘이 무너져 내리는 기분이겠지만,, 우리에겐 방법이 있답니다.


그럼 한 번 같이 알아볼까요?


국내선 신분증 분실 시 탑승하는 방법



아래 순서대로 진행하면 문제 없이 탑승 가능합니다!


#1 해당 항공사 카운터(탑승권 발급처)에 방문하고 신분증 분실을 설명합니다.



대한항공 티켓이면 대한항공 탑승권 발급 카운터로 찾아갑니다.

그리고 해당 항공사 비행기를 타려고 하는데 신분증을 분실하였다고 설명합니다.



#2 안내 요원과 같이 무인 발급기로 가서 등본을 출력합니다.



항공사 카운터에 신분증 분신을 설명하면, 안내요원(항공사 보안요원)을 연결시켜 줄 것입니다.

그러면 안내요원을 따라 무인민원발급기로 이동합니다.


이후 주민등록등본을 안내요원이 지켜보는 상황에서 새로 발급 받으면 됩니다.

이 때, 꼭 안내요원과 같이 동행해야 합니다.



안내요원을 동행해서 등본을 발급받으면 보안 스티커 팔찌를 하나 붙여주십니다.

이 팔찌를 훼손하거나 분실하면 탑승이 불가능하니 꼭 잘 유지하시기 바랍니다.



반응형


등본 출력 유의 사항


등본 출력은 꼭 보안 요원과 동행하여야 합니다.

혼자 발급 받으신 경우, 보안 요원 동행 후 다시 발급이 필요합니다.

팔찌를 수령받은 후, 1시간 이내에 보안 검색대를 통과해야만 합니다.
(따라서 탑승 수속 시간이 많이 남은 경우, 탑승 1시간 20분 전 정도에 카운터에 요청합니다.)


#3 보안검색대를 통과합니다.



이제 보안 검색대를 통과 가능합니다.

등본, 보안팔찌, 탑승권을 지참하여 보안 검색대를 통과하면 탑승에 필요한 준비가 완료되었습니다.


이렇게 오늘은 국내선 탑승 시 신분증 분실에 대한 대처법을 알아보았습니다.


감사합니다.


사람은 누구나 실수를 할 수 있습니다~

신분증 잃어버렸다고 즐거운 여행을 아쉬운 기억으로 남기지 않았으면 좋겠습니다. ^^




728x90
1···45678910

+ Recent posts