'프로그래밍/C++'에 해당되는 글 33건

  1. 2008.01.18 비쥬얼스튜디오 사용법정리(개인적정리)
  2. 2007.12.27 SetFocus 사용하기 2
  3. 2007.12.13 CEdit 에서 입력된 글자수 구하는법 2
  4. 2007.12.11 UpdateData
  5. 2007.12.07 CreateFont, CreateFontIndirect
  6. 2007.12.07 SBCS, MBCS, UNICODE
  7. 2007.04.26 splash window
  8. 2007.04.25 CWND Class
  9. 2007.04.25 API TIPS
  10. 2007.04.25 CDC class
MFC 프로그램을 만들때
사용자 인터페이스 기능에서
시스템메뉴를 선택하면 타이틀바에서 마우스오른버튼을 클릭하면 메뉴가 나타납니다.


정보상자도 선택하면 메뉴가 나타날때 정보.. 라는 메뉴도 추가됩니다.
Posted by 빨강토끼
,
다이얼로그가 뜨면 자동으로 에디트컨트롤 이라든지 다른 컨트롤에 포커스를
가져가게 하고 싶은데 잘되지 않았습니다.

보통 ::OnInitDialog() 에
m_ctrl_edit.SetFocus() 이런식의 코드를 넣는데
바로 주의 할점은
return 값입니다.
::OnInitDialog() 의 리턴값이
default value 값인 true 로 되어있는데
이렇게 하면 m_ctrl_edit.SetFocus() 먹지않습니다.

return false 라고 하면
SetFocus() 가 됩니다.


Posted by 빨강토끼
,
입력된 글자수에 대하여 반응하는 프로그래밍을 하던중에
영문일땐 한글자를 1바이트로 계산하고
한글일경우엔 2바이트로 계산하기때문에
GetLength() 를 하면 정확한 글자수를 구하기가 힘들었습니다.

이곳저곳을 찾아봐도 해결책을 찾기 힘들었는데
API 함수중에
SendDlgItemMessageW 를 사용하면 해결할수있다는것을 알았습니다.

예를 들어 editbox 가 IDC_EDITTEXT 라면
int Len = SendDlgItemMessageW(m_hWnd,IDC_EDITEDIT,WM_GETTEXTLENGTH,0,NULL);
이라고 하면 정확한 글자갯수가 나옵니다.

Posted by 빨강토끼
,

UpdateData

프로그래밍/C++ 2007. 12. 11. 20:33
UpdateData(TRUE) 는 컨트롤 화면에 가지고 있는 값이 그변수로 들어오게 됩니다.
UpdateData(FALSE) 는 그 변수에 있는 값이 컨트롤의 화면에 나타나게 됩니다.
Posted by 빨강토끼
,
CreateFont 와 CreateFontIndirect 는 둘다 폰트를 생성하는 함수입니다.

BOOL CreateFont(
    int nHeight, // 폰트의 높이
    int nWidth,   //폰트의 가로크기
    int nEscapement,    // escapement 벡터각도
    int nOrientation,      // 기준선(보통 수평선) 에서의 각도
    int fnWeight,           // 폰트 가중치
    DWORD fdwItalic,    // 이탤릭 속성 플러그
    DWORD fdwUnderline,   // 밑줄 속성 플러그
    DWORD fdwStrikeOut,   // 중앙선 속성 플러그
    DWORD fdwCharSet,    // 문자열 세트 명칭
    DWORD fdwOutputPrecision,   // 출력 정밀도
    DWORD fdwClipprecision,      // 클리핑 정밀도
    DWORD fdwQuality,               // 출력 문자의 질
    DWORD fdwPitchAndFamily,   // 글꼴 피치의 종류
    LPCSTR lpszFace          // 폰트체의 이름
);

CreateFontIndirect 함수는 LOGFONT 구조체를 설정하여 폰트를 만듭니다.
LOGFONT 구조체는 CreateFont 안의 인자의 값을 그대로 구조체화 한것입니다.

