728x90
MFC 아이콘 변경, 그림 추가
이 포스트는 이전 블로그에서 이전된 포스트입니다.

 

# 아이콘 ICO 변경

 

아이콘 변경을 위해선 먼저 ICO 파일을 준비한다.

 

이후 아이콘 변경은 기존 ICO 파일에 덮어쓰기만 하면 된다.

예를 들어 "C:\Users\deskdos\Documents\Visual Studio 2015\Projects\MFCApplication1\MFCApplication1\res\" 폴더안에 보면

기본적으로 MFCApplication1.ico 파일이 있다.

(프로젝트명.ico)

이 파일에 덮어씌우면 새로운 ico로 아이콘이 변경된다.

 

가끔 Ctrl+F5로 디버깅없이 빌드할 때 아이콘이 변경안되어 있는데, 이 경우 캐쉬됀 내용때문에 계속 예전 아이콘으로 보이는 것이다.

혹시 그렇다면 release 폴더 내의 .exe 파일을 직접 실행해서 확인해본다.

 

반응형

 

# 그림 추가하기

 

그림 추가도 간단하다.

사전에 .bmp 파일을 준비한 후,

MFC 프로젝트에서 '리소스 탭'을 연 후, '프로젝트명.rc'를 우측 클릭 하고 '리소스 추가'를 선택한다.

이후 'bitmap'을 선택한 후, '가져오기'를 이용하여 사진을 가져온다.

(단, 이 경우 bmp 파일이 안보이는 경우가 있는데 이 경우 파일이름 옆에 확장자 탭을 열어 '모든파일(*.*)'로 바꾸면 보인다.)

 

 

그럼 아래와 같이 bitmap이 로드된 것을 볼 수 있다.

 

 

이제 리소스 뷰에서 사진을 추가할 다이어로그 창으로 가서 '도구 상자'를 통해 'Picture Control'을 추가한다.

추가한 Picture Control의 속성에서 아래 두 값을 변경한다.

단, 이경우 Type부터 변경하여야 Image의 선택이 가능하다.

 

 

이후 빌드하면 아래와 같이 그림이 추가된 것을 볼 수 있다.

 

 

.

728x90
728x90
MFC Dialog 엔터(Enter) 혹은 ESC 입력 시, 프로그램이 종료되지 않게 혹은 다른 버튼 수행하도록 하기
이 포스트는 이전 블로그에서 이전된 포스트입니다.

 

Dialog에서 Enter나 ESC 입력 시, 프로그램이 종료된다.

(사전 가정 : 기본 제공되는 OK 버튼과 Cancel 버튼을 제거하거나 함수 내용을 모두 주석처리한다.)
 

이 경우 동작 수행을 변경할 수 있다.

 

1. Dialog의 클래스 마법사 실행

 

2. 가상함수 탭에서 PreTranslateMessage 추가

 

 

3. 연결된 소스파일로 이동한 후, 아래를 참고하여 4~10행을 추가합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
BOOL C진수변환기Dlg::PreTranslateMessage(MSG* pMsg)
{
    // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
    if (pMsg->message == WM_KEYDOWN)
    {
        if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE)             
        {   // 위 VK_RETURN은 Enter, VK_ESCAPE는 ESC을 의미함. 필요시 하나만 사용.
            return true;
        }
    }
 
    return CDialogEx::PreTranslateMessage(pMsg);
}
cs

​ 

반응형

 

추가적으로 특정 버튼을 수행하려고 한다면

8행의 return true; 위에 버튼 실행을 위한 함수를 호출합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
BOOL C진수변환기Dlg::PreTranslateMessage(MSG* pMsg)
{
    // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
    if (pMsg->message == WM_KEYDOWN)
    {
        if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE)             
        {   // 위 VK_RETURN은 Enter, VK_ESCAPE는 ESC을 의미함. 필요시 하나만 사용.
            OnBnClickedButtonConvert();
            return true;
        }
    }
 
    return CDialogEx::PreTranslateMessage(pMsg);
}
cs

 

.

728x90
728x90
'차단된 콘텐츠 허용' 자동으로 허용하기
이 포스트는 이전 블로그에서 이전된 포스트입니다.

 

