 |
都是要想辦法調用Windows API
|
 |
而MFC,Windows Forms,還有QT什麼的,都是框架而已。
|
 |
在Windows系統中,C++調用Windows API顯示窗口的程序很複雜。需要創建窗口類,註冊窗口類,通知Windows顯示窗口。而在Linux系統下,只需要調用幾個GTK函數就能顯示窗口了,不到10行代碼。
|
 |
#include <gtk/gtk.h> int main (int argc, char *argv[]) { GtkWidget *window; GtkWidget *label; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Hello World"); g_signal_connect(window, "destroy", G_CALLBACK (gtk_main_quit), NULL); label = gtk_label_new ("Hello, World"); gtk_container_add (GTK_CONTAINER (window), label); gtk_widget_show_all (window); gtk_main (); return 0; } 這是C語言調用gtk函數庫顯示窗口的代碼。這個只能在Linux下運行。 代碼行數比調用Windows API的少了幾十行呢
|
 |
可以寫一個C++程序調用MsgBox函數,代碼可以只有十幾行
|
 |
6樓
巨大八爪鱼
2015-10-30 21:38
在Windows XP下,用Visual C++ 6.0打開記事本notepad.exe,或者畫圖mspaint.exe,或者資源管理器explorer.exe,都可以看到rc資源文件,裡面有24資源(用於啟用XP風格),以及各種對話框和圖標。打開自己寫的MFC程序的exe文件也是同樣的效果。但是用VC++6打開其他語言寫的程序,比如C#的Windows Forms,VB生成的程序就不能看到資源文件,甚至根本就打不開。而且VB6生成的exe文件很難擁有XP風格的控件。 其實,無論用什麼編程語言編寫Windows窗口程序,編譯后都要生成機器代碼,即便是C++也是這樣,MFC也是這樣。這些機器代碼都要調用Windows API來創建、註冊并顯示窗口。這些窗口以及其中的控件可能是直接讀取的rc資源文件,也可能是編寫的代碼動態創建了這些控件(也就是不用rc資源文件)。因此,我覺得,用其他語言編寫的程序,肯定沒有用到rc文件,而是控件是由生成的機器代碼在程序運行時通知Windows動態創建的,所以才會出現用VC++6打開exe文件后無法讀取rc資源的現象。
|
 |
7樓
巨大八爪鱼
2015-10-30 21:52
 這是用VC++6打開Windows XP自帶的記事本exe程序的效果。圖中畫紅圈的地方是24資源,該資源用於啟用程序界面的XP控件風格。
|