םיטירפת - C/C++
ישאר דומע | םיניינע ןכות סינוקא ןד תאמ

.ןולחה לש תרתוכה תרושל תחתמ אצמנ רשא טירפתה אוה תונולח תססובמ תינכותב רתויב ישומישה רבדה
Plants-ו (תויח) "Animals" םיטירפת-יתת ינש םנשי רוצינש טירפתל .טושפ דחא טירפת רוצינ ,וז אמגודב
:םיכרד יתשב םיטירפתהמ דחאב רוחבל לכונ .(םיחמצ)
.טירפתה לע רבכעה ןצחל םע הציחל י"ע .1
.(hot key) "המח תוא"-כ רחבנש תוא + Alt םישקמ ףוריצב שומיש י"ע .2

.menu item ארקנה ויביכרממ דחא תא רוחבל לכונ ,טירפתל ארקנשכ
.המיאתמ העדוה תבית ונל הארת טירפת ףיעס לש הריחב לכ ,ונלש אמגודב

טירפתטירפת יטירפתואמגוד
AnimalsLandHorse, Dog, Cat
SeaFish, Shark, Alligator
PlantsTreesSome trees
FlowersSome flowers

.rc תמויס םע (באשמל דוק ץבוק) Resource-Script-File ארקנה דחוימ ץבוק טירפתה רובע רידגנ ונא
.הב לפטל לק רתוי היהיש ידכ תונטק תוינכות רפסמל תינכותה תא םיקלחמ םצעב ונא

:ךכ הארי ץבוקה
//menus.rc:

#include "menus.h"

ExampleMenu MENU
  { 
    POPUP "&Animals"
      { MENUITEM "&Land", IDM_LAND
        MENUITEM "&Sea", IDM_SEA
      }
    POPUP "&Plants"
      { 
        MENUITEM "T&rees", IDM_TREES
        MENUITEM "Fl&owers", IDM_FLOWERS   
      }
  }

.טירפתב רוחבל לכות Alt םע וז תוא לש םישקמה ףוריצ י"עו יתחת וק תלעב היהת ,& ןמיסה רחאלש תואה

:Windows-מ תוחלשנה תועדוהכ םישמשמה םיעובקה תא רידגמ אבה תרתוכה ץבוק
//menus.h

#define IDM_LAND    1001
#define IDM_SEA     1002
#define IDM_TREES   1003
#define IDM_FLOWERS 1004

:win.obj ץבוקה םע ותוא רשקל ךרטצנ ותוא ץירהל ידכב .תינכותה ץבוק הנה
//menus.cpp: Demonstration of a menu.
//           Link with win.obj and the resource-script-file menus.rc.

#include "win.h"
#include "menus.h"


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                   PSTR szCmdLine, int iCmdShow)
  { 
    win w(hInstance, iCmdShow, "menus", "menus: Example of a menu");
    w.wndclass.lpszMenuName = "ExampleMenu";
    return w.result();
  }


LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, 
                         WPARAM wParam, LPARAM lParam)
  { 
    switch (iMsg)
      { 
        case WM_COMMAND:
             switch (LOWORD(wParam))
               {
                 case IDM_LAND:
                      MessageBox (hWnd, "Horse, Dog, Cat",
                                  "Land", MB_OK);
                      break;
                 case IDM_SEA:
                      MessageBox (hWnd, "Fish, Shark,
                                  Alligator", "Sea", MB_OK);
                      break;
                 case IDM_TREES:
                      MessageBox (hWnd, "Some trees",
                                  "Trees", MB_OK);
                      break;
                 case IDM_FLOWERS:
                      MessageBox (hWnd, "Some flowers",
                      "Flowers", MB_OK);
                      break;
               }
             return 0;
       case WM_DESTROY:
            PostQuitMessage(0); return 0;
    }
   return DefWindowProc(hWnd, iMsg, wParam, lParam);
 }

:ךסמל אמגוד

.ונלש תינכותל WM_COMMAND תעדוה תחילשל תמרוג םיטירפתהמ דחא לע הציחל ,םיאור ונאש יפכ
.טירפתב היצפוא לכ רובע menus.rc ץבוקב רדגומה עובקה תא לבקמ LOWORD(wParam) רשאכ
וא הנוילעה הלימה תא איצוהל ידכב םיתנכתמ י"ע םילצונמ LOWORD-ו HIWORD םייורקאמה ןורקעכ
.טיב 32 תספות רשא (DWORD) הלופכ הלימב תאצמנש ,(טיב 16) הנותחתה
.ןווכתה שמתשמה ףיעס הזיאל וישכע קודבל ךרטצנ ,case WM_COMMAND י"ע טירפתל ונסנכנשכ
.טירפתה לש תונושה תויצפואה ןיב רורביש case דוע םייקל ךרטצנ ןכל
.המיאתמה העדוהה תא לבקנ LOWORD(wParam) ורקאמה י"ע

:הרהצהב טבה

w.wndclass.lpszMenuName = "ExampleMenu";

.menus.rc ץבוקב MENU הלימה ינפל טירפתה םש לע העיבצמ "ExampleMenu" תזורחמה
.טירפתל סחייתהל לכונ אלש םושמ וזה הרהצהה תא טימשהל ונל רוסא


:תינכותה רודיה

Borland C++ 5.0-ב
bcc32 -W menus win.obj
brc32 menus


Microsoft Visual C++ 5.0-ב
cl /c menus.cpp
rc -r menus.rc
link menus.obj win.obj menus.res user32.lib gdi32.lib