我正在進入技能美國編程比賽,我不確定比賽將如何進行,但我知道一些規則。最大的問題是你不能帶任何源代碼。我也聽到一位老師說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++教科書以外的示例時,我將能夠記住並鍵入內容。
你可以使用MFC嗎? – adelphus 2012-03-02 16:21:38
爲什麼不使用資源?然後可以使用資源編輯器來拖放控件。 – 2012-03-02 16:25:15
@adelphus我不確定...我會將它包含在電子郵件中,我將發送給負責此事的人。 – Gabe 2012-03-02 16:29:15