home *** CD-ROM | disk | FTP | other *** search
- /*** Windows Application --- BITMAP example ***/
- /*** ***/
- /*** WBITMA-1 includes ***/
- /*** (1) WBITMA-1.C ***/
- /*** (2) WBITMA-1.DEF ***/
- /*** (3) WBITMAP.RES ***/
-
- #pragma hdrfile "windows.sym"
- #include <windows.h>
- #pragma hdrstop
-
- #include "wmenu.h"
- #include "bitstr.h"
-
- // Declaration
-
- void InitString(HANDLE) ;
- void InitCursor(HANDLE) ;
- void InitIcon(HANDLE) ;
- void InitBitmap(HANDLE) ;
-
- void InitFirstInstance(HANDLE) ;
- void InitEachInstance(HANDLE, int) ;
- long FAR PASCAL AppWndProc (HWND, WORD, WORD, LONG) ;
-
- void ChangeCursor(HWND, WORD *, WORD, int) ;
- void ChangeIcon(HWND, WORD *, WORD, int) ;
- void ChangeBitmap(HWND, WORD *, WORD, int) ;
-
- static char szAppName[12] ;
- static char szMenuName[12] ;
- static char szAccelName[12] ;
- static char szCursorName[3][12] ;
- static char szIconName[2][12] ;
- static char szBitmapName[3][12] ;
-
- HWND hwnd ;
-
- HCURSOR hCursor[3] ;
- HICON hIcon[2] ;
- HBITMAP hBitmap[3] ;
- HBRUSH hBrush[3] ;
-
- // Definition
-
- int PASCAL WinMain(HANDLE hInstance,
- HANDLE hPrevInstance,
- LPSTR lpszCmdLine,
- int nCmdShow)
- { HANDLE hAccel ;
- MSG msg ;
-
- InitString(hInstance) ;
- InitCursor(hInstance) ;
- InitIcon(hInstance) ;
- InitBitmap(hInstance) ;
-
- if ( !hPrevInstance ) InitFirstInstance(hInstance) ;
-
- InitEachInstance(hInstance,nCmdShow) ;
-
- hAccel = LoadAccelerators(hInstance, szAccelName) ;
-
- while ( GetMessage(&msg, NULL, 0, 0) )
- { if ( !TranslateAccelerator(hwnd, hAccel, &msg) )
- { TranslateMessage(&msg) ;
- DispatchMessage(&msg) ;
- }
- }
- return msg.wParam ;
- }
-
-
- void InitString(HANDLE hInstance)
- {
- LoadString(hInstance, IDS_APP, szAppName,11) ;
- LoadString(hInstance, IDS_MENU, szMenuName,11) ;
- LoadString(hInstance, IDS_ACCEL, szAccelName,11) ;
-
- LoadString(hInstance, IDS_CURSOR1, szCursorName[0],11) ;
- LoadString(hInstance, IDS_CURSOR2, szCursorName[1],11) ;
- LoadString(hInstance, IDS_CURSOR3, szCursorName[2],11) ;
-
- LoadString(hInstance, IDS_ICON1, szIconName[0],11) ;
- LoadString(hInstance, IDS_ICON2, szIconName[1],11) ;
-
- LoadString(hInstance, IDS_BITMAP1, szBitmapName[0],11) ;
- LoadString(hInstance, IDS_BITMAP2, szBitmapName[1],11) ;
- LoadString(hInstance, IDS_BITMAP3, szBitmapName[2],11) ;
- }
-
-
- void InitCursor(HANDLE hInstance)
- { int i ;
-
- for (i=0; i<3; i++)
- hCursor[i] = LoadCursor(hInstance, szCursorName[i]) ;
- }
-
- void InitIcon(HANDLE hInstance)
- { int i ;
-
- for (i=0; i<2; i++)
- hIcon[i] = LoadIcon(hInstance, szIconName[i]) ;
- }
-
- void InitBitmap(HANDLE hInstance)
- { int i ;
-
- for (i=0; i<3; i++)
- { hBitmap[i] = LoadBitmap(hInstance, szBitmapName[i]) ;
- hBrush[i] = CreatePatternBrush(hBitmap[i]) ;
- }
- }
-
-
- void InitFirstInstance(HANDLE hInstance)
- { WNDCLASS wndclass ;
-
- wndclass.style = CS_HREDRAW | CS_VREDRAW ;
- wndclass.lpfnWndProc = AppWndProc ;
- wndclass.cbClsExtra = 0 ;
- wndclass.cbWndExtra = 0 ;
- wndclass.hInstance = hInstance ;
- wndclass.hIcon = hIcon[0] ;
- wndclass.hCursor = hCursor[0] ;
- wndclass.hbrBackground = hBrush[0] ;
- wndclass.lpszMenuName = szMenuName ;
- wndclass.lpszClassName = szAppName ;
-
- RegisterClass(&wndclass) ;
- }
-
-
- void InitEachInstance(HANDLE hInstance, int nCmdShow)
- {
- hwnd = CreateWindow(szAppName, // window class name
- "Windows Application", // window caption
- WS_OVERLAPPEDWINDOW ,
- CW_USEDEFAULT, // initial x position
- 0, // initial y position
- CW_USEDEFAULT, // initial x length
- 0, // initial y length
- NULL, // parent window handle
- NULL, // window menu handle
- hInstance, // program instance handle
- NULL) ; // parameters
-
- ShowWindow(hwnd,nCmdShow) ;
- UpdateWindow(hwnd) ;
- }
-
-
- long FAR PASCAL AppWndProc (HWND hwnd,
- WORD message,
- WORD wParam,
- LONG lParam)
- { static WORD Cursor_Check = IDM_CURSOR1,
- Icon_Check = IDM_ICON1,
- Bitmap_Check = IDM_BITMAP1 ;
- int i ;
-
- switch (message)
- { case WM_COMMAND :
- switch(wParam)
- { case IDM_CURSOR1 :
- ChangeCursor(hwnd, &Cursor_Check, wParam, 0) ;
- break ;
-
- case IDM_CURSOR2 :
- ChangeCursor(hwnd, &Cursor_Check, wParam, 1) ;
- break ;
-
- case IDM_CURSOR3 :
- ChangeCursor(hwnd, &Cursor_Check, wParam, 2) ;
- break ;
-
- case IDM_ICON1 :
- ChangeIcon(hwnd, &Icon_Check, wParam, 0) ;
- break ;
-
- case IDM_ICON2 :
- ChangeIcon(hwnd, &Icon_Check, wParam, 1) ;
- break ;
-
- case IDM_BITMAP1 :
- ChangeBitmap(hwnd, &Bitmap_Check, wParam, 0) ;
- break ;
-
- case IDM_BITMAP2 :
- ChangeBitmap(hwnd, &Bitmap_Check, wParam, 1) ;
- break ;
-
- case IDM_BITMAP3 :
- ChangeBitmap(hwnd, &Bitmap_Check, wParam, 2) ;
- break ;
- }
- break ;
-
- case WM_DESTROY :
- for (i=0; i<3; i++)
- { DeleteObject(hBitmap[i]) ;
- DeleteObject(hBrush[i]) ;
- }
- PostQuitMessage(0) ;
- break ;
-
- default :
- return DefWindowProc(hwnd, message, wParam, lParam) ;
- }
-
- return 0L ;
- }
-
-
- void ChangeCursor(HWND hwnd, WORD *wPrev, WORD wParam, int i)
- { HMENU hMenu = GetMenu(hwnd) ;
-
- SetClassWord(hwnd, GCW_HCURSOR, hCursor[i]) ;
- CheckMenuItem(hMenu, *wPrev, MF_UNCHECKED) ;
- CheckMenuItem(hMenu, wParam, MF_CHECKED) ;
- *wPrev = wParam ;
- }
-
- void ChangeIcon(HWND hwnd, WORD *wPrev, WORD wParam, int i)
- { HMENU hMenu = GetMenu(hwnd) ;
-
- SetClassWord(hwnd, GCW_HICON, hIcon[i]) ;
- CheckMenuItem(hMenu, *wPrev, MF_UNCHECKED) ;
- CheckMenuItem(hMenu, wParam, MF_CHECKED) ;
- *wPrev = wParam ;
- }
-
- void ChangeBitmap(HWND hwnd, WORD *wPrev, WORD wParam, int i)
- { HMENU hMenu = GetMenu(hwnd) ;
-
- SetClassWord(hwnd, GCW_HBRBACKGROUND, hBrush[i]) ;
- CheckMenuItem(hMenu, *wPrev, MF_UNCHECKED) ;
- CheckMenuItem(hMenu, wParam, MF_CHECKED) ;
- *wPrev = wParam ;
- }
-