首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

windows编程中3个程序模块不知道怎么编写

2012-03-28 
windows编程中3个程序模块不知道如何编写小弟学习中,在书上有这样3个模块,可是不知道该如何编写,还请大家

windows编程中3个程序模块不知道如何编写
小弟学习中,在书上有这样3个模块,可是不知道该如何编写,还请大家帮忙解决一下。
程序中共有3个模块:
1。源程序
#include <windows.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <菜单示例.h>


HMENU   hmenu,hprintmenu;

LRESULT   CALLBACK   WndProc(HWND,UINT,WPARAM,LPARAM);

int   WINAPI   WinMain(
      HINSTANCE   hInstance,
      HINSTANCE   hPrevInst,
      LPSTR   lpszCmdLine,
      int   nCmdShow
      )

{
HWND   hwnd;
MSG   Msg;
HACCEL   hAccel;
WNDCLASS   wndclass;
char   lpszMenuName[]     =   "Menu ";
char   lpszClassName[]   =   "菜单 ";
char   lpszTitle[]   =   "菜单示例 ";

wndclass.style   =   0;
wndclass.lpfnWndProc   =   WndProc;
wndclass.cbClsExtra   =   0;
wndclass.cbWndExtra   =   0;
wndclass.hInstance   =   hInstance;
wndclass.hIcon   =   LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor   =   LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground   =   GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName   =   NULL;
wndclass.lpszClassName   =   lpszClassName;

if(!RegisterClass(&wndclass))
{
MessageBeep(0);
return   0;
}

hwnd   =   CreateWindow(
lpszClassName,
lpszTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
hAccel   =   LoadAccelerators(hInstance,lpszMenuName);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&Msg,NULL,0,0))
{
if(!TranslateAccelerator(hwnd,hAccel,&Msg))
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}

return   Msg.wParam;
}

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_GRAYED,IDM_LINE, "线条 ");
AppendMenu(hprintmenu,MF_GRAYED,IDM_RECT, "矩形 ");
AppendMenu(hprintmenu,MF_GRAYED,IDM_RRECT, "圆角矩形 ");
AppendMenu(hprintmenu,MF_GRAYED,IDM_ELLIP, "椭圆 ");
   
InsertMenu(hmenu,2,MF_POPUP|
MF_BYPOSITION,(UINT)hprintmenu, "绘图(&P) ");
EnableMenuItem(hmenu,IDM_ADDPRINTMENU,MF_GRAYED);
EnableMenuItem(hmenu,IDM_DELPRINTMENU,MF_ENABLED);
DrawMenuBar(hwnd);
break;
case   IDM_DELPRINTMENU:
DeleteMenu(hmenu,2,MF_BYPOSITION);
EnableMenuItem(hmenu,IDM_ADDPRINTMENU,MF_ENABLED);
EnableMenuItem(hmenu,IDM_DELPRINTMENU,MF_GRAYED);
DrawMenuBar(hwnd);
case   IDM_EXIT:
SendMessage(hwnd,WM_DESTROY,0,0);


break;
case   IDM_CUT:
break;
case   IDM_COPY:
break;
case   IDM_PASTE:
break;
case   IDM_DELETE:
break;
}
break;
case   WM_DESTROY:
PostQuitMessage(0);
break;
default:
return   DefWindowProc(hwnd,message,wParam,lParam);
}
return   0;
}

2。菜单示例.h

#define   IDM_NEW                       10
#define   IDM_OPEN                     11
#define   IDM_CLOSE                   12
#define   IDM_SAVE                     13
#define   IDM_SAVEAS                 14
#define   IDM_ADDPRINTMENU     15
#define   IDM_DELPRINTMENU     16
#define   IDM_EXIT                     17
#define   IDM_CUT                       18
#define   IDM_COPY                     19
#define   IDM_PASTE                   20
#define   IDM_DELETE                 21
#define   IDM_HELP                     22
#define   IDM_LINE                     23
#define   IDM_RECT                     24
#define   IDM_RRECT                   25
#define   IDM_ELLIP                   26

3。菜单示例.rc

#include <windows.h>
#include <菜单示例.h>

Menu   MENU
{
POPUP   "文件(&F) ";
/*{
        MENUITEM     "新建(&N)   \t   Ctrl+N ",IDM_NEW
MENUITEM     "打开(&O)   \t   Ctrl+O ",IDM_CLOSE
MENUITEM     "关闭(&C) ",IDM_CLOSE
MENUITEM     SEPARATOR
MENUITEM     "保存(&S)   \t   Ctrl+S ",IDM_SAVE
MENUITEM     "另存为(&A) ",IDM_SAVEAS
MENUITEM     SEPARATOR
MENUITEM     "创建绘图菜单项(&P)   \t   Ctrl+P ",IDM_ADDPRINTMENU
MENUITEM     "删除绘图菜单项(&D)   \t   Ctrl+D ",IDM_DELPRINTMENU,GRAYED
MENUITEM     SEPARATOR
MENUITEM     "退出(&X) ",IDM_EXIT
}*/
POPUP "编辑(&E) "
/*{
        MENUITEM     "剪贴(&T)   \t   Ctrl+T ",IDM_CUT
MENUITEM     "复制(&C)   \t   Ctrl+C ",IDM_COPY
MENUITEM     "粘贴(&P)   \t   Ctrl+P ",IDM_PASTE
MENUITEM     "删除(&D)   \t   Del ",IDM_DELETE
}*/
MENUITEM   "帮助(&H) ";
}

Menu   ACCELERATORS
{
        "^N ",IDM_NEW
"^O ",IDM_OPEN
"^S ",IDM_SAVE
"^P ",IDM_ADDPRINTMENU
"^D ",IDM_DELPRINTMENU


"^X ",IDM_CUT
"^C ",IDM_COPY
"^V ",IDM_PASTE
VK_DELETE,IDM_DELETE,VIRTKEY
}


[解决办法]
第三个是rc文件,你可以手工书写这个文件然后加入工程中,也可以用微软的vc添加资源自动生成这个文件。

热点排行