본문 바로가기

프로그래밍/공부관련

윈도우 프로시져를 클래스 멤버함수로 만들기 어떤 프로세스에 윈도우 프로시져를 여러개 만들어야 할 때가 있다. (예를 들어, DLL로 기존 프로세스에 빌붙을 경우라든가) 그리고 그 특정 윈도우에 외부에서 어떤 명령을 보낼 경우에 해당 윈도우 프로시져를 사용할 경우가 있다. 하지만 일반적으로 윈도우 프로시져는 static 이어야 하기 때문에 어떤 클래스의 멤버함수로 두면 에러가 뻑 난다. 안되는 이유는 클래스의 멤버함수들은 보이지 않게 매개변수를 하나 더 추가적으로 전달받게 되는데, 바로 그 매개변수가 this 포인터이다. 하지만 윈도우 프로시져 원형이 LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); 이렇게 되기 때문에 this 포인터가 눈에 안보이게 선언됨으.. 더보기
STRICT 와 WIN32_LEAN_AND_MEAN 의 정의 #define WIN32_LEAN_AND_MEAN 컴파일 속도를 위한 조건 컴파일 매크. 이것이 정의되어 있으면 windows.h에서 조건 컴파일로 commdlg.h파일 외에 여러가지 헤더 파일을 인클루드 안하게 되어 있다. 인클루드 파일이 적으면 적을수록 컴파일 속도가 빨라지기 때문이다. #define STRICT 윈도우즈에서 컴파일러가 타입 체킹을 강화하기 위해서 사용하는 매크로. 이것이 정의되어 있으면 데이터유형이 올바른지 보다 더 엄격하게 조사하게 된다. 예를들어 인자로 HPEN 이 들어가야 하는데,HBITMAP이 들어간다든지 하는 경우에 에러가 발생하는것을 미리 알려주기 위함이다. 그냥 에러를 미연에 방지하기 위한 방어책이라고 생각하면 된다 더보기
* code sampler * code sampler Initialization Demonstrates how to initialize Direct3D. This sample is by far the simplest of all Direct3D samples on this page. If you know nothing about Direct3D, you probably need to start here. Check out the OpenGL source code page for the OpenGL equivalent of this sample. Relevant C++ Keywords: Direct3DCreate9, GetAdapterDisplayMode, CheckDeviceFormat, GetDeviceCaps, CreateDe.. 더보기
포인터 문제 가지고놀기 c를 배우자 카페에서 사람들이 문제를 내고 댓글로 소스올려서 맞추고를 한다. 문제는 int형 변수2개 10,20 초기화 -> 포인터변수 2개만들어서 위의 int형 2개를 각각 가리키고 -> 더블포인터 변수 2개만들어서 포인터2개가 각각 가리키게 이것을 만족후 더블포인터를 이용하여 두변수의 값을 서로바꾸어라.. 함수사용 제한없음 그리하여 많은 댓글중 다른방법은 없을까?하여 레퍼런스를 한번 가지고놀기를 해봤다. #include #include using namespace std; void SwapInt(int& ref1, int& ref2) { int Set = 0; int& temp = Set; temp = ref1; ref1 = ref2; ref2 = temp; } int main(int argc, ch.. 더보기
프로그래밍 디자인패턴에 대해 알기쉽게 정리된 네이버지식인에서 발췌.. 프로그래밍에서도 발생하는 '비슷'한 문제상황들을 추상화해서 각각의 비슷한 문제상황들에 등장할법한 객체들을 설정하고 그 객체들끼리의 관계를 정의한게 바로 디자인 패턴입니다. ^^ 그러니까 하나의 디자인 패턴은 이 패턴이 사용되는 문제상황이 비슷비슷합니다. 상황이 비슷하니까 접근 방법, 해결방법도 비슷합니다..^^ 알고리즘도 비슷한 프로그래밍 상황에서 사용되는 방법이니까 추상화, 일반화라는 점에서 어느정도 디자인 패턴과 성격이 비슷하지만(복사-붙여넣기-약간수정), 알고리즘은 '효율성'에 관심이 있습니다. 현재의 시스템 상황에서 우리가 선택할 수 있는 가장 효율적(빨리 계산, 공간을 덜차지)인 문제해결 방법이 무엇인가에 관심이 있을 뿐, 객체간의 관계는 알고리즘에서 고려대상이 아닙니다. ^^ 중요한 것은 디자.. 더보기
깜박했었던, 양면그리기.. 스카이박스적용 및 항아리내부그리기 및 집안내부그리기등등.. 가끔 다른거만지고있다보면 까먹게된다. 렌더스테이트에서 m_pD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); 그리기 m_pD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW); 이걸 양면비추는 빌보드에만 사용했었는데, 메쉬에도 적용이되는구나.. 더보기
D3D에서 메시지박스가 가려졌을때 처리 지속적으로 그려서인지 메시지박스가 안보인다. MessageBox(GetForegroundWindow(), _T("..."), _T("@_@"), MB_OK); GetForegroundWindow() 해주시면 됩니다. gpgstudy에서 검색중 알아왔다. 더보기
MFC수업 텀프로젝트 파일저장 더보기
SetRenderState 간단정리 1. SetRenderState 사전적 의미 HRESULT SetRenderState( D3DRENDERSTATETYPE state, //--1. DWORD Value //--2. ); Parameter 1. state [in] D3DRENDERSTATETYPE 목록중 임의의 멤버 지정 2. DWORD Value[in] state에 의한 결정 반환값 성공시 D3D_OK를 반환 #define D3D_OK S_OK #define S_OK ((HRESULT)0x00000000L) 2. 파라미터 D3DRENDERSTATETYPE - D3DRS_ZENABLE z버퍼를 유효하게 하려면 D3DZB_TRUE w버퍼를 유효하게 하려면 D3DZB_USEW 깊이 버퍼링을 무효 하려면 D3DZB_FALSE D3DPRESENT.. 더보기
HWND 윈도우 핸들 핸들(handle)이란 구체적인 어떤 대상에 붙여진 번호이며 문법적으로는 32비트의 정수값이다. 도스 프로그래밍에서는 거의 유일하게 파일 핸들만이 사용되었으며 그래서 도스에서 핸들은 곧 파일 핸들을 의미하는 경우가 많았다. 그러나 윈도우즈에서는 여러 가지 종류의 핸들이 사용되고 있다. 만들어진 윈도우에는 윈도우 핸들(hWnd)을 붙여 윈도우를 번호로 관리하며 아직은 잘 모르겠지만 DC에 대해서도 핸들을 사용하고 논리적 펜, 브러시에도 핸들을 붙여 관리한다. 심지어 메모리를 할당할 때도 할당한 메모리의 번지를 취급하기보다는 메모리에 번호를 붙인 메모리 핸들을 사용한다. 왜 이렇게 핸들을 자주 사용하는가 하면 대상끼리의 구분을 위해서는 문자열보다 정수를 사용하는 것이 훨씬 더 속도가 빠르기 때문이다. 윈도우.. 더보기