typedef struct tagLOGFONT { //lf
    LONG lfHeight;
    LONG lfWidth;
    LONG lfEscapement;
    LONG lfOrientation;
    LONG lfWeight;
    BYTE lfItalic;
    BYTE lfUnderline;
    BYTE lfStrikeOut;
    BYTE lfCharSet;
    BYTE lfOutPrecision;
    BYTE lfClipPrecision;
    BYTE lfQuality;
    BYTE lfPitchAndFamily;
    TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT;

CreateFont 를 이용할때와 CreateFontIndirect 를 이용할 때는 차이가 있습니다.
CreateFontIndirect 를 이용할때엔 가로 크기와 세로크기를 각각 10으로
설정하였다 하더라도 그 문자의 스타일에 따라 보기 좋은 값으로 약간 변합니다.
즉, CreateFontIndirect 함수를 이용하면 글자체가 좀 보기 좋게 나타납니다.
실지로 폰트를 사용할 때는 CreateFontIndirect 를 많이 사용합니다.
폰트 대화상자에서 특정 폰트를 설정하였을때 LOGFONT가 값을 받으며,
이 값을 CreateFontIndirect 에서 바로 이용할 수 있는 장점도 있습니다.
Posted by 빨강토끼
,
http://blog.naver.com/rozio/100013783967

SBCS(Single-byte character set)
SBCS = ASCII ( 1byte), 하나의 문자를 저장하는데 한 바이트만 사용합니다.

MBCS(Multibyte character set)
한국어, 중국어, 일본어 등을 표현하기 위하여 여러바이트를 사용합니다.
그러나 실제로 여러 바이트를 사용하는 일은 없고 DBCS(double-byte character set)라고 해서
2바이트 만을 사용합니다.

UNICODE
국제 표준으로 전세계문자를 2 바이트에서 사용하자는 목적에서 만들어졌습니다.

unicode 상에서는 어떤 문자열을 대입할때 항상 문자열 앞에 L을 붙이게 됩니다.

예)
CString strTemp = L"이것은 연습입니다.";

하지만 이문자열이 unicode 가 아니라 SBCS 나 MBCS에서 사용되어질 수 있는
코드라면 호환이 가능하기 위해서 _T 를 사용합니다.(TEXT 와 같습니다.)

예)
CString strTemp = _T("이것은 연습입니다."); or
CString strTemp = TEXT("이것은 연습입니다.");

이렇게 하면 컴파일 타임에 _UNICODE로 정의가 안되어 있다면

CString strTemp = "이것은 연습니다.";
와 동일하며, unicode환경에서 컴파일 한것이라면
CString strTemp =L"이것은 연습입니다.";
와 동일합니다.

그리고 TCHAR는 SBCS/MBCS 컴파일 환경에서는 char 로 인식하지만
unicode 환경에서는 wchar_t 로 대체됩니다.

위와같은 환경은
Projects -> Settings -> C/C++tab -> preprocessor Definitions 에
보통 _MBCS가 정의되어있습니다.

TCHAR.h 파일에 마지막 정도에 _T(x)에 대한 정의가 있습니다.

Posted by 빨강토끼
,

splash window

프로그래밍/C++ 2007. 4. 26. 17:12
http://www.codeproject.com/miscctrl/csplashscreenex.asp?target=splash

스플래쉬 윈도우는 매인어플이 실행되기전에 잠시 로고등을 보여주는 윈도우를 말합니다.
Posted by 빨강토끼
,

CWND Class

프로그래밍/C++ 2007. 4. 25. 14:52
Posted by 빨강토끼
,

API TIPS

프로그래밍/C++ 2007. 4. 25. 14:51
Posted by 빨강토끼
,

CDC class

프로그래밍/C++ 2007. 4. 25. 11:29
Posted by 빨강토끼
,