如何在Visual Studio Visual C ++ Win32项目中查看主窗体,以便编辑它?

时间:2014-07-16 04:17:30

标签: c++ visual-studio-2013

我正在将C ++ Builder程序迁移到Visual Studio 2013 C ++ / Win32 / Win32项目。

但是,在创建新项目(C ++ / Win32 / Win32项目)之后,我可能会尝试查看/编辑Visual Studio创建项目时自动创建的主窗体。我知道如何在C#,C ++ Builder和Delphi中查看/编辑表单,但我没有看到如何查看表单,以便我可以在VS 2013中为C ++ Windows应用程序添加它。

我不懂的是什么?什么摇滚是IDE中隐藏的主要形式?

我知道表单在那里,有一个简单的菜单和一个关于框,因为它是在运行新创建的项目/程序时显示的。

表单我指的是新创建的应用程序的主窗口。

3 个答案:

答案 0 :(得分:6)

听起来像你创建了一个直接的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项目向导将为您提供更多可供选择的控件,以及通过帮助您创建具有单/多文档界面等的应用程序框架的更多启动。

答案 1 :(得分:3)

“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;
}

答案 2 :(得分:1)

打开资源文件,您可以在其中编辑" about框" &安培;菜单项。该窗口是使用API​​ CreateWindow&创建的。传递给函数的参数定义了窗口的视图。在win32中,只能在资源文件中编辑对话框,而窗口视图需要在win32消息中编写代码,即WM_PAINT,以根据您的要求绘制窗口。如果您正在寻找类似于界面的表单窗口,则可以在winmain&中调用dialogbox api。删除窗口创建的所有代码。这将更容易添加按钮,列表和&其他控件。