您的位置:首页 > 编程语言

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: