'Visual C++'에 해당되는 글 70건
- 2009.12.29 [MFC] CComboBox : 내용길이에 따라 DropDown박스 사이즈 조정
- 2009.12.15 CWinThread 내에서 생성한 CWnd 자동으로 삭제되버리는 문제
- 2009.12.14 ocx 등록하기
- 2009.11.11 Visual Studio 2010 Beta 다운받기
- 2009.10.28 Visual C, C++ KB문서, 2005.05.23 [펌]
- 2009.10.13 VC++ 버전별 배포방법과 재배포패키지(Redistributable Package)
- 2009.10.01 Visual Studio .NET 확장자별 용도
- 2009.09.22 C Runtime 환경의 메모리 릭 잡기 [링크]
- 2009.09.22 [펌]문자열 출력 함수 (TextOut, DrawText)
- 2009.08.20 VC6 -> VS .NET 2008 로 컨버젼중~
- 2009.08.19 디버깅 테크닉! 콘솔띄워서 바로 로그를 확인하자!
- 2009.07.29 Visual Studio .NET 확장자별 용도
- 2009.07.08 서브클래싱 관련 링크
- 2009.07.08 _countof 매크로
- 2009.07.07 MFC/CWnd 멤버 함수 [펌]
- 2009.07.03 LNK4070
- 2009.07.01 비트맵 마스크 원리 [링크]
- 2009.06.29 [VS2008 IDE] 파일(File)과 필터(Filter)
- 2009.06.26 Visual Studio 컴파일러 버젼(_MFC_VER, _MSC_VER)
- 2009.06.23 [VS2003이상] 멀티코어 CPU를 이용한 빌드 속도 향상 옵션 설정법 [펌] 1
[MFC] CComboBox : 내용길이에 따라 DropDown박스 사이즈 조정
Posted on 2009. 12. 29. 16:11
Filed Under Visual C++
// Message Map
ON_CBN_DROPDOWN(IDC_COMBO1, OnDropdownCombo1)
// 사용
void CTestDlg::OnDropdownCombo1()
{
gfSetDroppedWidthCb(m_Combo, this);
}
// 자동 리사이즈 함수
inline void gfSetDroppedWidthCb(CComboBox& _cb, CWnd* _pwndParent)
{
int nNumEntries = _cb.GetCount();
int nWidth = 0;
CString str;
CClientDC dc(_pwndParent);
int nSave = dc.SaveDC();
dc.SelectObject(_pwndParent->GetFont());
int nScrollWidth = ::GetSystemMetrics(SM_CXVSCROLL);
for (int i = 0; i < nNumEntries; i++)
{
_cb.GetLBText(i, str);
int nLength = dc.GetTextExtent(str).cx + nScrollWidth;
nWidth = __max(nWidth, nLength);
}
nWidth += dc.GetTextExtent(_T("0")).cx;
dc.RestoreDC(nSave);
_cb.SetDroppedWidth(nWidth);
}
천과장님~ 땡스얼랏! >_</
<적용전>
<적용 효과>
CWinThread 내에서 생성한 CWnd 자동으로 삭제되버리는 문제
Posted on 2009. 12. 15. 20:51
Filed Under Visual C++
1.요약
CWinThread로 UI Thread를 만드는 방법과 주의해야 할 점 수록!!
2.본문
CWinThread를 사용해서 스레드를 만드는 방법은 2가지가 있습니다.
(1) AfxBeginThread() - Worker Thread
(2) CWinThread::CreateThread() - UI Thread
우리가 취해야 할 방법은 2번입니다.
AfxBeginThread()를 사용하는 경우에는
API인 CreateThread나 CRT인 _beginthread()처럼
스레드 입구 함수(entry-point)를 지정할 수 있습니다.
그러면 새 스레드는 그 함수를 실행하면서 시작된다고 볼 수 있습니다.
2번 방법인 CWinThread::CreateThread() 를 사용하는 경우에는
스레드 입구 함수를 넘겨줄 수 있는 인자는 없습니다.
다음과 같은 방법으로 해야되겠죠.
(1) CWinThread를 상속받는 클래스를 만든다.
==> 예를 들어서 CUIThread 라고 합시다.
(2) CUIThread::InitInstance()를 스레드 입구 함수로 보고 그곳에 필요한 코드를 넣습니다.
아마도 메인 윈도우를 만들어서 저장시키는 등의
( 여러분이 줄곧 CWinApp-based 클래스의 InitInstance() 에서 했던 일들이겠죠)
끝입니다.
UI Thread이기 때문에 메인 윈도우가 죽으면서
PostQuitMessage() 를 해주면 스레드가 종료하겠죠.
스레드 종료시 CWinThread 객체는 디폴트로 자기자신의 메모리를 해제하도록 되어있습니다.
그러니까 만약에 CWinThread-based 클래스의 객체를
Heap( new나 malloc()으로 할당한경우)이 아닌 곳에 생성했다면 문제가 발생하겠죠.
이는 다음과 같은 간단한 조치로 막을 수 있습니다.
CWinThread-based 클래스의 생성자에서 가볍게 다음과 같이 해주면 됩니다.
m_bAutoDelete = FALSE;
4.참고
MSDN - CWinThread overview
출처: http://blog.naver.com/kelly85/110014329730
Visual Studio 2010 Beta 다운받기
Posted on 2009. 11. 11. 15:13
Filed Under Visual C++
Visual C, C++ KB문서, 2005.05.23 [펌]
Posted on 2009. 10. 28. 13:46
Filed Under Visual C++
Visual C, C++ KB문서 2005/05/23 12:14 |
VC++ 버전별 배포방법과 재배포패키지(Redistributable Package)
Posted on 2009. 10. 13. 16:30
Filed Under Visual C++
한글: http://bit1010.tistory.com/110?srchid=BR1http%3A%2F%2Fbit1010.tistory.com%2F110
영문: http://blogs.msdn.com/astebner/archive/2009/01/29/9384143.aspx
Visual Studio .NET 확장자별 용도
Posted on 2009. 10. 1. 10:20
Filed Under Visual C++
확장자명 |
이름 |
설명 |
|
.sln |
VS 솔루션 |
디스크상의 프로젝트, 프로젝트 항목 및 솔루션 항목 위치에 대한 참조를 개발 환경에 제공하여 이러한 각 항목을 솔루션으로 구성합니다. |
|
.suo |
솔루션 지정 옵션 |
솔루션을 열 때마다 사용자가 설정한 사용자 지정 내용이 포함되도록 솔루션과 연결할 수 있는 모든 옵션을 기록합니다. |
|
확장자명 |
이름 |
설명 | |
.asmx |
소스 |
배포 파일 | |
.atp |
프로젝트 |
응용 프로그램 템플릿 프로젝트 파일 | |
.bsc |
프로젝트 |
브라우저 코드 파일 | |
.dbp |
프로젝트 |
데이터베이스 프로젝트 파일 | |
.disco |
소스 |
동적 검색 문서 파일. XML Web services 검색을 처리합니다. | |
.html, .html, .xsp, .asp, .htc, .hta, .xml |
리소스 |
일반 웹 파일 | |
.HxC |
프로젝트 |
도움말 프로젝트 파일 | |
.idb |
컴파일 |
클래스 정의와 소스 파일 간의 종속성 정보가 들어 있는 상태 파일. 최소 다시 빌드 및 증분 컴파일을 하는 동안 컴파일러에서 사용할 수 있습니다. /Fd 컴파일러 옵션을 사용하여 파일 이름을 지정합니다. 자세한 내용은 /Gm(최소 다시 빌드 사용)을 참조하십시오. | |
.idl |
컴파일 |
인터페이스 정의 언어 파일. 자세한 내용은 Windows SDK의 Interface Definition (IDL) File을 참조하십시오 | |
.ilk |
링크 |
증분 링크 파일. 자세한 내용은 /INCREMENTAL을 참조하십시오. | |
.map |
링크 |
링커 정보를 포함하는 텍스트 파일. /Fm 컴파일러 옵션을 사용하여 맵 파일 이름을 지정합니다. 자세한 내용은 /MAP를 참조하십시오. | |
.obj, .o |
|
컴파일되었지만 링크되지 않은 개체 파일 | |
.ncb |
해결책 |
컴파일하지 않는 브라우저 파일. | |
.pch |
디버그 |
미리 컴파일된 헤더 파일 | |
.pdb |
디버그 |
프로그램 디버그 데이터베이스 파일. 자세한 내용은 PDB 파일을 참조하십시오 | |
.rc, .rc2 |
리소스 |
리소스를 생성하는 리소스 스크립트 파일 | |
.sbr |
컴파일 |
소스 브라우저 중간 파일. BSCMAKE를 위한 입력 파일 | |
.txt |
리소스 |
텍스트 파일. 보통 "추가 정보" 파일 | |
.vap |
프로젝트 |
Visual Studio Analyzer 프로젝트 파일 | |
.vbg |
해결책 |
호환 가능한 프로젝트 그룹 파일 | |
.vbp, .vip, .vbproj |
프로젝트 |
Visual Basic 프로젝트 파일 | |
.vcproj |
프로젝트 |
Visual C++ 프로젝트 파일. 자세한 내용은 프로젝트 파일 및 메이크파일을 참조하십시오. | |
.vdproj |
프로젝트 |
Visual Studio deployment 프로젝트 파일 | |
.vmx |
프로젝트 |
매크로 프로젝트 파일 | |
.vup |
프로젝트 |
유틸리티 프로젝트 파일 |
C Runtime 환경의 메모리 릭 잡기 [링크]
Posted on 2009. 9. 22. 16:40
Filed Under Visual C++
[펌]문자열 출력 함수 (TextOut, DrawText)
Posted on 2009. 9. 22. 13:16
Filed Under Visual C++
[펌]문자열 출력 함수
2007/01/10 15:33 http://blog.naver.com/iperfume/100032988161
|
문자열 출력 함수.
BOOL TextOut(HDC hdc, int nXStart, int nYStart, LPCTSTR lpString, int cbString);
▶hdc:DC핸들
▶nXStart:문자열을 출력할 X좌표
▶nYStart:문자열을 출력할 Y좌표
▶lpString:출력할 문자열
▶cbString:문자열의 길이. 널 종료 문자열을 인식하지 않으므로 반드시 길이를 밝혀 주어야 한다.
문자열의 정렬 방법을 변경하는 함수
UINT SetTextAlign(HDC hdc, UINT fMode);
▶fMode:정렬 방식과 CP사용 여부 등의 플래그를 지정한다. 정렬 방식은 수평, 수직에 대해 각각 한 종류만 선택할 수 있다.
플래그 | 설명 |
TA_BLASELINE | 텍스트의 기준선에 정렬 |
TA_BOTTOM | 수직 하단 정렬 |
TA_TOP | 수직 상단 정렬 |
TA_CENTER | 수평 중앙 정렬 |
TA_LEFT | 수평 왼쪽 정렬 |
TA_RIGHT | 수평 오른쪽 정렬 |
TA_NOUPATECP | 문자열이 출력된 후 CP는 변경되지 않는다. |
TA_RTLREADING | 문자열을 오른쪽에서 왼쪽으로 출력한다. 한글 윈도우즈에서는 의미가 없다. |
TA_UPDATECP | 문자열 출력 좌표 CP를 사용하며 문자열 출력 후 CP를 갱신한다. |
사각영역을 정의하여 영역 안에 문자열을 출력할수 있다.
int DrawText(HDC hDC, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat);
▶hDC:DC핸들
▶lpString:출력할 문자열. nCount가 -1이면 널 종료 문자열이어야 한다.
▶nCount:문자열을 길이. -1일 경우 널 종료 문자까지를 문자열 길이로 계산한다.
▶lpRect:문자열을 출력할 시각영역
▶uFormat:출력 옵션.
플레그 | 설명 |
DT_BOTTOM | 텍스트를 사각 영역의 바닥에 출력한다. DT_SINGLELINE 플레그가 설정되어 있을 때만 사용할 수 있다. |
DT_CALCRECT | 문자열을 출력할 수 있는 사각 영역을 계산한다. 문자열이 여러줄로 되어 있으면 사각 영역의 바닥(bottom)을 확장하여 모든 문자열이 다 포함되도록 하며 문자열이 한줄로 되어 있으면 사각 영역의 오른쪽(right)을 확장한다. 이 플레그가 주어지면 실제 문자열은 출력되지 않고 계산만 해 준다. |
DT_CENTER | 수평 중앙 정렬 |
DT_EDITCONTROL | 멀티 라인 에디트 컨트롤과 같은 방식으로 문자열을 출력한다. 문자의 수평폭을 계산하는 방법이 에디트 컨트롤과 동일하며 마지막 줄의 일부가 보이지 않을 경우 출력하지 않는다. |
DT_END_ELLIPSIS | 문자열 끝이 사각 영역을 넘을 경우 문자열은 자르고 생략 기호(...)을 대신 보여준다. 단어가 잘릴 경우는 생략 기호를 붙이지 않는다. |
DT_EXPANDTABS | 탭 문자를 확장하여 8문자 너비로 만든다. |
DT_EXTERNALLEADING | 일반적으로 폰트 높이에 External Leading은 제외되는데 이 플레그가 주어지면 폰트 높이에 External Leading을 포함시킨다. |
DT_HIDEPREFIX | 2000이상:&문자를 무시하며 &다음 문자에 밑줄이 그어지지 않는다. |
DT_INTERNAL | 시스템 폰트를 사용하여 텍스트 메트릭을 계산한다. |
DT_LEFT | 수평 왼쪽 정렬 |
DT_MODIFYSTRING | 문자열을 출력된 모양대로 변경한다. DT_END_ELLIPSIS, DT_PATH_ELLIPSIS 플레그와 함꼐 사용되며 그 외의 경우는 아무런 효과가 없다. |
DT_NOCLIP | 클리핑없이 문자열을 출력한다. 그래서 문자열이 사각형 밖으로 벗어나도 자르지 않고 그냥 출력된다. |
DT_NOFULLWIDTHCHARBREAK | DBCS환경에서 자동 개행 방법을 SBCS와 동일하게 설정한다. |
DT_NOPREFIX | &문자를 그대로 출력한다. |
DT_PATH_ELLIPSIS | 문자열 끝이 사각 영역을 넘을 경우 문자열의 중간을 생략 기호로 바꾸어 사각 영역에 맞게 조정한다. 문자열 내부에 \문자가 있을 경우 마지막 \이후의 문자를 최대한 보존해 준다. |
DT_PREFIXONLY | 2000이상:&문자가 있는 위치에 밑줄만 출력한다. 텍스트는 출력되지 않는다. |
DT_RIGHT | 수평 오른쪽 정렬 |
DT_RTLREADING | hdc에 선택된 폰트가 Hebrew 또는 Arabic 폰트인 경우 오른쪽에서 왼쪽으로 문자열을 출력한다. |
DT_SINGLELINE | 문자열을 무조건 한줄로만 출력한다. CR, LF코드가 있어도 개행되지 않는다. |
DT_TABSTOP | 탭 정지점을 설정한다. uFormat인수의 8~15비트(하위 워드의 상위 바이트)가 탭 정지점 설정에 사용되며 디폴트를 8문자이다. |
DT_TOP | 텍스트를 사각 영역의 윗쪽에 출력한다. |
DT_VCENTER | 수직 중앙 정렬한다. |
DT_WORDBREAK | 단어가 사각형의 오른쪽 변에 닿았을 경우 자동 개행한다. CR/LF 조합은 강제로 개행시킨다. |
DT_WORD_ELLIPSIS | 사각 영역을 넘을 경우 단어를 자르고 생략 기호를 붙인다. |
그래픽 출력
COLORREF SetPixel(HDC hdc, int X, int Y, COLORREF crColor);
BOOL MoveToEx(HDC hdc, int X, int Y, LPPOINT lpPoint);
BOOL LineTo(HDC hdc, int nXEnd, int nYEnd);
BOOL Rectangle(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
BOOL Ellipse(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
LineTo함수는 CP(현재 좌표)에서부터 지정한 좌표까지 선을 그으며 CP를 끝점으로 이동시켜 준다.
MoveToEx는 CP를 지정한 좌표(x,y)로 이동시켜준다. 이동전의 CP좌표를 lpPoint에 대입해주는데 이전 CP값이 필요치 않는 경우 lpPoint에 NULL을 넘겨주면 된다.
(a,b) ~ (c,d) 까지 선을 긋고 싶다면
MoveToEx(hdc, a, b, NULL);
LineTo(hdc,c,d);
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
MoveToEx(hdc,150,150,NULL);
LineTo(hdc,180,200);
Rectangle(hdc,200,100,250,180);
Ellipse(hdc,200,200,250,280);
EndPaint(hWnd,&ps);
return 0;
메시지 박스는 조그만 별도의 윈도우를 열어서 사용자에게 정보를 전달해 주거나 질문을 하는 장치.
int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
▶hWnd : 부모 윈도우의 핸들. 메시지 박스의 이 윈도우의 모달 대화상자로 열린다. 부모 윈도우가 없을 경우 NULL로 지정할 수 있다.
▶lpText : 메시지 내용을 나타내는 널 종료 문자열. 이 문자열은 ANSI 문자열일 수도 있고 유니코드 문자열일 수도 있는데 어떤 포맷이라도 메시지 출력이 가능하다.
▶lpCaption : 메시지 박스의 타이틀 바에 나타날 문자열. NULL일 경우 디폴트로 Error(한글 윈도우즈에서는 오류)가 표시된다.
▶uType : 메시지 박스에 나타날 버튼의 종류와 아이콘 모양, 동작 방식을 지정한다. 다음 여러 그룹의 플래그 조합을 지정할 수 있다.
[출처] [펌]문자열 출력 함수|작성자 루시아
VC6 -> VS .NET 2008 로 컨버젼중~
Posted on 2009. 8. 20. 14:21
Filed Under Visual C++
Command line warning D9035 :
option 'Wp64' has been deprecated and will be removed in a future release
<http://kaistizen.net/EE/index.php/weblog/comments/vs2005_to_vs2008/>
<출처: http://blog.naver.com/leolo/70044309207>
Visual C++ 6.0 으로 진행되던 프로젝트를 Visual C++ 2005로 포팅하게 되면(Visual C++ 2005 툴을 이용한 Project 변환 이용) WINVER 가 정의 되지 않아 Default 값인 Windows Server 2003으로 설정된다는 메세지를 보게 된다.
만들고 있는 프로젝트가 지원해야 할 최소 OS 를 설정하기 위해서는 WINVER를 설정해야 한다.
설정값은 다음과 같다.
Minimum system required | Macros to define |
---|---|
Windows Vista | _WIN32_WINNT>=0x0600
WINVER>=0x0600 |
Windows Server 2003 | _WIN32_WINNT>=0x0502
WINVER>=0x0502 |
Windows XP | _WIN32_WINNT>=0x0501
WINVER>=0x0501 |
Windows 2000 | _WIN32_WINNT>=0x0500
WINVER>=0x0500 |
Windows NT 4.0 | _WIN32_WINNT>=0x0400
WINVER>=0x0400 |
Windows Me | _WIN32_WINDOWS=0x0500
WINVER>=0x0500 |
Windows 98 | _WIN32_WINDOWS>=0x0410
WINVER>=0x0410 |
Windows 95 | _WIN32_WINDOWS>=0x0400
WINVER>=0x0400 [출처] OS 별 WINVER 설정하기|작성자 레올로 |
디버깅 테크닉! 콘솔띄워서 바로 로그를 확인하자!
Posted on 2009. 8. 19. 10:06
Filed Under Visual C++
printf로 로그를 뿌리고 바로바로 콘솔창으로 확인할 수 있답니다~
1) SYBSYSTEM을 Console로 변경
(또는 #pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:console") 사용)
2) main() 정의
{
_tWinMain(GetModuleHandle(NULL), NULL, NULL, SW_SHOW);
}
main()정의는 Projecp.cpp에 하셔두 되구 stdafx.h에 해두 되더군요.
맘에 드는 곳에~
=========================================================
아니면 파일을 하나 만들어서
#pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:console")
void main()
{
_tWinMain(GetModuleHandle(NULL), NULL, NULL, SW_SHOW);
}
#endif
해놓고 #define _CONSOLE_DEBUG_MODE 선언하셔서 쓰셔두 될듯~
끝!
<정보출처: http://blog.naver.com/mysticodoi/140033357279>
Visual Studio .NET 확장자별 용도
Posted on 2009. 7. 29. 15:44
Filed Under Visual C++
확장자명 |
이름 |
설명 |
|
.sln |
VS 솔루션 |
디스크상의 프로젝트, 프로젝트 항목 및 솔루션 항목 위치에 대한 참조를 개발 환경에 제공하여 이러한 각 항목을 솔루션으로 구성합니다. |
|
.suo |
솔루션 지정 옵션 |
솔루션을 열 때마다 사용자가 설정한 사용자 지정 내용이 포함되도록 솔루션과 연결할 수 있는 모든 옵션을 기록합니다. |
|
확장자명 |
이름 |
설명 | |
.asmx |
소스 |
배포 파일 | |
.atp |
프로젝트 |
응용 프로그램 템플릿 프로젝트 파일 | |
.bsc |
프로젝트 |
브라우저 코드 파일 | |
.dbp |
프로젝트 |
데이터베이스 프로젝트 파일 | |
.disco |
소스 |
동적 검색 문서 파일. XML Web services 검색을 처리합니다. | |
.html, .html, .xsp, .asp, .htc, .hta, .xml |
리소스 |
일반 웹 파일 | |
.HxC |
프로젝트 |
도움말 프로젝트 파일 | |
.idb |
컴파일 |
클래스 정의와 소스 파일 간의 종속성 정보가 들어 있는 상태 파일. 최소 다시 빌드 및 증분 컴파일을 하는 동안 컴파일러에서 사용할 수 있습니다. /Fd 컴파일러 옵션을 사용하여 파일 이름을 지정합니다. 자세한 내용은 /Gm(최소 다시 빌드 사용)을 참조하십시오. | |
.idl |
컴파일 |
인터페이스 정의 언어 파일. 자세한 내용은 Windows SDK의 Interface Definition (IDL) File을 참조하십시오 | |
.ilk |
링크 |
증분 링크 파일. 자세한 내용은 /INCREMENTAL을 참조하십시오. | |
.map |
링크 |
링커 정보를 포함하는 텍스트 파일. /Fm 컴파일러 옵션을 사용하여 맵 파일 이름을 지정합니다. 자세한 내용은 /MAP를 참조하십시오. | |
.obj, .o |
|
컴파일되었지만 링크되지 않은 개체 파일 | |
.ncb |
해결책 |
컴파일하지 않는 브라우저 파일. | |
.pch |
디버그 |
미리 컴파일된 헤더 파일 | |
.pdb |
디버그 |
프로그램 디버그 데이터베이스 파일. 자세한 내용은 PDB 파일을 참조하십시오 | |
.rc, .rc2 |
리소스 |
리소스를 생성하는 리소스 스크립트 파일 | |
.sbr |
컴파일 |
소스 브라우저 중간 파일. BSCMAKE를 위한 입력 파일 | |
.txt |
리소스 |
텍스트 파일. 보통 "추가 정보" 파일 | |
.vap |
프로젝트 |
Visual Studio Analyzer 프로젝트 파일 | |
.vbg |
해결책 |
호환 가능한 프로젝트 그룹 파일 | |
.vbp, .vip, .vbproj |
프로젝트 |
Visual Basic 프로젝트 파일 | |
.vcproj |
프로젝트 |
Visual C++ 프로젝트 파일. 자세한 내용은 프로젝트 파일 및 메이크파일을 참조하십시오. | |
.vdproj |
프로젝트 |
Visual Studio deployment 프로젝트 파일 | |
.vmx |
프로젝트 |
매크로 프로젝트 파일 | |
.vup |
프로젝트 |
유틸리티 프로젝트 파일 |
서브클래싱 관련 링크
Posted on 2009. 7. 8. 11:11
Filed Under Visual C++
[MFC -메시지-서브클래싱]PreTranslateMessage를 이용한 서브클래싱
Converting a MFC CWnd derived class to a ActiveX control.
_countof 매크로
Posted on 2009. 7. 8. 11:08
Filed Under Visual C++
// determine number of elements in an array (not bytes)
#define _countof(array) (sizeof(array)/sizeof(array[0]))
배열 사이즈를 알아내는 요런 매크로가 있다.
void Test2(TCHAR szQry[])
{
int size = _countof(szQry); //<! size = 4 ☞ 두 경우다 배열사이즈를 모른다.
}
void OnTest()
{
TCHAR szQry[1024];
ZeroMemory(szQry, sizeof(szQry));
int size = _countof(szQry); //<! 1024 : 제대로 나온다.
TCHAR* szQry = new TCHAR[10];
int size = _countof(szQry2); //<! 4 : 포인터형은 포인터 사이즈가 출력
Test2(szQry);
}
MFC/CWnd 멤버 함수 [펌]
Posted on 2009. 7. 7. 14:17
Filed Under Visual C++
데이터 멤버
m_hWnd : CWnd와 관련된 HWND를 가리킨다.
생성/소멸 관련 함수
CWnd : CWnd객체를 생성한다.
DestroyWindow : 윈도우를 소멸한다. 그렇지만 객체를 소멸시키는 것은 아니다.
초기화 관련 함수
Create : CWnd 객체와 관련된 자식 윈도우를 만들고 초기화한다.
PreCreateWindow : CWnd 객체와 관련된 실제 윈도우를 만들기 전에 호출된다.
CaleWindowRect : 클라이언트 사각형 영역에서 윈도우를 만들기 전에 호출된다.
GetStyle : 현재 윈도우의 스타일을 반환한다.
GetExStyle : 확장된 윈도우의 스타일을 반환한다.
Attach : CWnd 객체에 윈도우 핸들을 추가한다.
Detach : CWnd 객체에서 윈도우 핸들을 분리하고 핸들을 반환한다.
PreSubclassWindow : SubclassWindow가 호출되기 전에 필요한 다른 서브클래싱이 일어나 는 것을 허용한다.
SubclassWindow : CWnd 객체에 윈도우를 추가하고 CWnd의 메시지맵을 통해서 루트 메시 지로 만든다.
UnSubclassWindow : CWnd 객체에서 윈도우를 분리한다.
FromHandle : 윈도우에 핸들이 주어질 때 CWnd 객체에 대한 포인터를 반환한다. CWnd 객체가 핸들을 가지지 않는다면, 임시적인 CWnd 객체기 생성되고 추가된다.
FromHandlePermanent : 윈도우에 핸들이 주어질 때 CWnd 객체에 대한 포인터를 반환한다.
CWnd 객체가 핸들을 가지지 않는다면, NULL이 반환된다.
DeleteTempMap : CWinApp가 자동으로 호출하며 FromHandle에 의해서 생성된 어떠한 임시 CWnd 객체도 지운다.
GetSafeHwnd : 포인터가 NULL이면, m_hWnd, 또는 NULL을 반환된다.
CreateEx : 오버랩된 형태의 팝업 자식 윈도우를 생성하고 이것을 CWnd 객체에 추가한다
CreateControl : MFC 프로그램에서 CWnd 객체에 의해서 표현되는 OLE 컨트롤을 생성한다.
윈도우 상태 함수
IsWindowEnabled : 윈도우에 마우스와 키보드 입력이 가능한지를 결정한다.
EnableWindow : 윈도우에 마우스와 키보드로 입력을 가능하게 하거나 불가능하도록 한다.
GetActiveWindow : 활성 윈도우를 얻는다.
SetActiveWindow : 윈도우를 활성화한다.
GetCapture : 마우스를 캡쳐한 CWnd를 얻는다.
SetCapture : 모든 일련의 마우스 입력이 CWnd로 보내지도록 한다.
GetFocus : CWnd가 현재 입력 포커스를 가지고 있는지 검사한다.
SetFocus : 입력 포커스를 설정한다.
GetDestktopWindow : 윈도우 시스템의 desktop윈도우를 얻는다.
GetForegroundWindow : 포그라운드 윈도우의 포인터를 반환한다.
SetForegroundWindow : 생성된 윈도우의 스레드를 포그라운드로 설정하고 윈도우를 활성 화 한다.
GetIcon : 핸들에서 아이콘을 얻는다.
SetIcon : 핸들에 특정 아이콘을 설정한다.
GetWindowContextHelpId : 도움말 항목에 대한 식별자를 얻는다.
SetWindowContextHelpId : 도움말 항목에 대한 식별자를 지정한다.
ModifyStyle : 현재 윈도우의 스타일을 수정한다.
ModifyStyleEx : 확장된 윈도우의 스타일을 수정한다.
윈도우의 크기와 위치
GetWindowPlacement : 윈도우가 보여지는 상태와 정상(복귀된), 최소, 최대화된 윈도우의 위치를 얻는다.
SetWindowPlacement : 윈도우가 보여지는 상태와 정상(복귀된), 최소, 최대화된 윈도우의 위치를 설정한다.
IsIconic : CWnd가 최소화되었는지를 알아본다.
IsZoomed : CWnd가 최대화되었는지를 알아본다.
MoveWindow : CWnd의 위치또는 크기를 변경한다.
SetWindowPos : 크기, 위치, 순서, 팝업, 최상위 윈도우에 대한 것을 설정한다.
ArrangeIconicWindows : 모든 축소된(아이콘화 된) 자식 윈도우에 대한 것을 설정한다.
BringWindowToTop : CWnd를 오버랩 된 윈도우의 맨 처음으로 보낸다.
GetWindowRect : CWnd의 화면 좌표를 얻는다.
GetClientRect : CWnd 클라이언트 영역의 크기를 얻는다.
윈도우 참조 관련 함수
ChildWinddowFromPoint : 어떤 자식 윈도우가 특정 점을 포함하고 있는지를 알아낸다.
FindWindow : 윈도우의 이름과 클래스로 확인이 가능한 윈도우의 핸들을 반환한다.
GetNextWindow : 윈도우 관리자의 리스트에서 다음 또는 이전 윈도우를 반환한다.
GetOwner : CWnd의 소유자에 대한 포인터를 얻는다.
SetOwner : CWnd의 소유자를 변경한다.
GetTopWindow : CWnd에 속한 맨 첫 번째 자식 윈도우를 반환한다.
GetWindow : 이 윈도우와 특정한 관계를 가지고 있는 윈도우를 반환한다.
GetLastActivePopup : CWnd이 가지고 있는 팝업 윈도우가 가장 최근에 활성화 되었는지를 알아낸다.
IsChild : CWnd가 자식 윈도우인지 또는 다른 특정 윈도우의 후손인지를 알아낸다.
GetParent : CWnd의 부모 윈도우가 있다면 그 윈도우를 얻는다.
GetSafeOwner : 지정된 윈도우의 소유자를 얻는다.
SetParent : 부모 윈도우를 변경한다.
WindowFromPoint : 특정 점을 포함하는 윈도우를 알아낸다.
GetDlgItem : 특정 대화상자에서 특정 ID의 컨트롤을 얻는다.
GetDlgCtrlID : CWnd가 자식 윈도우이면, 자신의 ID 값을 반환한다.
SetDlgCtrlID : 윈도우에 윈도우 또는 컨트롤의 ID를 설정한다.
GetDescendantWindow : 모든 자식 윈도우를 검색하고 윈도우의 특징 ID를 반환한다.
GetParentFrame : CWnd 객체의 부모 프레임 윈도우를 얻는다.
SendMessageToDescendants : 윈도우의 모든 자식 윈도우에게 메시지를 보낸다.
GetToLevelParent : 윈도우의 최상위 부모를 얻는다.
GetToLevelOwner : 최상위 윈도우를 얻는다.
GetParentOwner : 자식 윈도우의 부모 윈도우에 대한 포인터를 반환한다.
GetTopLevelFrame : 윈도우의 촤상위 프레임 윈도우를 얻는다.
UpdateDialogControls : 대화상자의 버튼이나 다른 컨트롤들의 상태 갱신을 요구한다.
UpdateData : 대화상자의 데이터를 초기화하고 유효화한다.
CenterWindow : 부모 윈도우의 중앙에 윈도우를 위치시킨다.
갱신/그리기 함수
BeginPaint : 드로잉 작업을 수행하기 위해서 CWnd를 준비한다.
EndPaint : 드로임 작업을 마친다.
Print : 특정 디바이스 컨텍스트에 현재 윈도우를 그린다.
PrintClient : 특정 디바이스 컨텍스트에 모든 윈도우를 그린다.
LockWindowUpdate : 정해진 윈도우에 드로잉을 불가능하도록 하거나 다시 가능하도록 한다.
GetDC : 클라이언트 영역에 표시된 디바이스 컨텍스트를 얻는다.
GetDCEx : 클라이언트 영역에 표시된 디바이스 컨텍스트를 얻고, 그리는 도중에 클리핑이 가능하도록 한다.
RedrawWindow : 클라이언트 영역에서 특정 사각형이나 특정 영역을 갱신한다.
GetWindowDC : 툴바나, 메뉴, 스크롤 바를 포함한 모든 윈도우 영역에 대한 디바이스 컨 텍스트를 얻는다.
ReleaseDC : 클라이언트와 윈도우 디바이스 컨택스트를 해제함으로써, 다른 애플리케이션 이 사용할 수 있도록 한다.
UpdateWindow : 클라이언트 영역을 갱신한다.
SetRedraw : CWnd가 변화된 것을 다시 그리도록 설정하거나, 다시 그릴 수 없도록 설정 하는 역할을 한다.
GetUpdateRect : CWnd의 갱신 영역을 완전히 둘러싸는 가장 작은 사각형의 좌표를 얻는다.
GetUpdateRgn : CWnd의 갱신 영역을 얻는다.
Invalidate : 모든 클라이언트 영역을 무효화한다.
InvalidateRect : 현재의 갱신 영역에 사각형을 추가함으로써 정해진 사각형 내의 클라이언 트 영역을 무효화한다.
InvalidateRgn : 현재의 갱신 영역에 영역을 추가함으로써 정해진 영역내의 클라이언트 영 역을 무효화한다.
VaildateRect : 현재의 갱신 영역에서 사각형을 제거함으로써 정해진 사각형 내의 클라이 언트 영역을 유효화시킨다.
VaildateRgn : 현재의 갱신 영역에 영역을 제거함으로써 정해진 영역 내의 클라이언트 영 역을 유효화시킨다.
ShowWindow : 윈도우를 보이도록 하거나 숨긴다.
IsWindowVisible : 윈도우가 보이는지를 알아낸다.
ShowOwnedPopups : 윈도우가 가지고 있는 모든 팝업 윈도우를 보이게 하거나 숨긴다.
EnableScrollBar : 스크롤 바의 화살표를 사용가능하도록 하거나 불가능하게 한다.
좌표 매핑 관련 함수
MapWindowPoints : CWnd의 좌표계로부터 다른 윈도우의 좌표계로 지정된 점들을 매핑시 킨다.
ClientToSreen : 클라이언트 좌표계를 화면 좌표계로 변환한다.
ScreenToClient : 화면 좌표계를 클라이언트 좌표계로 변환한다.
윈도우 텍스트 함수
SetWindowText : 윈도우의 텍스트나 캡션 제목을 지정된 텍스트로 설정한다.
GetWindowText : 윈도우의 텍스트나 캡션 제목을 반환한다.
GetWindowTextLength : 윈도우의 텍스트나 캡션 제목의 길이를 반환한다.
SetFont : 현재의 폰트를 설정한다.
GetFont : 현재의 폰트를 얻는다.
스크롤 관련 함수
GetScrollPos : 스크롤 박스의 현재 위치를 얻는다.
GetScrollRange : 지정된 스크롤 바에 대한 최소, 최대의 스크롤 바 위치 값을 얻는다.
ScrollWindow : 클라이언트 영역의 내용을 스크롤한다.
ScrollWindowEx : 클라이언트 영역의 내용을 스크롤한다. (ScrollWindow과 비슷)
GetScrollInfo : 스크롤 바에 대한 SCROLLINFO 구조체 값을 얻는다.
GetScrollLimit : 스크롤 바의 한계 값을 얻는다.
SetScrollInfo : 스크롤 바에 대한 정보를 설정한다.
SetScrollPos : 스크롤 박스의 현재 위치를 설정하고, 설정이 되면, 새로운 위치를 나타내 도록 스크롤 바를 다시 그린다.
SetScrollRange : 지정된 스크롤 바에 대한 최소와 최대 위치 값을 지정한다.
ShowScrollBar : 스크롤 바를 보이거나 숨긴다.
EnableScrollBarCtrl : 스크롤 바의 컨트롤을 가능하게 하거나 불가능하도록 한다.
GetScrollBarCtrl : 스크롤 바 컨트롤을 반환한다.
RepositionBars : 클라이언트 영역에 컨트롤 바를 재위치 시킨다.
드래그-드롭 함수
DragAcceptFiles : 윈도우가 드래그된 파일을 받아들일 것인지를 결정한다.
Caret 관련 함수
CreateCaret : 시스템 캐럿으로 새로운 형태를 생성하고 캐럿의 소유권을 얻는다.
CreateSolidCaret : 시스템 캐럿으로 솔리드 캐럿을 생성하고 캐럿의 소유권을 얻는다.
CreateGrayCaret : 시스템 캐럿으로 회색 캐럿을 생성하고 캐럿의 소유권을 얻는다.
GetCaretPos : 특정 위치로 캐럿을 이동시킨다.
SetCaretPos : 화면에서 캐럿을 숨긴다.
HideCaret : 캐럿의 현재 위치에서 캐럿을 보이도록 한다.
ShowCaret : 캐럿의 현재 위치에서 캐럿을 보이도록 한다. 일단 캐럿이 화면에 나타나면 캐럿은 자동적으로 깜박거리게 된다.
대화상자 아이템 관련 함수
CheckDlgButton : 버튼 컨트롤 다음에 체크 표시를 하거나 버튼 컨트롤에서 체크 표시를 제거한다.
CheckRadioButton : 특정 라디오 버튼을 체크하고, 특정 버튼 그룹 내에 있는 모든 다른 라디오 버튼에서 체크 표시를 제거한다.
GetCheckedRadioButton : 버튼 그룹에서 현재 체크된 라디오 버튼의 ID를 반환한다.
DlgDirList : 파일이나 디렉토리에 대한 리스트로 리스트 박스를 채운다.
DlgDirListComboBox : 파일이나 디렉토리에 대한 리스트 콤보 박스를 채운다.
DlgDirSelect : 리스트 박스에서 현재 선택된 항목을 얻는다.
DlgDirSelectComboBox : 콤보 박스에서 현재 선택된 항목을 얻는다.
GetDlgItemInt : 지정된 대화상자에서 컨트롤이 사용하는 텍스트를 정수 값으로 변환한다.
GetDlgItemText : 컨트롤과 관련된 캡션이나 텍스트를 얻는다.
GetNextDlgGroupItem : 컨트롤 그룹 내의 다음 또는 이전 컨트롤을 찾는다.
GetNextDlgTabItem : 특정 컨트롤의 다음 또는 이전 컨트롤 중에서 WS_TABSTOP속성을 가 지는 컨트롤을 얻는다.
IsDlgButtonChecked : 버튼 컨트롤이 체크되었는지를 결정한다.
IsDialogItemMessage : 지정된 메시지가 모달리스(modeless)대화상자를 위한 것인지를 알아 내고, 만약에 그렇다면 그것을 처리한다.
SendDigItemMessage : 특정 컨트롤에 메시지를 보낸다.
SendDigItemInt : 지정된 대화상자에서 컨트롤이 사용하는 텍스트를 정수 값에 해당하는 문 자열로 설정한다.
SendDigItemText : 지정된 대화상자에서 컨트롤의 캡션이나 텍스트를 설정한다.
SubclassDlgItem : CWnd 컨트롤에 윈도우 컨트롤을 추가하고 CWnd의 메시지 맵을 통해 메시지를 배정하도록 한다.
ExecuteDlgInit : 해당 대화상자의 리소스로 초기화한다.
RunModalLoop : 모달 상태에 있는 윈도우의 메시지를 검색하고, 번역하거나, 처리한다.
ContinueModal : 윈도우 모달 상태를 지속시킨다.
EndModalLoop : 윈도우 모달 상태를 마친다.
메뉴 함수
GetaMenu : 특정 메뉴에 대한 포인터를 얻는다.
SetMenu : 현재의 메뉴를 지정된 메뉴로 설정한다.
DrawMenuBar : 메뉴 바를 다시 그린다.
GetSystemMenu : 애플리케이션이 컨트롤 메뉴를 복사하거사 수정하도록 참조하는 것을 허용한다.
HiliteMenuItem : 최상위 메뉴 아이템에서 선택된 부분을 하이라이트하거나 해제한다.
툴팁 함수
EnableToolTips : 툴팁 컨트롤을 사용가능하도록 한다.
CancelToolTips : 툴팁 컨트롤을 사용 불가능하도록 한다.
FilterToolTipMessage : 대화상자에서 컨트롤과 관련된 제목이나 텍스트를 얻는다.
OnToolHitTest : 포인터가 특정 도구의 사각형 경계(보통 툴바 영역)안에 있는지를 알아내 고 그 도구에 대한 정보를 얻는다.
타이머 관련 함수
SetTimer : 시작될 때 WM_TIMER 메시지를 보내는 시스템 타미머를 설치한다.
KillTimer : 타이머를 해제한다.
경고 함수
FlashWindow : 윈도우를 한 번 반짝이게 한다.
MessageBox : 애플리케이션이 제공하는 캡션과 메시지를가지고 있는 윈도우를 생성하고 화면에 출력한다.
윈도우 메시지 관련 함수
GetCurrentMessage : 윈도우가 현재 처리하고 있는 메시지의 포인터를 반환한다. OnMessage 류의 메시지 핸들러 멤버 함수 내부에서만 호출되어야한다.
Default : 디폴트 윈도우 프로시저를 호출하며, 이것은 애플리케이션에게 어떤 윈도우 메 시지도 디폴트 형태로 처리하도록 한다.
PreTranslateMessage : TranslateMessage와 DispatchMessage 윈도우 함수에서 처리되기 전 에 윈도우의 메시지를 필터링하기 위해서 CWinApp가 사용한다.
SendMessage : CWnd 객체에 메시지를 보내고 메시지를 처리할 때 까지 반환되지 않는다.
PostMessage : 애플리케이션 큐에 메시지를 위치시키고, 윈도우가 메시지를 처리할 때까 지 기다리지 않고 바로 반환한다.
SendNotifyMessage : 특정 메시지를 윈도우에 보내고 호출한 스래드가 윈도우를 생성했는 지에 따라서, 가능한 빨리 반환한다.
클립보드 관련 함수
ChangeClipboardChain : 클립보드 뷰어의 체인으로부터 CWnd를 제거한다.
SetClientboardViewer : 클립보드의 내용이 변하면 윈도우의 체인에 CWnd를 추가한다.
SetClipboard : 클립보드를 연다. 다른 애플리케이션이 윈도우의 CloseClipboard 함수를 호 출할 때까지 클립보드를 수정하지 않도록 한다.
GetClipboardOwner : 클립보드의 현재 소유자에 대한 포인터를 얻는다.
GetOpenClipboardWindow :현재 클립보드가 열려진 윈도우에 대한 포인터를 얻는다.
GetClipboardViewer : 클립보드 뷰어의 체인에서 처음 윈도우에 대한 포인터를 얻는다.
OLE 콘트롤
SetProperty : OLE 컨트롤 프로퍼티를 설정한다.
OnAmbientProperty : 환경 프로퍼티 값을 구현한다.
GetControlUnknown : 알려지지 않은 OLE 컨트롤에 대한 포인터를 얻는다.
GetProperty : OLE 컨트롤 프로퍼티를 얻는다.
InvokeaHelper : OLE 컨트롤의 메소드나 프로퍼티를 호출한다.
오버라이드 가능한 함수
WindowProc : CWnd에 대한 디폴트 프로시저를 제공한다. 디폴트로 메시지 맵을 통해서 메시지를 처리하게 된다.
DefWindowProc : 디폴트 윈도우 프로시저를 요구하며, 이것은 애플리케이션이 처리하지 않은 모든 윈도우 메시지에 대해서 디폴트 처리를 하도록 한다.
PostNcDestroy : 윈도우가 소멸된 후에 디폴트 OnNcDestroy 함수에 의해서 호출되는 가상 함수이다.
OnChildNotify : 컨트롤 통지 메시지를 처리하기 위한 기회를 컨트롤에게 주기 위해서 부 모 윈도우에 의해 호출된다.
DoDateExchange : 대화상자의 데이터 교환이나 유효화 검사를 위해서 UpdateData에 의해 서 호출된다.
초기화 메시지 핸들러
OnInitMenu : 메뉴가 활성화될 때 호출된다.
OnInitMenuPopup : 팝업 메뉴가 활성화될 때 호출된다.
시스템 메시지 핸들러
OnSysChar : 사용자가 컨트롤 문자로 변환하기 위해서 호출된다.
OnSysCommand : 사용자가 컨트롤 메뉴에서 항목을 선택하거나, 사용자가 최대화 또는 최 소화 버튼을 누를 때 호출된다.
OnSysDeadChar : 키 입력을 시스템의 Dead 문자((')등이 추가된 문자)로 변환할 때 호출 된다.
OnSysKeyDown : 사용자가 Alt 키를 누르고 다른 키를 누를 때 호출된다.
OnSysKeyUp : 사용자가 Alt 키를 누른 상태로 다른 키를 놓을 때 호출된다.
OnCompacting : 윈도우 시스템에서 시스템 메모리가 부족한 경우에 호출된다.
OnDevModeChange : 사용자가 디바이스의 모드 설정을 바꿀 때 최상위 윈도우가 호출된다.
OnFontChange : 폰트 리소스의 풀이 변할 때 호출된다.
OnPaletteChanged : 애플리케이션이 논리 팔레트를 적용할 것임을 다른 애플리케이션들에 게 알린다.
OnPaletteChanging : 윈도우가 논리 팔레트를 적용할 것임을 다른 애플리케이션들에게 알 린다.
OnSysColorChange : 시스템의 컬러 설정에 변화가 있을 때 최상위 윈도우가 호출한다.
OnWindowPosChanging : SetWindowPos나 다른 윈도우-관리 함수의 호출의 결과로 크기, 위치, 또는 Z-Order가 변하려 할 때 호출된다.
OnWindowPosChanged : SetWindowPos나 다른 윈도우-관리 함수의 호출의 결과로 크기, 위치, 또는 Z-Order가 변했을 때 호출된다.
OnDropFiles : 사용자가 드롭된 파일을 실행하기 위한 프로그램으로 등록된 윈도우 위에서 왼쪽 마우스 버튼을 놓을 때 호출된다.
OnSpoolerStatus : 프린트 관리자의 작업이 추가되거나 삭제될 때마다 프린트 관리자가 호출한다.
OnTimeChange : 시스템 시간 설정이 변경되면 최상위 윈도우가 호출한다.
OnWinIniChange : 윈도우의 초기화 파일인 WIN.INI가 변경되면 최상위 윈도우가 호출한다.
일반 메시지 핸들러
OnCommand : 사용자가 명령을 선택할 때 호출된다.
OnActivate : CWnd가 활성화되거나 비활성화될 때 호출된다.
OnActivateApp : 애플리케이션이 활성화되려고 하거나 비활성화되려고 하는 경우에 호출 된다.
OnCancelMode : CWnd가 마우스 캡쳐와 같은, 어떤 내부적인 모드를 취소하는 것을 허용 하기 위해서 호출된다.
OnChildActivate : MDI의 자식 윈도우에서 CWnd의 크기나 위치가 변경되거나 CWnd가 활 성화될 때 호출된다.
OnClose : CWnd이 종료되는 신호로서 호출된다.
OnCreat : 윈도우 생성의 일부분으로서 호출된다.
OnCtlColor : 컨트롤이 그려지려 할 때 CWnd가 컨트롤의 부모 윈도우이면 호출된다.
OnDestroy : CWnd가 소멸될 때 호출된다
OnEnable : CWnd가 사용 가능하거나 불가능할 때 호출된다.
OnEndSession : 세션이 종료될 때 호출된다.
OnEnterIdle : 모달 대화상자나 메뉴가 유휴(idle)상태에 들어갈 때 애플리케이션의 메인 윈 도우 프로시저에서 호출된다.
OnEraseBkgnd : 윈도우의 바탕이 지워져야 할 때 호출된다.
OnGetMinMaxInfo : 윈도우가 최대화된 위치나 크기, 또는 최소 또는 최대 트랙킹 크기를 알아야 할 때마다 호출된다.
OnIconEraseBkgnnd : CWnd가 최소화되거나 아이콘이 그려지기 전에 아이콘의 배경을 채 워야 하는 경우에 호출된다.
OnKillFocus : CWnd가 입력포커스를 잃기 전에 호출된다.
OnMenuChar : 사용자가 현재 메뉴에서 이미 정의된 코드와 대응이 안되는 문자를 눌렀을 때 호출된다.
OnMenuSelect : 사용자가 메뉴 아이템을 선택할 때 호출된다.
OnMove : CWnd의 위치가 변경된 후에 호출된다.
OnMoving : 사용자가 CWnd 객체를 이동하고 있음을 나타낸다.
OnDeviceChange : 디바이스나 컴퓨터의 하드웨어 설정이 변경되었음을 알려준다.
OnStyleChanged : ::SetWindowLong 윈도우 함수를 사용하여 하나나 혹은 그 이상의 윈도우 의 스타일이 변했음을 알려준다.
OnStyleChanging : ::SetWindowLong 윈도우 함수를 사용하여 하나나 혹은 그 이상의 윈도 우의 스타일이 변하려 하는 것을 알려준다.
OnPaint : 윈도우의 일부분을 다시 그리기 위해서 호출된다.
OnParentNotify : 자식 윈도우가 생성되거나 소멸될 때, 또는 커서가 자식 윈도우 위에 있 는 동안 마우스 버튼을 클릭하는 경우에 호출된다.
OnQueryDragIcon : 최소화된 CWnd가 사용자에 의해서 드래그될 때 호출된다.
OnQueryEndSession : 사용자가 윈도우의 세션 종료를 선택하는 경우에 호출된다.
OnQueryNewPalette : CWnd가 입력 포커스를 받게됨을 알려준다.
OnQueryOpen : CWnd가 아이콘이거나 사용자가 아이콘이 열려지지기를 요구할 때 호출된다.
OnSetFocus : CWnd가 입력 포커스를 얻은 후에 호출된다.
OnShowWindow : CWnd가 감추어지거나 혹은 보여질 때 호출된다.
OnSize : CWnd의 크기가 변한 후에 호출된다.
OnSizing : 사용자가 사각형의 크기를 다시 조정하고 있음을 나타낸다.
OnStyleChanged : 윈도우의 하나나 혹은 그 이상의 스타일이 변한 것을 나타낸다.
OnStyleChanging : 윈도우의 하나나 혹은 그 이상의 스타일이 변하려 하는 것을 나타낸다.
컨트롤 메시지 핸들러
OnCharToItem : LBS_WANTKEYBOARDINPUT 스타일을 가지고 있는 리스트 박스에 의해서 WM_CHAR에 대한 응답으로 호출된다.
OnCompareItem : 정렬이 가능한 owner draw 형태의 콤보 박스나 리스트 박스에서 새로운 아이템의 상대 위치를 지정하기 위해서 호출된다.
OnDeleteItem : owner draw 형태의 리스트 박스나 콤보 박스가 소멸되거나 아이템이 컨트 롤에서 제거될 때 호출된다.
OnDrawItem : owner draw 형태의 버튼 컨트롤, 콤보 박스 컨트롤, 리스트 박스 컨트롤이 다시 그려져야 할 때 호출된다.
OnGetDlgCode : 컨트롤이 화살표 키와 Tab 키에 대한 입력을 수행할 수 있도록 하기 위 해서 호출된다.
OnMeasureItem : 컨트롤이 생성될 때 owner draw 형태의 콤보 박스, 리스트 박스, 또는 메뉴 아이템을 요구한다. CWnd는 윈도우에게 컨트롤의 크기를 알려준다.
SendChildNotifyLastMsg : 부모 윈도우가 자식 윈도우에게 통보 메시지를 제공하여 자식 윈도우가 작업을 수행할 수 있도록 한다.
OnWndMsg : 윈도우의 메시지가 핸들링되고 있는 것을 나타낸다.
ReflectLastMsg : 자식 윈도우의 마지막 메시지를 나타낸다.
OnVKeyToItem : WM_KEYDOWN 메시지에 대하여 CWnd가 소유한 리스트 박스가 호출된다.
입력 메시지 핸들러
OnChar : 키 입력이 시스템 문자가 아닌 문자로 변환될 때 호출된다.
OnDeadChar : 키 입력이 시스템 문자가 아닌 Dead 문자로 변환될 때 호출된다.
OnHSroll : 사용자가 CWnd의 수평 스크롤 바를 클릭하는 경우에 호출된다.
OnKeyDown : 시스템 키가 아닌 키보드가 눌러 졌을 때 호출된다.
OnKeyUp : 시스템 키가 아닌 키보드가 놓을 때 호출된다.
OnLButtonDblClk : 사용자가 왼쪽 버튼을 더블 클릭 했을 때 호출된다.
OnLButtonDown : 사용자가 왼쪽 버튼을 눌렀을 때 호출된다.
OnLButtonUp : 사용자가 왼쪽 버튼을 놓을 때 호출된다.
OnMButtonDblClk : 사용자가 가운데 버튼을 더블 클릭 했을 때 호출된다.
OnMButtonDown : 사용자가 가운데 버튼을 눌렀을 때 호출된다.
OnMButtonUp : 사용자가 가운데 버튼을 놓을 때 호출된다.
OnMouseActivate : 커서가 비활성화된 윈도우에 있고 사용자가 마우스 버튼을 누를 때 호출된다.
OnMouseMove : 마우스커서가 움직일 때 호출된다.
OnRButtonDblClk : 사용자가 오른쪽 버튼을 더블 클릭 했을 때 호출된다.
OnRButtonDown : 사용자가 오른쪽 버튼을 눌렀을 때 호출된다.
OnRButtonUp : 사용자가 오른쪽 버튼을 놓을 때 호출된다.
OnSetCuror : 마우스 입력이 캡쳐되지 않고 마우스가 윈도우에서 커서를 움직이게 하려면 호출된다.
OnTimer : SetTimer에서 정해진 간격마다 호출된다.
OnVScroll : 사용자가 윈도우의 수직 스크롤 바를 클릭할 때 호출된다.
OnCaptureChanged : 마우스 캡쳐를 놓치는 윈도우 메시지를 보낸다.
비 클라이언트 영역 메시지 핸들러
OnNcActivate : 비 클라이언트 영역이 활성화된 상태인지 비활성화된 상태인지를 가리키 기 위해서 변환이 필요한 경우 호출된다.
OnNcCalcSize : 비 클라이언트 영역의 크기와 위치가 계산될 때 호출된다.
OnNcCreate : 비 클라이언트 영역이 생성될 때 OnCreate 보다 먼저 호출된다.
OnNcDestroy : 비 클라이언트 영역이 소멸될 때 호출된다.
OnNcHitTest : CWnd가 커서를 포함하고 SetCapture로 마우스 입력을 캡쳐할 때 마우스가 움직일 때 마다 윈도우에 의해서 호출된다.
OnNcLButtonDblClk : 커서가 CWnd의 비 클라이언트 영역 내에 있는 동안 사용자가 왼쪽 마우스 버튼을 더블 클릭 했을 때 호출된다.
OnNcLButtonDown : 커서가 CWnd의 비 클라이언트 영역 내에 있는 동안 사용자가 왼쪽 마우스 버튼을 눌렀을 때 호출된다.
OnNcLButtonUp : 커서가 CWnd의 비 클라이언트 영역 내에 있는 동안 사용자가 왼쪽 마우스 버튼을 놓을 때 호출된다.
OnNcMButtonDblClk : 커서가 CWnd의 비 클라이언트 영역 내에 있는 동안 사용자가 가운데 마우스 버튼을 더블 클릭 했을 때 호출된다.
OnNcMButtonDown : 커서가 CWnd의 비 클라이언트 영역 내에 있는 동안 사용자가 가운데 마우스 버튼을 눌렀을 때 호출된다.
OnNcMButtonUp : 커서가 CWnd의 비 클라이언트 영역 내에 있는 동안 사용자가 가운데 마우스 버튼을 놓을 때 호출된다.
OnNcMouseMove : 커서가 CWnd의 비 클라이언트 영역 내에서 이동할 때 호출된다.
OnNcPaint : 비클라이언트 영역이 다시 그려지기를 요구할 때 호출된다.
OnNcRButtonDblClk : 커서가 CWnd의 비 클라이언트 영역 내에 있는 동안 사용자가 오른쪽 마우스 버튼을 더블 클릭 했을 때 호출된다.
OnNcRButtonDown : 커서가 CWnd의 비 클라이언트 영역 내에 있는 동안 사용자가 오른쪽 마우스 버튼을 눌렀을 때 호출된다.
OnNcRButtonUp : 커서가 CWnd의 비 클라이언트 영역 내에 있는 동안 사용자가 오른쪽 마 우스 버튼을 놓을 때 호출된다.
MDI 메시지 핸들러
OnMDIActivate : MDI child 윈도우가 활성화되거나 비활성화될 때 호출된다.
클립보드 메시지 핸들러
OnAskCbFormatName : 클립보드의 소유자가 클립보드의 내용을 나타낼 때 클립보드 뷰어 애플리케이션에 의해서 호출된다.
OnChangeCbChain : 특정 윈도우가 체인에서 제거되었는지를 통지한다.
OnDestroyClipboard : 클립보드가 윈도우 EmptyClipboard 함수의 호출에 의해서 비워지는 경우에 호출된다.
OnDrawClipboard : 문장이 변경되었을 때 호출된다.
OnHScrollClipboard : 클립보드의 소유주가 클립보드의 이미지를 스크롤해야 하고 적절한 섹션을 무효화할 때 호출되며, 스크롤 바의 값들을 갱신한다.
OnPaintClipboard : 클립보드 뷰어의 클라이언트 영역이 다시 그려져야 할 때 호출된다.
OnRenderAllForamts : 소유주 애플리케이션이 파괴되고 있고 모든 포맷들을 다시 만들 필 요가 있을 때 호출된다.
OnSizeClipboard : 클립보드 뷰어 윈도우의 클라이언트 영역의 크기가 변하는 경우에 호출 된다.
OnVSrollClipboard : 소유주가 크립보드 이미지 스크롤해야 하는 경우에 호출되며, 적절한 섹션을 무효화하고, 스크롤바 값들을 갱신한다.
메뉴 루프 통지
OnEnterMenuLoop : 메뉴의 모달 루프가 수행되는 경우에 호출된다.
OnExitMenuLoop : 메뉴의 모달 루프가 마치는 경우에 호출된다.
<출처: http://blog.daum.net/badog/4458012>
LNK4070
Posted on 2009. 7. 3. 18:15
Filed Under Visual C++
/OUT:filename directive in .EXP differs from output filename 'filename'; ignoring directive
- 원인 : Link 탭에 설정한 output 이름과 .def 파일내의 output 이름이 다르게 설정
- 해결 : .exp 파일을 만들 때 NAME 또는 LIBRARY 문에 지정한 filename이 기본적으로 선택되었거나 /OUT 옵션으로 지정한 출력 filename과 다릅니다. 개발 환경에서 출력 파일의 이름을 변경했는데 프로젝트의 def 파일이 업데이트되지 않은 경우 이 경고가 발생합니다. 이 경고를 해결하려면 .def 파일을 수동으로 업데이트하십시오. 결과로 생성된 DLL을 사용하는 클라이언트 프로그램에 문제가 발생할 수 있습니다.
- .def 파일의 읽기속성을 해제한 후 수동 수정
비트맵 마스크 원리 [링크]
Posted on 2009. 7. 1. 15:28
Filed Under Visual C++
[VS2008 IDE] 파일(File)과 필터(Filter)
Posted on 2009. 6. 29. 13:09
Filed Under Visual C++
전환방법은 솔루션 탐색기의 맨 위의 툴바중 [모든 파일 보기]버튼의 토글..
파일모드일때는 프로젝트 > 추가 > '새 폴더'
필터모드일때는 프로젝트 > 추가 > '새 필터'
메뉴가 활성화된다.
파일모드 -> 파일이 물리적으로 프로젝트 폴더 아래에 추가된다. 그외 폴더의 파일은 '참조'식으로 추가된다(아이콘이 다른 모양임)
필터모드 -> 맘대로 추상적인 구조를 만들수 있다. 물리적으로 프로젝트 폴더 이외에 존재하는 파일이 있을 수 있다.
개인적으로 필터모드가 편하다.
왜냐? VC6부터 길들여져왔으니까..
Visual Studio 컴파일러 버젼(_MFC_VER, _MSC_VER)
Posted on 2009. 6. 26. 18:28
Filed Under Visual C++
Visual Studio 컴파일러 버젼(_MFC_VER, _MSC_VER)
C++버전별 정보
4.0 1000
5.0 1100
6.0 1200
7.1(2003) 1310
8.0(2005) 1400
9.0(2008) 1500
버전값으로 전처리기를 통해 컴파일 오류 예방
#if defined(_MSC_VER) && _MSC_VER < 1200
....
#else
.....
#endif
<정보출처: http://blog.naver.com/kiti1782/50046307614 >
[VS2003이상] 멀티코어 CPU를 이용한 빌드 속도 향상 옵션 설정법 [펌]
Posted on 2009. 6. 23. 15:15
Filed Under Visual C++
Visual Studio 듀얼코어, 쿼드코어를 활용한 프로그래밍 컴파일(Complie) 속도 향상방법을 소개해드립니다.
기본옵션으로 Visual Studio 2005, 2008 에서는 컴파일 과정에서는 멀티코어 CPU 를 지원하지 않습니다.
따라서 듀얼 코어에서 컴파일을 하면 50%의 CPU 만을 사용하여 멀티 코어 CPU를 사용하는 장점이 없는데 다음과 같은 과정으로 멀티 코어 시피유를 최대한 활용할 수 있습니다.
코드의 양이 크면 클수록 그 효과는 크게 작용됩니다.
<출처: http://a.tk.co.kr/522 >
/MP 옵션은 /Gm 옵션과 충돌을 합니다. 보통 디버그 모드에서는 /Gm 옵션이 활성화 되어 있는데 이 상태에서 /MP 옵션을 설정하면 먹히지 않습니다.
그래서 디버그 모드에서는 그림 C에 나와 있는 ‘최소 다시 빌드 가능’을 ‘아니오’로 해야합니다.
[출처] [VS] /MP 옵션을 사용하여 컴파일 빨리하기|작성자 흥배