Rightclickmenu

Rightclickmenu
Rightclickmenu

This is a sample of an empty window with a rightclickmenu. Download the solution(MS Visual Studio.NET)
#define   STRICT

#include  <windows.h>
#include  <stdio.h>

#define     ID_CUT         1000
#define     ID_COPY        1001
#define     ID_PASTE       1002

LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
   CREATESTRUCT            *cs;
   HMENU                   hMenu;
   POINT                   p;
   char                    szText[64];
   // Menu-item identifiers
   static   char           szMenuItem[3][10] = {"Cut", "Copy", "Paste"};

   switch (iMsg)
   {
   case WM_CREATE :
      cs = (LPCREATESTRUCT)lParam;
      break;

   case WM_RBUTTONUP :
      p.x = LOWORD(lParam);
      p.y = HIWORD(lParam);
      hMenu = CreatePopupMenu();
      AppendMenu (hMenu, MF_STRING, ID_CUT,             "Cut");
      AppendMenu (hMenu, MF_STRING, ID_COPY,            "Copy");
      AppendMenu (hMenu, MF_STRING, ID_PASTE,           "Paste");
      ClientToScreen (hwnd, (LPPOINT)&p);
      TrackPopupMenu (hMenu, 0, p.x, p.y, 0, hwnd, NULL);
      DestroyMenu (hMenu);
      break;

   case WM_COMMAND :
      switch(LOWORD(wParam))
      {
      case ID_CUT :
      case ID_COPY :
      case ID_PASTE :
         sprintf(szText, "You chose %s", szMenuItem[LOWORD(wParam) - 1000]);
         MessageBox(hwnd, szText, "MenuApp", MB_OK);
         break;
      }
      break;

   case WM_CLOSE :
      DestroyWindow(hwnd);
      break;

   case WM_DESTROY :
      PostQuitMessage(0);
      break;
   }
   return DefWindowProc(hwnd, iMsg, wParam, lParam);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
   HWND        hwnd;
   MSG         msg;
   WNDCLASS    wndclass;
   char        szAppName[] = "RightclickMenuApp";

   wndclass.style         = 0;
   wndclass.lpfnWndProc   = WndProc;
   wndclass.cbClsExtra    = 0;
   wndclass.cbWndExtra    = 0;
   wndclass.hInstance     = hInstance;
   wndclass.hIcon         = LoadIcon(hInstance, szAppName);
   wndclass.hCursor       = LoadCursor(NULL, IDC_ARROW);
   wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
   wndclass.lpszMenuName  = szAppName;
   wndclass.lpszClassName = szAppName;
   RegisterClass(&wndclass);

   hwnd = CreateWindow(szAppName,
      szAppName,
      WS_OVERLAPPEDWINDOW | WS_VISIBLE,
      0, 0, 400, 400,
      NULL, NULL, hInstance, szCmdLine);

   while (GetMessage(&msg, NULL, 0, 0))
   {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }
   return (int)msg.wParam;
}
Articles
info@win32apicode.com