windows程序设计「GRAFMENU.C」范例分析笔记

/*----------------------------------------------

   GRAFMENU.C -- Demonstrates Bitmap Menu Items

                 (c) Charles Petzold, 1998

  ----------------------------------------------*/

 

#include <windows.h>

#include "resource.h"

 

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

void    AddHelpToSys     (HINSTANCE, HWND) ;

HMENU   CreateMyMenu     (HINSTANCE) ;

HBITMAP StretchBitmap    (HBITMAP) ;

HBITMAP GetBitmapFont    (int) ;

void    DeleteAllBitmaps (HWND) ;

 

TCHAR szAppName[] = TEXT ("GrafMenu") ;

 

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

                    PSTR szCmdLine, int iCmdShow)

{

     HWND     hwnd ;

     MSG      msg ;

     WNDCLASS wndclass ;

    

     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;

     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 = (HBRUSH) GetStockObject (WHITE_BRUSH) ;

     wndclass.lpszMenuName  = NULL ;

     wndclass.lpszClassName = szAppName ;

    

     if (!RegisterClass (&wndclass))

     {

          MessageBox (NULL, TEXT ("This program requires Windows NT!"),

                      szAppName, MB_ICONERROR) ;

          return 0 ;

     }

    

     hwnd = CreateWindow (szAppName, TEXT ("Bitmap Menu Demonstration"),

                          WS_OVERLAPPEDWINDOW,

                          CW_USEDEFAULT, CW_USEDEFAULT,

                          CW_USEDEFAULT, CW_USEDEFAULT,

                          NULL, NULL, hInstance, NULL) ;

    

     ShowWindow (hwnd, iCmdShow) ;

     UpdateWindow (hwnd) ;

    

     while (GetMessage (&msg, NULL, 0, 0))

     {

          TranslateMessage (&msg) ;

          DispatchMessage (&msg) ;

     }

     return msg.wParam ;

}

 

LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)

{

     HMENU      hMenu ;

     static int iCurrentFont = IDM_FONT_COUR ;

    

     switch (iMsg)

     {

     case WM_CREATE:

                     // 在系统菜单中添加新菜单项(水平分隔符和HELP位图菜单)

          AddHelpToSys (((LPCREATESTRUCT) lParam)->hInstance, hwnd) ;

                     // 建立位图样式的程序菜单

          hMenu = CreateMyMenu (((LPCREATESTRUCT) lParam)->hInstance) ;

                     // 为程序添加自建菜单

          SetMenu (hwnd, hMenu) ;

                     // 放置选取标记于菜单项iCurrentFont旁边

          CheckMenuItem (hMenu, iCurrentFont, MF_CHECKED) ;

          return 0 ;

         

                     // 处理HELP菜单项

     case WM_SYSCOMMAND:

          switch (LOWORD (wParam))

          {

          case IDM_HELP:

               MessageBox (hwnd, TEXT ("Help not yet implemented!"),

                           szAppName, MB_OK | MB_ICONEXCLAMATION) ;

               return 0 ;

          }

          break ;

         

     case WM_COMMAND:

          sw

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值