Windows Programming
-
[Windows Programming] Windows์์์ ์ ๋์ฝ๋(Unicode)Windows Programming 2020. 6. 6. 22:36
- ๋๋ฅผ ์๊ทนํ๋ ์๋์ฐ์ฆ ์์คํ ํ๋ก๊ทธ๋๋ฐ ์ฑ ์ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์์ต๋๋ค. โ ๋ฌธ์์ ์ ์ข ๋ฅ์ ํน์ฑ SBCS ( Single Byte Character Set) : ๋ฌธ์๋ฅผ ํํํ๋๋ฐ 1byte ์ฌ์ฉ ( ์์คํค ์ฝ๋ ) MBCS( Multi Byte Character Set) : ํ๊ธ 2byte, ์์ด 1byte ์ฌ์ฉ WBCS( Wide Byte Character Set) : ๋ฌธ์๋ฅผ ํํํ๋๋ฐ 2byte ์ฌ์ฉ ( ์ ๋์ฝ๋) โ WBCS ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋๋ฐ WBCS๋ฅผ ์ํ ๋ ๊ฐ์ง๋ฅผ ์ ๊ฒฝ์จ์ผ ํ๋ค char ๋์ wchar_t ์ฌ์ฉ ex) wchar_t str[] = L"ABC" "ABC" ๋์ L"ABC ์ฌ์ฉ ๋ฐฐ์ด์ ํฌ๊ธฐ : 8 ( NULL ๋ฌธ์ ํฌํจ ) ๋ฌธ์์ด ๊ธธ์ด : 7 ( ํ๊ธ์ 2 ์ฐจ์ง ) โ MBCS..
-
[Windows Programming] Stored Program Concept, ํ๋ก๊ทธ๋จ ์คํ๊ณผ์ Windows Programming 2020. 6. 6. 22:17
- ๋๋ฅผ ์๊ทนํ๋ ์๋์ฐ์ฆ ์์คํ ํ๋ก๊ทธ๋๋ฐ ์ฑ ์ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์์ต๋๋ค. โ ํ๋ก๊ทธ๋จ ์คํ๊ณผ์ ์ ์ฒ๋ฆฌ๊ธฐ - ์ปดํ์ผ๋ฌ - ์ด์ ๋ธ๋ฌ - ๊ฒฐํฉ 1. ์ ์ฒ๋ฆฌ๊ธฐ์ ์ํ ์นํ ์์ - #์ผ๋ก ์์ํ๋ ์ง์์ 2. ์ปดํ์ผ๋ฌ์ ์ํ ๋ฒ์ญ - CPU์ ๋ช ๋ น์ด๋ก ๋ฒ์ญ - ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ค๋ธ์ ํธ ์ฝ๋(.obj) ๋ก์ ๋ณํ - ์ข์ ์๋ฏธ๋ก ๊ณ ์์ค์ธ์ด์์ ์ ์์ค์ธ์ด(์ด์ ๋ธ๋ฆฌ์ด, ๊ธฐ๊ณ์ด)๋ก์ ๋ณํ 3. ์ด์ ๋ธ๋ฌ์ ์ํ ๋ฐ์ด๋๋ฆฌ ์ฝ๋ ์์ฑ - CPU์ ๋ช ๋ น์ด๋ฅผ ๋ฐ์ด๋๋ฆฌ ์ฝ๋๋ก ๋ฒ์ญ ex) ADD -> 0011 4. ๋ง์ปค์ ์ํ ์ฐ๊ฒฐ๊ณผ ๊ฒฐํฉ - ์ค๋ธ์ ํธ ์ฝ๋(.obj)๋ฅผ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฐํฉํ์ฌ ์คํํ์ผ(.exe) ์์ฑ โป ํท๊ฐ๋ฆฌ๋ ์ฉ์ด ์ ๋ฆฌ ( ์ด์ ๋ธ๋ฆฌ์ด vs ์ด์ ๋ธ๋ฌ ) ์ด์ ๋ธ๋ฆฌ์ด : ๊ธฐ๊ณ์ด์ ์ผ๋์ผ ๋์๋๋ ์ปด..
-
[Windows Programming] ์ปดํจํฐ ํ๋์จ์ด ๊ตฌ์ฑ, ํ๋ก๊ทธ๋จ ์คํ ๋ฐฉ์Windows Programming 2020. 6. 4. 01:28
- ๋๋ฅผ ์๊ทนํ๋ ์๋์ฐ์ฆ ์์คํ ํ๋ก๊ทธ๋๋ฐ ์ฑ ์ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์์ต๋๋ค. โ ์ปดํจํฐ ํ๋์จ์ด ๊ตฌ์ฑ 1. CPU ( Central Processing Unit ) - ์ค์ ์ฒ๋ฆฌ ์ฅ์น - ์ฐ์ฐ์ด ์ด๋ค์ง๋ ์ฅ์น๋ฅผ ๋๊ฒ ์ด์ผ๊ธฐํ๋ฉด CPU๊ฐ ๋ด๋น 2. ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ( Main Memory ) - ๋จ(RAM) - ํ๋ก๊ทธ๋จ ์คํ ๋ฐฉ์ ( ์ฐ์ฐ์ ํ๋ก๊ทธ๋จ ์คํ ๋ฐฉ์์ ์ผ๋ถ๋ถ ) 3. ์ ์ถ๋ ฅ ๋ฒ์ค( Input/Output Bus ) - ๋ฐ์ดํฐ ์ก.์์ ์ด ์ด๋ค์ง๋ ๊ณณ 4. ALU - ์ค์ ์ ์ธ ์ฐ์ฐ์ด ์ด๋ค์ง๋ ์ฅ์น 5. Control Unit - ์ด๋ค ์คํ์ ํ ๊ฒ์ธ์ง ๋ช ๋ น์ด ํด์ - ALU์๊ฒ ์ฐ์ฐ์ ์๋ ค์ฃผ๋ ์ฅ์น โ ํ๋ก๊ทธ๋จ ์คํ ๋ฐฉ์ ์์ ) ๋ง์ ์ฐ์ฐ์ ์คํ (A.exe) 1. A.exe(์คํ ํ์ผ) ์คํ - Ha..
-
[Windows Programming] ์ ๋์ฝ๋์ ANSIWindows Programming 2020. 1. 19. 15:35
์ด ๊ธ์ ์ ํ๋ฆฌ ๋ฆฌ์ฒ์ "Windows via C/C++"์ ํ ๋๋ก ์์ฑํ์์ต๋๋ค C ์ธ์ด ๊ฐ๋ฐ์๋ผ๋ฉด C ์ด์ด์ char ์๋ฃํ์ด 8๋นํธ์ ANSI ๋ฌธ์๋ฅผ ํํํ๊ธฐ ์ํด ์กด์ฌํ๋ค๋ ๊ฒ์ ์๊ณ ์๋ค. ๋ง์ดํฌ๋ก์ํํธ์ C/C++ ์ปดํ์ผ๋ฌ๋ 16๋นํธ ์ ๋์ฝ๋(UTF-16)์ ํํํ๊ธฐ ์ํ wchar_t ์๋ฃํ์ ๋ด์ฅ ์๋ฃํ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์๋ค. ANSI ๋ฌธ์์ ์ ๋์ฝ๋ ๋ฌธ์ ANSI // 8๋นํธ ๋ฌธ์ char c = 'A' // 99๊ฐ์ 8๋นํธ ๋ฌธ์์ 8๋นํธ ๋ฌธ์์ด ์ข ๊ฒฐ ๋ฌธ์(0) char szBuffer[100] = "A String" ์ ๋์ฝ๋ // 16๋นํธ ๋ฌธ์ wchar_t c = L'A' // 99๊ฐ์ 16๋นํธ ๋ฌธ์์ 16๋นํธ ๋ฌธ์์ด ์ข ๊ฒฐ ๋ฌธ์(0) Wch..
-
[Windows Programming] ์ธ์ฝ๋ฉ์ด๋?ANSI, ASCII, ์ ๋์ฝ๋, ๋ฉํฐ๋ฐ์ดํธWindows Programming 2020. 1. 19. 14:55
์ด ๊ธ์ ์ ํ๋ฆฌ ๋ฆฌ์ฒ์ "Windows via C/C++"์ ํ ๋๋ก ์์ฑํ์์ต๋๋ค ๋ง์ดํฌ๋ก์ํํธ ์๋์ฐ๊ฐ ์ ์ ๋ ๋ฒ์ฉํ๋จ์ ๋ฐ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๋ค์๊ฒ ๋ค์ํ ๊ตญ์ ํ ์์ฅ์ ๋ํ ์ค์์ฑ์ด ์ฆ๋ํ๊ณ ์๋ค. ์ง์ญํ๋ฅผ ์ํด ์ ๋์ฝ๋๋ฅผ ์ฌ์ฉํ๊ณ ์๋๋ฐ ์ ๋์ฝ๋๊ฐ ๋ฌด์์ธ์ง, ๋ฉํฐ๋ฐ์ดํธ, ANSI ๋ฑ ๋ค์ํ ์ธ์ฝ๋ฉ ๋ฐฉ์์ ๋ํด ์๊ฐํ๋ ค๊ณ ํ๋ค. ์ธ์ฝ๋ฉ ์ธ์ฝ๋ฉ์ด๋ ์ฌ๋์ด ์๊ณ ์๋ ์ธ์ด๋ฅผ ์ปดํจํฐ๊ฐ ์ฌ์ฉํ๋ 0๊ณผ 1 ๊ฐ์ ์ด์ง ์ฝ๋๋ก ๋ณํํ๋ ๊ณผ์ ์ ์ธ์ฝ๋ฉ์ด๋ผ๊ณ ํ๋ค. ASCII ์์ด์ ํ์์ ์์ด๋ฌธ์๋ฅผ ์ธ์ฝ๋ฉํ๋ ๋ฐฉ์์ ๋งํ๋ค. ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ผ๋ฉด ๋ง์ด ๋ค์ด๋ดค์๋งํ ์ธ์ฝ๋ฉ์ด๊ณ ๋ฌธ์์ด์ ํฌ๊ธฐ ๋น๊ต๋ฅผ ์ฌ์ฉํ ๋๋ ASCII ์ฝ๋๋ฅผ ๋ณด๊ณ ๋น๊ตํ๋ค. ASCII(7bit) : 128 ๊ฐ์ ๋ฌธ์๋ฅผ ํํํ๋ค. ANSI ๋ง์ดํฌ..
-
[Windows Programming] ์๋ฌ ํธ๋ค๋ง(Error Handling) [2]Windows Programming 2020. 1. 14. 23:19
์ด ๊ธ์ "์ ํ๋ฆฌ ๋ฆฌ์ฒ์ Windows via C/C++" ํ ๋๋ก ์์ฑํ์ต๋๋ค ์๋ฌ ํธ๋ค๋ง ์์ ์๋์ฐ ํจ์๊ฐ ํธ์ถ์์๊ฒ ์ด๋ป๊ฒ ์๋ฌ๋ฅผ ๋ฐํํ๋์ง ๋ณด์๋ค. ๋ง์ดํฌ๋ก์ํํธ๋ ์ด๋ฌํ ๋ฉ์ปค๋์ฆ์ ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐํ๋ ํจ์์ ๋ํด์๋ ์ ์ฉํ ์ ์๋๋ก ํ๋ค. ๊ฐ๋ฐํ๋ ํจ์๋ ํ๋ ํน์ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ์ํด ์คํจํ ์ ์์ ๊ฒ์ด๋ฉฐ, ์คํจ์ ์์ธ์ ํธ์ถ์์๊ฒ ๋ฐํํ๋๋ก ์์ฑ๋์ด์ผ ํ๋ค. ์คํจ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ์คํจ์ ์ด๋ฅ๋ฅผ ์ค๋ ๋์ ๋ง์ง๋ง ์๋ฌ ์ฝ๋๋ก ์ค์ ํ๊ณ FALSE, INVALID_HANDLE_VALUE, NULL ๊ฐ์ ๊ฐ์ด๋ ์ ์ ํ ๊ฐ์ ๋ฐํํ๋๋ก ์์ฑ VOID SetLastError ์ค๋ ๋์ ๋ง์ง๋ง ์๋ฌ ์ฝ๋๋ฅผ ์ค์ ํ๊ธฐ ์ํ ํจ์ DWORD dwErrCode : ์๋ฌ ์ฝ๋ ์๋ฌ ์ฝ๋๋ 32๋นํธ ๊ฐ์ด๋ค. ์๋ฌ์ ..
-
[Windows Programming] ์๋ฌ ํธ๋ค๋ง(Error handling) [1]Windows Programming 2020. 1. 13. 23:01
์ด ๊ธ์ ์ ํ๋ฆฌ ๋ฆฌ์ฒ์ "Windows via C/C++"์ ํ ๋๋ก ์์ฑํ์ต๋๋ค. ์๋ฌ ํธ๋ค๋ง ์๋์ฐ ํจ์๋ฅผ ํธ์ถํ๋ฉด ํธ์ถ๋ ํจ์๋ ๋จผ์ ์ ๋ฌ๋ ์ธ์์ ์ ํจ์ฑ์ ํ์ธํ๊ณ ํจ์์ ๊ธฐ๋ฅ ์ํํ๋ค. ๋ง์ผ ์ ๋ฌ๋ ์ธ์๊ฐ ์ ํจํ์ง ์๊ฑฐ๋ ๋ค๋ฅธ ์ด์ ๋ก ์ธํด ํด๋น ๊ธฐ๋ฅ์ ์ํํ ์ ์์ผ๋ฉด ํจ์๋ ์คํจ๋ฅผ ๋ฐํํ๋ค. ์๋์ฐ ํจ์๋ ์คํจํ๋ฉด ํจ์ ์คํจ ์ฌ๋ถ๋ฅผ ์์๋ด๋ ๊ณผ์ ํ์ํ๋ค. ๋ง์ดํฌ๋ก์ํํธ๋ ๋ชจ๋ ์๋ฌ์ฝ๋๋ฅผ 32๋นํธ ์ซ์๋ก ์ ์ํด ๋์๋ค. [2]ํธ์์ ์ค๋ช ์๋์ฐ ํจ์๊ฐ ์คํจํ๋ฉด ๋ด๋ถ์ ์ผ๋ก ํจ์๋ฅผ ํธ์ถํ ์ค๋ ๋์ ์ค๋ ๋ ์ง์ญ ์ ์ฅ์์ ์๋ฌ ์ฝ๋ ์ ์ฅ => ์ฌ๋ฌ ์ค๋ ๋ ๋์ ์ํํ๋๋ผ๋ ์ํธ๊ฐ ์ํฅ์ ๋ฏธ์น์ง ์๊ณ ์ค๋ ๋๋ณ ์๋ฌ ์ฝ๋ ์ ์ง DWORD GetLastError ์ด๋ค ์๋ฌ๊ฐ ๋ฐ์ํ๋์ง ํ์ธํ๊ธฐ ์ํด ์ฌ์ฉ ์ต..
-
[Windows Programming] ์๋์ฐ ํ๋ก๊ทธ๋๋ฐ Data typesWindows Programming 2020. 1. 13. 21:51
์ด ๊ธ์ "์ ํ๋ฆฌ ๋ฆฌ์ฒ์ Windows via C/C++"๋ฅผ ํ ๋๋ก ์์ฑํ์ต๋๋ค. Windows Programming Data types LPVOID : point to a void object โ ์ปดํ์ผ ์๋ฌ ์์ด ๋ค๋ฅธ ์ฌ๋ฌ๊ฐ์ง ํ์ ๊ฐ์ฒด๋ฅผ point ํ๊ธฐ ์ํด ์ฌ์ฉ โ (Void*) BYTE : unsigned 8 bit WORD : unsigned 16 bit DWORD : unsigned. 32 bit QWORD : unsigned. 64 bit STR : string data LPSTR : (STR*) STR์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ HWND : Handle to window HINSTANCE : Handles to a program instance ์๋์ฐ ํจ์ ๋ํ ๋ฐํ ์๋ฃํ VOID : ์ด ํจ์๋..