2012-03-02 89 views
1

我正在進入技能美國編程比賽,我不確定比賽將如何進行,但我知道一些規則。最大的問題是你不能帶任何源代碼。我也聽到一位老師說QT Creator不會被允許。C++ gui編程資源

如果我打算在沒有QT(或任何其他捆綁庫)的C++中進行編碼,但是我必須使用本地窗口來實現某些功能......我應該怎麼做。

我在網站上找到了這些代碼。它所做的就是創建一個窗口,我會探討這樣的選擇更多,但看這是多大碼的?

#include <windows.h> 

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 

static char sClassName[] = "MyClass"; 
static HINSTANCE zhInstance = NULL; 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { 
     WNDCLASSEX WndClass; 
     HWND hwnd; 
     MSG Msg; 

     zhInstance = hInstance; 

     WndClass.cbSize  = sizeof(WNDCLASSEX); 
     WndClass.style   = NULL; 
     WndClass.lpfnWndProc = WndProc; 
     WndClass.cbClsExtra = 0; 
     WndClass.cbWndExtra = 0; 
     WndClass.hInstance  = zhInstance; 
     WndClass.hIcon   = LoadIcon(NULL, IDI_APPLICATION); 
     WndClass.hCursor  = LoadCursor(NULL, IDC_ARROW); 
     WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); 
     WndClass.lpszMenuName = NULL; 
     WndClass.lpszClassName = sClassName; 
     WndClass.hIconSm  = LoadIcon(NULL, IDI_APPLICATION); 

     if(!RegisterClassEx(&WndClass)) { 
       MessageBox(0, "Error Registering Class!", "Error!", MB_ICONSTOP | MB_OK); 
       return 0; 
     } 

     hwnd = CreateWindowEx(WS_EX_STATICEDGE, sClassName, "db Tutorial", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 

CW_USEDEFAULT, 
        320, 240, NULL, NULL, zhInstance, NULL); 

     if(hwnd == NULL) { 
       MessageBox(0, "Error Creating Window!", "Error!", MB_ICONSTOP | MB_OK); 
       return 0; 
     } 

     ShowWindow(hwnd, nCmdShow); 
     UpdateWindow(hwnd); 

     while(GetMessage(&Msg, NULL, 0, 0)) { 
       TranslateMessage(&Msg); 
       DispatchMessage(&Msg); 
     } 

     return Msg.wParam; 
} 

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { 
     switch(Message) { 
       case WM_CLOSE: 
         DestroyWindow(hwnd); 
         break; 
       case WM_DESTROY: 
         PostQuitMessage(0); 
         break; 
       default: 
         return DefWindowProc(hwnd, Message, wParam, lParam); 
     } 
     return 0; 
} 

我不會有問題,更多地瞭解這一點,但因爲我不允許攜帶源代碼我不得不記住大部分這些。這沒有發生。

有沒有什麼辦法可以在C++中創建窗口/按鈕,而不需要我使用類似QT的東西或輸入一頁代碼來創建一個空窗口?我已經看過谷歌和一切都是關於QT的創造者。任何幫助都會很棒。

我不是在尋找「簡單的出路」,只是當我無法訪問C++教科書以外的示例時,我將能夠記住並鍵入內容。

+0

你可以使用MFC嗎? – adelphus 2012-03-02 16:21:38

+0

爲什麼不使用資源?然後可以使用資源編輯器來拖放控件。 – 2012-03-02 16:25:15

+0

@adelphus我不確定...我會將它包含在電子郵件中,我將發送給負責此事的人。 – Gabe 2012-03-02 16:29:15

回答

1

我看着web site和它說
計算機編程

大賽由項目編碼和輸出,技能相關 筆試和麪試的。參賽者將收到一個包 ,其中包括書面測試說明和兩個 項目中的每一個。每個項目的規範都是爲Visual Basic編寫的, Java,C#,C++和RPG。這些項目將保存在桌面上的 文件夾中,名爲「SkillsUSA Contestant#_」。所有項目將被 下載到跳轉驅動器或軟盤(以學生喜歡的爲準) 並傳輸到主站以進行打印,包括代碼和屏幕。

看來,你可以任何提及的語言。你會得到一個或兩個任務,並會被要求編碼。如果要包含任何UI,作爲C++編碼器,您將處於劣勢。 VB編碼器可能在UI類型分配上最簡單。

+0

這就是事情。我知道所有三個,但老實說,如果你將要評判編程技能,評委將會對C++印象最深刻。我不會訴諸使用VB。 – Gabe 2012-03-02 19:00:04

+0

我希望他們能夠根據您的任務來判斷您是否有能力選擇正確的技術。方形掛鉤,圓孔等 – adelphus 2012-03-02 21:05:01

+0

@加布語只要滿足要求,在分配時間以下就不重要了。 – 2012-03-02 21:10:26

1

有沒有什麼辦法可以在C++中創建窗口/按鈕,而不需要我使用類似QT的東西或輸入一頁代碼來創建一個空窗口?我已經看過谷歌和一切都是關於QT的創造者。任何幫助都會很棒。

對於一個更簡單的方法進入Windows API級的GUI編程,看看我"Lessons in Windows API Programming",它使用對話框資源,避免太多的樣板代碼你’重新顯示。

不過,要創建這樣的資源,您需要工具和文檔。

這聽起來像你’不允許的,在這種情況下,如果你絕對必須使用C++,並且絕對必須創建一個GUI,你’重新擰緊。但我認爲你一定誤解了一些東西。一個人不能通過要求這個人在沒有燃料的情況下駕駛一輛公共汽車來測試一個人作爲巴士司機的技能;