|
|
1.1 ! root 1: /*------------------------------------ ! 2: GRAFMENU.C -- A Menu with Graphics ! 3: ------------------------------------*/ ! 4: ! 5: #define INCL_WIN ! 6: #define INCL_GPI ! 7: #include <os2.h> ! 8: #include "grafmenu.h" ! 9: ! 10: MRESULT EXPENTRY ClientWndProc (HWND, USHORT, MPARAM, MPARAM) ; ! 11: ! 12: CHAR szClientClass[] = "GrafMenu" ; ! 13: ! 14: int main (void) ! 15: { ! 16: static ULONG flFrameFlags = FCF_TITLEBAR | FCF_SYSMENU | ! 17: FCF_SIZEBORDER | FCF_MINMAX | ! 18: FCF_SHELLPOSITION | FCF_TASKLIST | ! 19: FCF_MENU ; ! 20: HAB hab ; ! 21: HMQ hmq ; ! 22: HWND hwndFrame, hwndClient ; ! 23: QMSG qmsg ; ! 24: ! 25: hab = WinInitialize (0) ; ! 26: hmq = WinCreateMsgQueue (hab, 0) ; ! 27: ! 28: WinRegisterClass (hab, szClientClass, ClientWndProc, 0L, 0) ; ! 29: ! 30: hwndFrame = WinCreateStdWindow (HWND_DESKTOP, WS_VISIBLE, ! 31: &flFrameFlags, szClientClass, NULL, ! 32: 0L, NULL, ID_RESOURCE, &hwndClient) ; ! 33: ! 34: WinSendMsg (hwndFrame, WM_SETICON, ! 35: WinQuerySysPointer (HWND_DESKTOP, SPTR_APPICON, FALSE), ! 36: NULL) ; ! 37: ! 38: while (WinGetMsg (hab, &qmsg, NULL, 0, 0)) ! 39: WinDispatchMsg (hab, &qmsg) ; ! 40: ! 41: WinDestroyWindow (hwndFrame) ; ! 42: WinDestroyMsgQueue (hmq) ; ! 43: WinTerminate (hab) ; ! 44: return 0 ; ! 45: } ! 46: ! 47: MRESULT EXPENTRY ClientWndProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2) ! 48: { ! 49: static MENUITEM miBigHelp = { 0, // iPosition ! 50: MIS_BITMAP | MIS_HELP, // afStyle ! 51: 0, // afAttribute ! 52: IDM_HELP, // id ! 53: NULL, // hwndSubMenu ! 54: NULL } ; // hItem ! 55: FONTMETRICS fm ; ! 56: HBITMAP hbm ; ! 57: HPS hps ; ! 58: HWND hwndMenu ; ! 59: ! 60: switch (msg) ! 61: { ! 62: case WM_CREATE: ! 63: ! 64: /*---------------------- ! 65: Load bitmap resource ! 66: ----------------------*/ ! 67: ! 68: hps = WinGetPS (hwnd) ; ! 69: GpiQueryFontMetrics (hps, (LONG) sizeof fm, &fm) ; ! 70: hbm = GpiLoadBitmap (hps, NULL, IDB_BIGHELP, ! 71: 64 * fm.lAveCharWidth / 3, ! 72: 64 * fm.lMaxBaselineExt / 8) ; ! 73: WinReleasePS (hps) ; ! 74: ! 75: /*----------------------- ! 76: Attach bitmap to menu ! 77: -----------------------*/ ! 78: ! 79: miBigHelp.hItem = (ULONG) hbm ; ! 80: ! 81: hwndMenu = WinWindowFromID ( ! 82: WinQueryWindow (hwnd, QW_PARENT, FALSE), ! 83: FID_MENU) ; ! 84: ! 85: WinSendMsg (hwndMenu, MM_SETITEM, ! 86: MPFROM2SHORT (0, TRUE), MPFROMP (&miBigHelp)) ; ! 87: return 0 ; ! 88: ! 89: case WM_COMMAND: ! 90: switch (COMMANDMSG(&msg)->cmd) ! 91: { ! 92: case IDM_NEW: ! 93: case IDM_OPEN: ! 94: case IDM_SAVE: ! 95: case IDM_SAVEAS: ! 96: case IDM_ABOUT: ! 97: WinAlarm (HWND_DESKTOP, WA_NOTE) ; ! 98: return 0 ; ! 99: } ! 100: break ; ! 101: ! 102: case WM_HELP: ! 103: WinMessageBox (HWND_DESKTOP, hwnd, ! 104: "Help not yet implemented", ! 105: szClientClass, 0, MB_OK | MB_ICONEXCLAMATION) ; ! 106: return 0 ; ! 107: ! 108: case WM_ERASEBACKGROUND: ! 109: return 1 ; ! 110: } ! 111: return WinDefWindowProc (hwnd, msg, mp1, mp2) ; ! 112: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.