簡體   English   中英

如何在Visual Studio Visual C ++ Win32項目中查看主窗體,以便編輯它?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM