zoukankan      html  css  js  c++  java
  • windows代码

    // ICONDEMO.cpp : 定义应用程序的入口点。
    //
    #include "stdafx.h"
    #include "ICONDEMO.h"
    // 此代码模块中包含的函数的前向声明:
    LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
    //TCHAR szAppName[] = TEXT("PopPad2");
    int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
     _In_opt_ HINSTANCE hPrevInstance,
     _In_ LPWSTR    lpCmdLine,
     _In_ int       nCmdShow)
    {
     static TCHAR szAppName[] = TEXT("HexCalc");
     HWND hwnd;
     MSG  msg;
     WNDCLASS wndclass;
     wndclass.style = CS_HREDRAW | CS_VREDRAW;
     wndclass.lpfnWndProc = WndProc;
     wndclass.cbClsExtra = 0;
     wndclass.cbWndExtra = DLGWINDOWEXTRA;
     wndclass.hInstance = hInstance;
     wndclass.hIcon = LoadIcon(hInstance, szAppName);
     wndclass.hCursor = LoadCursor(nullptr, IDC_ARROW);
     wndclass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
     wndclass.lpszMenuName = NULL;
     wndclass.lpszClassName = szAppName;
     if (!RegisterClass(&wndclass))
     {
      MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName, MB_ICONERROR);
      return 0;
     }
     hwnd = CreateDialog(hInstance, szAppName, 0, NULL);;
     ShowWindow(hwnd, nCmdShow);
        // 主消息循环:
        while (GetMessage(&msg, nullptr, 0, 0))
        {
       TranslateMessage(&msg);
       DispatchMessage(&msg);    
        }
     return  msg.wParam;
    }
    void ShowNumber(HWND hwnd, UINT iNumber)
    {
     TCHAR szBuffer[20];
     wsprintf(szBuffer, TEXT("%X"), iNumber);
     SetDlgItemText(hwnd, VK_ESCAPE, szBuffer);
    }
    DWORD CalcIt(UINT iFirstNum, int iOperation, UINT iNum)
    {
     switch (iOperation)
     {
     case '=': return iNum;
     case '+': return iFirstNum + iNum;
     case '-': return iFirstNum - iNum;
     case '*': return iFirstNum *  iNum;
     case '&': return iFirstNum &  iNum;
     case '|': return iFirstNum | iNum;
     case '^': return iFirstNum ^  iNum;
     case '<': return iFirstNum << iNum;
     case '>': return iFirstNum >> iNum;
     case '/': return iNum ? iFirstNum / iNum : MAXDWORD;
     case '%': return iNum ? iFirstNum % iNum : MAXDWORD;
     default:return 0;
     }
    }
    //
    //  函数: WndProc(HWND, UINT, WPARAM, LPARAM)
    //
    //  目的:    处理主窗口的消息。
    //
    //  WM_COMMAND  - 处理应用程序菜单
    //  WM_PAINT    - 绘制主窗口
    //  WM_DESTROY  - 发送退出消息并返回
    //
    //
    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
     static BOOL bNewNumber = TRUE;
     static int iOperation = '=';
     static UINT iNumber, iFirstNum;
     HWND hButton;
        switch (message)
        {
     case WM_KEYDOWN:
      if (wParam != VK_LEFT)
       break;
      wParam = VK_BACK;
     case WM_CHAR:
      if ((wParam = (WPARAM)CharUpper((TCHAR*)wParam)) == VK_RETURN)
       wParam = '=';
      if (hButton = GetDlgItem(hwnd, wParam))
      {
       SendMessage(hButton, BM_SETSTATE, 1, 0);
       Sleep(100);
       SendMessage(hButton, BM_SETSTATE, 0, 0);
      }
      else
      {
       MessageBeep(0);
       break;
      }
     case WM_COMMAND:
      SetFocus(hwnd);
      if (LOWORD(wParam) == VK_BACK)
      {
       ShowNumber(hwnd, iNumber /= 16);
      }
      else if (LOWORD(wParam) == VK_ESCAPE)
      {
       ShowNumber(hwnd, iNumber = 0);
      }
      else if (isxdigit(LOWORD(wParam)))
      {
       if (bNewNumber)
       {
        iFirstNum = iNumber;
        iNumber = 0;
       }
       bNewNumber = FALSE;
       if (iNumber <= MAXDWORD >> 4)
       {
        ShowNumber(hwnd, iNumber = 16 * iNumber + wParam - (isdigit(wParam) ? '0' : 'A' - 10));
       }
       else
       {
        MessageBeep(0);
       }
      }
      else
      {
       if (!bNewNumber)
       {
        ShowNumber(hwnd, iNumber = CalcIt(iFirstNum, iOperation, iNumber));
       }
       bNewNumber = TRUE;
       iOperation = LOWORD(wParam);
      }
      return 0;
        case WM_DESTROY:
            PostQuitMessage(0);
      return 0; 
        }
     return DefWindowProc(hwnd, message, wParam, lParam);
    }
  • 相关阅读:
    LeetCode153 Find Minimum in Rotated Sorted Array. LeetCode162 Find Peak Element
    LeetCode208 Implement Trie (Prefix Tree). LeetCode211 Add and Search Word
    LeetCode172 Factorial Trailing Zeroes. LeetCode258 Add Digits. LeetCode268 Missing Number
    LeetCode191 Number of 1 Bits. LeetCode231 Power of Two. LeetCode342 Power of Four
    LeetCode225 Implement Stack using Queues
    LeetCode150 Evaluate Reverse Polish Notation
    LeetCode125 Valid Palindrome
    LeetCode128 Longest Consecutive Sequence
    LeetCode124 Binary Tree Maximum Path Sum
    LeetCode123 Best Time to Buy and Sell Stock III
  • 原文地址:https://www.cnblogs.com/xiaomi-daming/p/12904206.html
Copyright © 2011-2022 走看看