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将使你获得更多的控件选择,并通过帮助你创建具有单/多文档界面等应用程序骨架来获得更大的起步。
"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;
}