Windows环境下32位汇编程序设计C版code--第五章(二)
2011-02-24 14:11
447 查看
(二)图标和光标
#include <windows.h> #include "Resource.h" TCHAR szName[] = TEXT("Icon and Cursor Example"); HICON hIconBig, hIconSmall; HCURSOR hCur1, hCur2; HMENU hMenu; HINSTANCE hInst; LRESULT CALLBACK ProcWinMain(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_CREATE: hIconBig = LoadIcon(hInst, MAKEINTRESOURCE(IDI_BIG)); hIconSmall = LoadIcon(hInst, MAKEINTRESOURCE(IDI_SMALL)); hCur1 = LoadCursorFromFile(TEXT("1.ANI")); hCur2 = LoadCursor(hInst, MAKEINTRESOURCE(IDC_CURSOR)); SendMessage(hWnd, WM_COMMAND, IDM_BIG, 0); SendMessage(hWnd, WM_COMMAND, IDM_CUR1, 0); return 0; case WM_COMMAND: switch(LOWORD(wParam)) { case IDM_EXIT: DestroyWindow(hWnd); PostQuitMessage(0); return 0; case IDM_BIG: CheckMenuRadioItem(hMenu, IDM_BIG, IDM_SMALL, IDM_BIG, MF_BYCOMMAND); SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM)hIconBig); return 0; case IDM_SMALL: CheckMenuRadioItem(hMenu, IDM_BIG, IDM_SMALL, IDM_SMALL, MF_BYCOMMAND); SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM)hIconSmall); return 0; case IDM_CUR1: CheckMenuRadioItem(hMenu, IDM_CUR1, IDM_CUR2, IDM_CUR1, MF_BYCOMMAND); SetClassLong(hWnd, GCL_HCURSOR, (LONG)hCur1); return 0; case IDM_CUR2: CheckMenuRadioItem(hMenu, IDM_CUR1, IDM_CUR2, IDM_CUR2, MF_BYCOMMAND); SetClassLong(hWnd, GCL_HCURSOR, (LONG)hCur2); return 0; } break; case WM_CLOSE: DestroyWindow(hWnd); PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, uMsg, wParam, lParam); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { WNDCLASSEX stWndCls; MSG stMsg; HWND hMainWnd; hInst = hInstance; hMenu = LoadMenu(hInstance, MAKEINTRESOURCE(IDM_MAIN)); RtlZeroMemory(&stWndCls, sizeof(stWndCls)); stWndCls.cbWndExtra = 0; stWndCls.cbClsExtra = 0; stWndCls.hInstance = hInst; stWndCls.cbSize = sizeof(WNDCLASSEX); stWndCls.style = CS_HREDRAW | CS_VREDRAW; stWndCls.lpfnWndProc = ProcWinMain; stWndCls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); stWndCls.lpszClassName = szName; stWndCls.lpszMenuName = NULL; RegisterClassEx(&stWndCls); hMainWnd = CreateWindowEx(WS_EX_CLIENTEDGE, szName, szName, WS_OVERLAPPEDWINDOW, 500, 200, 300, 185, NULL, hMenu, hInstance, NULL); ShowWindow(hMainWnd, SW_SHOWNORMAL); UpdateWindow(hMainWnd); while(GetMessage(&stMsg, NULL, 0, 0)) { TranslateMessage(&stMsg); DispatchMessage(&stMsg); } return stMsg.wParam; }
相关文章推荐
- Windows环境下32位汇编程序设计C版code--第五章(一)
- Windows环境下32位汇编程序设计C版code--第五章(三)
- Windows环境下32位汇编程序设计C版code--第四章
- Windows 环境下32位汇编语言程序设计 Makefile文件定义
- Windows环境下32位汇编语言程序设计第三版学习笔记之一
- Windows环境下32位汇编语言程序设计
- Windows下32位汇编程序环境搭建
- windows环境下32位汇编----第8章 通用对话框
- Windows 32位汇编编程环境搭建教程(MASM32 SDK)
- Windows环境下vscode-go安装笔记(不支持32位)
- windows下32位汇编语言学习笔记 第二章 准备编程环境
- Windows下32位汇编程序环境搭建
- go windows 32位环境搭建
- windows下的Code::Blocks + minGW + wxWidgets 开发环境搭建
- windows下32位汇编语言学习笔记 第四章 第一个窗口程序 1 (消息的使用和入口代码)
- Windows汇编语言开发环境
- windows下32位汇编语言学习笔记
- windows下 Codeblocks 搭建 Objective-c 开发环境
- [置顶] 【VSCode】Windows下VSCode便携式c/c++环境【更新】
- windows下的Code::Blocks + minGW + wxWidgets 开发环境搭建