我在编写过程中遇到了很多的问题,但在厚脸皮的不断发帖询问下终于代码全部没有问题了,可是。。。
没想到运行的程序不是我想要的样子
以下是我的全部代码,我的资源文件我感觉并没有介入编译过程:
这是.cpp
#include <Windows.h>
#include <stdio.h>
#include "8-1.h"
//窗口函数声明
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ) //入口函数(主函数)
{
//定义窗口类
WNDCLASS wndclass;
wndclass.hInstance = hInstance;//当前应用程序实例句柄
wndclass.hbrBackground = (HBRUSH)GetStockObject(DKGRAY_BRUSH);//窗口背景色为灰色
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);//窗口采用箭头光标
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);//窗口的最小化图标为默认图标
wndclass.lpszClassName = "My first windows";//窗口类名
wndclass.lpszMenuName =NULL;//窗口中无菜单
wndclass.lpfnWndProc = WndProc;//该窗口的处理函数为MyProc
wndclass.cbClsExtra = 0;//窗口类无扩展
wndclass.cbWndExtra = 0;//该窗口实例无扩展
wndclass.style = CS_HREDRAW | CS_VREDRAW;//该窗口的类型
if(!RegisterClass(&wndclass)) //注册窗口类
return 0;
//创建窗口
HWND hwnd = CreateWindow(
"My first windows" //窗口类名
,"我的第一个窗口程序" //窗口实例的标题名
,WS_OVERLAPPEDWINDOW //窗口的风格
,CW_USEDEFAULT
,CW_USEDEFAULT //窗口左上角坐标为默认值
,CW_USEDEFAULT
,CW_USEDEFAULT //窗口的高度和宽度为默认值
,NULL //此窗口没有父窗口
,NULL //此窗口没有主菜单
,hInstance //创建此窗口应用程序的当前句柄
,NULL //不使用该值
);
ShowWindow(hwnd,SW_NORMAL);//显示窗口
UpdateWindow(hwnd);//绘制用户区
//消息循环
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 1;//程序终止时将信息返回系统
}
//窗口函数
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HMENU hmenu;
HMENU haddmenu;
switch(message)
{
case WM_COMMAND: //处理菜单消息
switch(LOWORD(wParam))
{
case IDM_ADDMENU: //在主菜单中添加弹出式"统计计算"菜单
hmenu = GetMenu(hwnd); //获取主菜单句柄
haddmenu = CreateMenu(); //动态创建菜单
//在创建的菜单中增加菜单项
AppendMenu(haddmenu, MF_ENABLED, IDM_QIUHE, "求和(&S)");
AppendMenu(haddmenu, MF_ENABLED, IDM_FANGCHA, "方差(&F)");
AppendMenu(haddmenu, MF_ENABLED, IDM_PINGJUNZHI, "平均值(&A)");
AppendMenu(haddmenu, MF_ENABLED, IDM_JUNFANGGEN, "均方根(&J)");
//将创建的弹出式菜单插入主菜单中
InsertMenu(hmenu, 2, MF_POPUP|MF_BYPOSITION, (UINT)haddmenu,
"统计计算(&C)");
//相应改变菜单中有关统计计算菜单项的属性
EnableMenuItem(hmenu, IDM_ADDMENU, MF_GRAYED);
EnableMenuItem(hmenu, IDM_DELMENU, MF_ENABLED);
DrawMenuBar(hwnd); //重新显示窗口菜单
break;
case IDM_DELMENU: //从主菜单中删除弹出式"统计计算"菜单
hmenu=GetMenu(hwnd);
DeleteMenu(hmenu, 2, MF_BYPOSITION); //删除"统计计算"菜单
//相应改变“文件”菜单中有关统计计算菜单项的属性
EnableMenuItem(hmenu, IDM_ADDMENU, MF_ENABLED);
EnableMenuItem(hmenu, IDM_DELMENU, MF_GRAYED);
DrawMenuBar(hwnd); //重新显示窗口菜单
break;
case IDM_EXIT:
SendMessage(hwnd, WM_DESTROY, 0, 0);
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0); //调用PostQuitMessage 发出WM_QUIT 消息
default:
return DefWindowProc(hwnd, message, wParam, lParam); //系统默认处理函数
}
return 0;
}
这是.h
#ifndef MENU_1_H
#define MENU_1_H
#define IDM_ADDMENU 15
#define IDM_DELMENU 16
#define IDM_EXIT 17
#define IDM_HELP 22
#define IDM_QIUHE 23
#define IDM_FANGCHA 24
#define IDM_PINGJUNZHI 25
#define IDM_JUNFANGGEN 26
#endif
这是.rc
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
/
// 中文(简体,中国) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
/
//
// Menu
//
MENU MENU
BEGIN
POPUP "文件(&F)"
BEGIN
MENUITEM "创建统计计算菜单项(&P)\t Ctrl+P", IDM_ADDMENU
MENUITEM "删除统计计算菜单项(&D)\t Ctrl+D", IDM_DELMENU, GRAYED
MENUITEM SEPARATOR
MENUITEM "退出(&X) \t Ctrl+X", IDM_EXIT
END
MENUITEM "帮助(&H)", IDM_HELP
END
/
//
// Accelerator
//
MENU ACCELERATORS
BEGIN
"^P", IDM_ADDMENU, ASCII
"^D", IDM_DELMENU, ASCII
"^X", IDM_EXIT, ASCII
END
#ifdef APSTUDIO_INVOKED
/
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // 中文(简体,中国) resources
/
#ifndef APSTUDIO_INVOKED
/
//
// Generated from the TEXTINCLUDE 3 resource.
//
/
#endif // not APSTUDIO_INVOKED
真心希望能有人帮我解决一下!!!纠结一天了。。。