Graphics
-
[5] - Window FrameworkGraphics 2021. 7. 10. 14:05
매크로를 정의한 Header File을 추가합니다. 이유는 간단한데 Header File을 Include할 때, 잘 쓰지도 않을 기능들까지 한꺼번에 포함되는 것을 가능한 막을 생각이기 때문입니다. 멋지게 포장하면 몇 가지 기능을 Disable하겠다는 말입니다. 이제부터는 Encapsluation을 진행할 것입니다. 먼저 Design Pattern 중 Singleton을 이용할 예정입니다. Singleton은 잘 사용하지 않는다고 배웠으나 우리의 경우엔 Window가 유일하며 모든 Message를 처리하기 때문에 적합한 선택이라고 할 수 있습니다. Window에 대한 Handle이 Window Class에 포함되어 있으며 유일합니다. static const char* GetName()과 static HIN..
-
[4] - Mouse and CharGraphics 2021. 7. 3. 15:08
WM_KEYDOWN message (Winuser.h) - Win32 apps | Microsoft Docs WM_KEYDOWN에 대해서 자사히 설명되어 있습니다. 특히 Mouse Input의 LPARAM의 경우에는 장치의 좌표가 16-bits 두 개로 이어진 이진정보로 나타나기 때문에 Bit Shift나 Masking을 활용할 수도 있습니다. 물론 Mouse의 정보를 추출해주는 함수들이 미리 마련되어 있습니다. WM_CHAR와 WM_KEYDOWN의 차이? WM_KEYDOWN과 WM_CHAR이 함께 Message Queue에 들어갔다는 사실을 확인할 수 있습니다. 이에 반해 F1(Function Key)를 누른다면 다음과 같은 결과를 얻을 수 있습니다. WM_CHAR Message를 확인할 수 없습니다...
-
[3] - Window MessagesGraphics 2021. 7. 3. 01:46
List Of Windows Messages - WineHQ Wiki 많은 Windows Messages가 있습니다. 전부 있다고는 할 수 없으나 대부분 있습니다. MSDN보다 낫습니다. List Of Windows Messages - WineHQ Wiki "What is the window message numbered x?" There is no list mapping numbers to symbolic message names in MSDN. The table below provides the mappings. Hex Decimal Symbolic 0000 0 WM_NULL 0001 1 WM_CREATE 0002 2 WM_DESTROY 0003 3 WM_MOVE 0005 5 WM_SIZE 0006 ..
-
[2] - Message PumpGraphics 2021. 7. 3. 00:35
Event-Driven Programming MS-DOS같은 어플리케이션과 달리 Window-based 어플리케이션은 Event-Driven입니다. 가령, Text editor들은 아무런 input이 없으면 가만히 대기하고 입력이 발생하면 그제야 뭔가 행동을 취합니다. 즉, 아무런 행동을 하지 않으면 Sleep상태가 되는데 심지어 cursor가 blink하는 것조차도 Timer Event입니다. 이 Event-Driven Application은 어떤 Input을 위해서 함수를 호출하지 않습니다. 대신에 시스템이 어떤 Input을 넣어줄 때까지 가만히 대기합니다. 그러면 시스템은 어떤 Window에게 입력이 발생했다는 사실을 어떻게 알려주느냐, 바로 각각의 window가 갖고 있는 Window Proced..
-
[1] - Creating a windowGraphics 2021. 7. 2. 21:36
Creating a window 간단한 DirectX11을 이용한 창을 만듭니다. console이 아닌 window로 출력하기 위해서는 Visual Studio Community 2019의 Solution Property의 Linker->System tab에서 subsystem을 console이 아닌 Windows로 설정해줍니다. header file로 가 반드시 필요합니다. Console프로그램의 진입점이 int main(void) 인 것 처럼 Window로 출력하는 프로그램의 경우엔 CALLBACK WinMain이 Entry point가 됩니다. 가장 먼저 해야할 일은 Window Class를 하나 Register하고 Window Instance를 만드는 것입니다. Window Class and As..
-
[ Anything ] C++ - 1Graphics 2021. 6. 21. 21:44
Prefer const, enum, inline to define このルールはpreprocessorよりcompilerを使ったほうがよいってことです。理由は簡単です。defineで宣言された場合はC++の文法として扱わなくなります。Preprocessorは#Defineを使って宣言されたVariableをCompilerから隠します。それでそのVariableはSymbolTableへ入ることができなくなり、Compiling Timeで発生したエラーが#Defineと関係があった場合はDebuggingするときSymbolTableを参照することができなくなってDebuggingが難しくなってしまいます。特に別の Header FileにあるMacroの場合はエラーが発生したときに一体どこからエラーが発生したのか判断が難しくなります。 打開策はMacroを使うよりCon..