![](/img/trans.png)
[英]Can I convert my Visual C++ win32 project into a crossplatform later?
[英]How can I view the main form in a Visual Studio Visual C++ Win32 Project so I can edit it?
我正在將C ++ Builder程序遷移到Visual Studio 2013 C ++ / Win32 / Win32項目。
但是,在創建新項目(C ++ / Win32 / Win32項目)之后,我可能會嘗試查看/編輯Visual Studio創建項目時自動創建的主窗體。 我知道如何在C#,C ++ Builder和Delphi中查看/編輯表單,但我沒有看到如何查看表單,以便我可以在VS 2013中為C ++ Windows應用程序添加它。
什么是我不明白? 什么搖滾是IDE中隱藏的主要形式?
我知道表單在那里,有一個簡單的菜單和一個關於框,因為它是在運行新創建的項目/程序時顯示的。
表單我指的是新創建的應用程序的主窗口。
聽起來像你創建了一個直接的Win32項目(非MFC)。 在這種情況下,沒有像您習慣的表單設計師。 很多是由代碼創建的。
你會發現類似的東西:
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
打開資源文件,Win32Project1.rc,打開Dialog子文件夾,您將看到一個對話框設計器。 除此之外,您將找不到可以像C ++ Builder允許的方式編輯的表單。 乍一看,你會認為你有一個表單設計師,但不久你會發現它很缺乏。 設計復雜的UI需要更多。
壞消息,如果你來自C ++ Builder背景,你會發現Visual C ++不是RAD / WYSIWIG。 有幾種方法可以做到這一點,並非所有方法都涉及向導的設計時間。 許多傳統的Visual C ++編程動態地創建UI。
如果你想在Visual Studio中使用真正的RAD,你需要轉到C#/ .NET和Winforms或WPF。
如果您堅持使用C ++,我建議您重新創建項目並選擇MFC選項,或者查看Qt或其他第三方UI框架。 MFC(Microsoft基礎類)和MFC項目向導將為您提供更多可供選擇的控件,以及通過幫助您創建具有單/多文檔界面等的應用程序框架的更多啟動。
“Winforms”應用程序和標准的Visual C ++ Windows應用程序之間存在着巨大的范例變化:
Winforms應用程序使用托管代碼,可以是C#,VB或C ++ / CLI。
在Winforms中,程序員不必知道用於編寫表單,控件和事件代碼的Windows消息泵。
Visual C ++應用程序通常不使用托管代碼,並且這些程序在沒有.Net框架的情況下運行。
如果需要,可以在Visual C ++項目中使用Winforms,但該操作會將項目轉換為托管代碼項目(C ++ / CLI)。
Visual C ++使用資源文件來存儲表單的布局,而winforms應用程序使用設計器類(例如,myForm.designer.cs)
遺憾的是,Visual Studio中沒有可用於編輯主窗口的編輯器。 你必須使用代碼來做到這一點。 在項目中調試此方法以查看Windows消息系統的工作方式。
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: *****************Add any drawing code here...*****************
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
打開資源文件,您可以在其中編輯“關於框”和菜單項。 該窗口是使用API CreateWindow創建的,傳遞給函數的參數定義了窗口的視圖。 在win32中,只能在資源文件中編輯對話框,而窗口視圖需要在win32消息中編寫代碼,即WM_PAINT根據您的要求繪制窗口。 如果您正在尋找類似於界面的表單窗口,則可以在winmain中調用dialogbox api並刪除所有代碼以創建窗口。 添加按鈕,列表和其他控件會更容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.