Win32 api编程模板和 加速键编程例子
2014-03-13 15:51
281 查看
A 加速键编写过程 1)在资源中刚添加 Accelerator, 然后再资源编辑器中编辑 格式: 加速键ID ACCELERATORS BEGIN 键名, 命令ID, [,类型] [,选项] …… END // 用Ctrl+F1键控制 file open IDC_PEDUMP ACCELERATORS BEGIN VK_F1, IDM_FILE_OPEN, VIRTKEY, CONTROL, NOINVERT END 程序实现: HACCEL hAccelTable; hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_PEDUMP)); while(GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } ////////////////////////////////////////////////////////////////////////////////////////// Win32 api编程模板 // PEDump.h #pragma once #ifndef WINVER // Specifies that the minimum required platform is Windows Vista. #define WINVER 0x0600 // Change this to the appropriate value to target other versions of Windows. #endif #ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista. #define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows. #endif #ifndef _WIN32_WINDOWS // Specifies that the minimum required platform is Windows 98. #define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. #endif #ifndef _WIN32_IE // Specifies that the minimum required platform is Internet Explorer 7.0. #define _WIN32_IE 0x0700 // Change this to the appropriate value to target other versions of IE. #endif #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers // Windows Header Files: #include <windows.h> // C RunTime Header Files #include <stdlib.h> #include <malloc.h> #include <memory.h> #include <tchar.h> ///////////////////////////////////////////////////// // resource.h #define IDS_CAPTION 101 #define IDS_CLASSNAME 102 #define IDI_PEDUMP 103 #define IDR_MENU_PEDUMP 104 #define IDR_ACCELERATOR1 105 #define ID_FILE_OPEN40001 40001 #define ID_FILE_EXIT 40002 #define ID_HELP_ABOUT 40003 #define IDM_HELP_ABOUT 40004 #define IDM_FILE_OPEN 40005 #define IDM_FILE_EXIT 40006 #define IDC_PEDUMP 40007 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 106 #define _APS_NEXT_COMMAND_VALUE 40009 #define _APS_NEXT_CONTROL_VALUE 1001 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif PEDump.cpp #include "PEDump.h" #include "resource.h" #define MAX_STR_CAPTION 100 TCHAR szTitle[MAX_STR_CAPTION]; TCHAR szWinClass[MAX_STR_CAPTION]; ATOM RegisterClass(HINSTANCE hInstance); LRESULT CALLBACK PEDumpWndProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); BOOL InitInstance(HINSTANCE hInstance, int nCmdShow); int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { MSG msg; HACCEL hAccelTable; LoadString(hInstance,IDS_CAPTION,szTitle, MAX_STR_CAPTION); if (RegisterClass(hInstance) == 0) { return FALSE; } if (!InitInstance(hInstance, nCmdShow)) { return FALSE; } hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_PEDUMP)); while(GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return 0; } ATOM RegisterClass(HINSTANCE hInstance) { WNDCLASSEX winClass; LoadString(hInstance, IDS_CLASSNAME, szWinClass, MAX_STR_CAPTION); winClass.cbSize = sizeof(WNDCLASSEX); winClass.style = CS_HREDRAW | CS_VREDRAW; winClass.lpfnWndProc = PEDumpWndProc; winClass.cbClsExtra = 0; winClass.cbWndExtra = 0; winClass.hInstance = hInstance; winClass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_PEDUMP)); winClass.hCursor = LoadCursor(NULL, IDC_ARROW); winClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); winClass.lpszMenuName = MAKEINTRESOURCE(IDR_MENU_PEDUMP); winClass.lpszClassName = szWinClass; winClass.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_PEDUMP)); return RegisterClassEx(&winClass); } LRESULT CALLBACK PEDumpWndProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; switch(Msg) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); switch(wmId) { case IDM_FILE_OPEN: MessageBox(NULL, L"Open", L"Open",NULL); break; case IDM_FILE_EXIT: DestroyWindow(hWnd); break; case IDM_HELP_ABOUT: break; default: return DefWindowProc(hWnd, Msg,wParam,lParam); } break; case WM_PAINT: hdc = BeginPaint(hWnd,&ps); EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, Msg,wParam,lParam); } return 0; } BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWND hWnd; hWnd = CreateWindow(szWinClass,szTitle,WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL); int err = GetLastError(); if (NULL == hWnd) { return FALSE; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; }
相关文章推荐
- Win32 API 窗口编程模板
- win32 api 编程
- Win32 API编程:显示系统进程列表
- C# win32 API编程(超详细) (转载)
- C# win32 API编程(超详细) (转载)
- 深入浅出VC++串口编程之基于Win32 API
- pb7下使用几个Win32 API 的例子
- Win32 API编程:WinMain无法重载函数或_tWinMain无法重载
- WIN32 API 串口编程
- 面向对象的Windows编程实战(上)(使用C++和Win32 API)
- 深入浅出串口编程(3)――基于WIN32 API的串口编程
- Win32 API多线程编程例程
- 多线程编程win32 API
- Win32 API编程简介Demo程序
- Win32 API串口编程
- Win32编程API 基础篇 -- 5.使用资源
- Win32 API 多线程编程——一个简单实例(含消息参数传递)
- wparam,lparam在WIN32 API编程中的具体意义
- Win32 API编程简介Demo程序
- 深入浅出VC++串口编程之基于Win32 API