如何在Visual Studio Visual C++ Win32项目中查看主表单以便进行编辑?

3
我正在将一个C++ Builder程序迁移到Visual Studio 2013的C++/Win32/Win32项目上。尽管我试过多种方法,但在创建新项目(C++/Win32/Win32 Project)后,我无法看到如何查看/编辑主窗体,因为Visual Studio自动创建了该项目。我知道如何在C#、C++ Builder和Delphi中查看/编辑窗体,但我没有看到如何在VS 2013中查看窗体,以便我可以在C++ Windows应用程序中添加内容。我不明白的是什么?主窗体在IDE中隐藏在哪里?当新创建的项目/程序运行时,我知道窗体存在,有一个简单的菜单和关于框。这里所指的窗体是新创建应用程序的主窗口。

也许是这个:http://msdn.microsoft.com/zh-cn/library/aa733747(v=vs.60).aspx? - B.K.
感谢您回复我的问题。 - Mike Jablonski
3个回答

8
听起来你创建了一个直接的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 Foundation Classes)和MFC Project Wizard将使你获得更多的控件选择,并通过帮助你创建具有单/多文档界面等应用程序骨架来获得更大的起步。


谢谢。在搜索表单设计器后,我也怀疑这点。 - Mike Jablonski

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

1
打开资源文件,您可以编辑“关于框”和菜单项。窗口是使用API CreateWindow创建的,传递给函数的参数定义了窗口的视图。在win32中,只有对话框可以在资源文件中进行编辑,而窗口的视图需要编写代码来绘制窗口,即WM_PAINT。如果您正在寻找类似表单窗口的界面,则可以在winmain中调用dialogbox api并删除所有代码以创建窗口。这样添加按钮、列表和其他控件就会更容易。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接