高手看看我这个程序为什么不能通过编译(第二部分)

来源:百度知道 编辑:UC知道 时间:2024/09/21 00:51:52
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDM_NEW:break;
case IDM_OPEN:break;
case IDM_SAVE:break;
case IDM_SAVEAS:break;
case IDM_CLOSE:break;
case IDM_ADDPRINTMENU:
hmenu=GetMenu(hwnd);
hprintmenu=CreateMenu();
AppendMenu(hprintmenu,MF_ENABLED,IDM_LINE,"求和");
AppendMenu(hprintmenu,MF_ENABLED,IDM_RECT,"方差");
AppendMenu(hprintmenu,MF_ENABLED,IDM_RRECT,"平均值");
AppendMenu(hprintmenu,MF_ENABLED,IDM_ELLIP,"均方根");
InsertMenu(hmenu,2,MF_POPUP|MF_BYPOSITION,(UINT)hprintmenu,"统计计算(&C)");
EnableMenuItem(hmenu,IDM_ADDPRINTMENU,MF_GRAYED);
EnableMenuItem(hmenu,IDM_DELPRINTMENU,MF_ENABLED);
DrawMenuBar(hwnd);
break;
case IDM_DELPRINTMENU:
DeleteMenu(hmenu,2,MF_BYPOSITIO

错误太多了。
1.资源要放到.rc 文件中编译,把菜单资源那部分代码另存为.rc文件,要包含 winuser.h 这个头文件,因为资源中用到的虚拟键 VK_DELETE 的定义在这个文件中,当然,你也可以自己定义,#define VK_DELETE 0x2E。
2.wndclass.lpszMenuName="menu";这里的菜单名不是这样,应该用
wndclass.lpszMenuName=MAKEINTRESOURCE(menu)
这个menu应该是菜单资源的ID。
haccel=LoadAccelerators(hInstance,"menu");也一样要改为
haccel=LoadAccelerators(hInstance,MAKEINTRESOURCE(menu)
);
3.资源中使用的ID全部要定义好,最好定义在一个头文件中,比如 resource.h ,因为编译资源和程序都要用到,在.rc文件和.cpp文件中都要包含。

你可以先自己尝试改下,实在不行,我有改好的。其实这样改并不好,资源最好还是让VC自己生成。

请把编译器给的错误给出 ,并指出是哪行?
要不别人也没法给你帮忙