오프라인에서 작성한 HTML 문서등을 오픈할때 javascript 등이 있으면 위와 같이 '차단된 콘텐츠 허용'이 필요하다는 알림이 출력된다.

 


이는 Mark of the Web (MOTW)라 불리는 기능을 통해 해결가능하다.


알람 메시지를 신경쓰지 않고, 열때마다 항상 자동으로 허용되게 하려면 해당 소스코드 상단에 아래 두번째 행의 내용을 추가한다.


<!DOCTYPE ...생략> 다음 행에 <!-- saved from url=(0013)about:internet --> 추가

 

(예제)

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...생략>         
<!-- saved from url=(0013)about:internet -->    //이 행을 추가합니다.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...생략
</head>
<body>
...생략
</body>

 

이후 해당 문서를 로컬 웹에서 열어도 차단된 콘텐츠 허용 메시지 없이 자동으로 허용된 것을 확인할 수 있다.​

 

반응형

 

728x90
728x90
MFC 특정 Edit Control만 업데이트(UpdateData())하기 (하나의 에디트 컨트롤만 업데이트)

 

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

 

방법먼저 말씀드리자면, 업데이트를 수행할 버튼 등에서 아래와 같이 사용합니다.

 

CDataExchange dx(this, FALSE);
DDX_Text(&dx, IDC_EDIT2, m_str2);

 

1행의  CDataExchange dx(this, FALSE);  에서 FALSE위치에 UpdateData(TRUE)인지 UpdateData(FALSE)인지 지정가능합니다.

 

2행의  DDX_Text(&dx, IDC_EDIT2, m_str2);  에서는 IDC_Edit2는 업데이트를 수행할 에디트 컨트롤의 ID 이며,

 m_str2는 해당 에디트 컨트롤의 멤버 변수로 지정되었습니다.

 - DDX_Text는 변수(CString, int 등)을 컨트롤에 연결시키는 기능을 하는 함수입니다.

 

 

반응형

 

추가적으로 체크박스는 특정 체크박스만 받아오기 위해 DDX_Text를 사용할 수 없습니다.(3번째 인자는 체크박스의 F/T를 받는 것이 아니라 Caption을 받음..)

따라서 아래와 같은 방법으로 체크박스의 상태만 받아오면 됩니다.

BOOL test = IsDlgButtonChecked(IDC_CHECK_BOX);

위처럼 수행하면 test 변수에 FALSE나 TRUE값이 저장되니 이것을 이용하시면 됩니다.

 

728x90
728x90
(C/C++) 현재시간 출력하는 예제 소스
이 포스트는 이전 블로그에서 이전된 포스트입니다.

 

코딩을 하다보면 현재시간을 출력하거나 소스에서 이용해야 하는 경우가 있습니다.

이 경우 아래와 같은 소스를 활용하시면 됩니다.

 

소스 자체에 설명을 같이 작성해 놓았으니 따로 설명하지 않겠습니다.

 

#include <iostream>
#include <ctime>
using namespace std;

int main(void)
{
    // 헤더 파일에 가보면 'typedef long time_t'로 되어 있습니다. 즉, long과 동일하다고 보면 됩니다.
    time_t curr_time;

    // 시간 표시를 위한 구조체를 선언합니다.
    struct tm *curr_tm;

    // time 함수는 1970년 1월 1일 이후 몇초가 지났는지를 계산합니다. NULL을 인자로 사용합니다.
    curr_time = time(NULL);

    // 지역 시간을 기준으로 변환 및 출력 편의를 위하여 tm 구조체에 저장합니다.(포맷팅)
    curr_tm = localtime(&curr_time);

    //출력 예제
    cout << curr_tm->tm_year + 1900 << "년 " << curr_tm->tm_mon + 1 << "일 " << curr_tm->tm_mday << "일" << endl;     
    cout << curr_tm->tm_hour << "시 " << curr_tm->tm_min << "분 " << curr_tm->tm_sec << "초" << endl << endl;
}

 

예제의 결과는 아래와 같습니다.

 

 

.

728x90
12345678···10

+ Recent posts