2013-10-31 37 views
0

我需要使用一些GDI32功能,但我需要添加庫第一。我嘗試鏈接它與鏈接器選項,但文本沒有顯示。 那麼如何通過代碼添加庫? 注:在#pragma評論(LIB,「gid32.lib」)是不可移植的,這就是爲什麼我不能用它:(如何鏈接TextOut()函數庫?

#include <iostream> 
#include <string.h> 
#include <windows.h> 
//#include <WinGdi.h> 


using namespace std; 

int main() 
{ 
    //TextBlink("hello world", 10,20,3,5); 
    HDC hDC=GetDC(GetConsoleWindow()); 
    SetTextColor(hDC,6); 
    TextOut(hDC,1,5,"hello world",strlen("hello world")); 
    cin.get(); 
} 
+0

整個GDI庫不是可移植的......或者你的意思是僅在不同的Windows編譯器之間? – nvoigt

回答

1

你不能在一個控制檯可使用TextOut,你必須創建一個窗口獲取窗口的句柄,並使用該窗口的設備上下文。

的另一個問題是,爲什麼可移植性擔心,當你使用非便攜功能?是的TextOut微軟依賴...

0

在「項目構建選項「下的」鏈接器設置「選項卡中,確保kernel32,gdi32user32庫進入「鏈接庫」列表。

如果缺少某些東西,甚至無法獲得可執行文件(鏈接程序將失敗!)。

無論如何,你所做的不是hortodox:控制檯由操作系統內部繪製。在它上面繪製並不是永久的,每次操作系統更新控制檯屏幕時都會被覆蓋。可能在getch()期間或每寫完之後。

如果您想繪製自己的文字或使用任何空白功能,您最好創建一個窗口並通過自己的WM_PAINT事件對其進行繪製。換句話說,你需要一個你可以控制自己的窗戶。

+0

我如何通過代碼添加該庫? 我這樣做了,但文本仍然沒有顯示:( 我有1個項目使用TextOut(),但在VS. – Joaquim

+0

你不能以便攜方式「通過代碼添加庫」。庫由鏈接器放在一起。該階段編譯器已經走了。 –