Win32 Windows編程 三

來源:互聯網
上載者:User

標籤:windows   編程   c++   unicode   編碼   

一、NMAKE 和 Makefile

1.1  NMAKE - 命令直譯器, 根據Makefile檔案中定義的指令碼,完成項目的編譯等操作

1.2 Makefile - 定義編譯、串連等指令碼語言

1.3 Makefile 檔案的使用

1.3.1 基本文法規則

window.exe:window.obj //依賴行

    cl.exe window.c /c   //命令列

   link.exe window.obj user32.lib

window.exe 的依賴項是window.obj,如果window.obj被重新改寫 window.exe將重建

通過時間戳記(time stamp)判斷程式是否需要重新編譯串連,要重新編譯串連

如果當檔案修改最後時間與時間戳記不同,將會重新編譯連結.

1.3.2  執行過程

1 NMAKE 首先找到第一個依賴行,根據依賴行之間的關係,建立依賴樹。例如:

A:B

B:C

C:D

NMAKE會建立對應的依賴樹,

A

|-B

   |-C

      |-D

2 在樹建好後 NMAKE會首先執行D的命令列,然後依次執行父節點的命令列,

3 在A的命令列執行結束後,退出NMAKE

4 如果需要執行指定依賴行,需要在執行NMAKE時增加依賴行的名稱

 1.4 使用

   1.4.1  NAMKE  指定檔案

   1.4.2 使用預設的檔案名稱
如果make檔案名稱使用makefile 直接使用nmake命令

二、字元編碼

MessageBox : MessageBoxA MessageBoxW

2.1 編碼的曆史

2.1.1 ASCII  0~127  7位表示

2.1.2 ASCII 擴充碼 8位 表示

字碼頁:通過字碼頁來切換對應的字元

2.1.3  雙位元組字元集 DBCS

使用一個或兩個位元組表示字元

      2.1.4 Unicode

全部使用2個位元組表示字元

記憶體/硬碟等資源佔用大

2.2 C語言和編碼

2.2.1 單位元組字元和字串

char c =  ‘A‘;

char * pc = "ABCD";

2.2.2 寬位元組的字元

wchar_t cText = ‘A‘;

wchar_t*pszText =  L"ABCD";

2.2.3 相關函數

單位元組字元的函數, 對應有多寬位元組的函數。

strlen wcslen mbslen

printf  wprintf

2.2.4 TCHAR

為了程式中可以方便的支援unicode和多位元組字元等,所以使用TCHAR來定義字元和字串

更具_UNICODE宏開關會將TCHAR編譯成不同字元類型
#define unicode

#ifndef unicode 
typedef char tchar
#define __t(x) x
#else
typedef wchar_t tchar
#define __t(x) l##x
#endif

使用時需要增加TCHAR.H標頭檔支援,使用_UNICODE 宏開福安進行編譯

定義方式:

TCHAR* pszText = __T( "ABCDEF" );

2.2.5 Unicode的控制台列印

WriteConsole

2.3 Win32 程式與編碼

2.3.1 Win32 API 的定義

每個API對多位元組和UNICODE分別有不同的版本

MessageBox

MessageBoxA 多位元組

MessageBoxW UNICODE字元

     2.3.2 字元轉換

MultiByteToWideChar

WideCharToMultiByte

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.