- Code/Resource
- Windows Develop
- Linux-Unix program
- Internet-Socket-Network
- Web Server
- Browser Client
- Ftp Server
- Ftp Client
- Browser Plugins
- Proxy Server
- Email Server
- Email Client
- WEB Mail
- Firewall-Security
- Telnet Server
- Telnet Client
- ICQ-IM-Chat
- Search Engine
- Sniffer Package capture
- Remote Control
- xml-soap-webservice
- P2P
- WEB(ASP,PHP,...)
- TCP/IP Stack
- SNMP
- Grid Computing
- SilverLight
- DNS
- Cluster Service
- Network Security
- Communication-Mobile
- Game Program
- Editor
- Multimedia program
- Graph program
- Compiler program
- Compress-Decompress algrithms
- Crypt_Decrypt algrithms
- Mathimatics-Numerical algorithms
- MultiLanguage
- Disk/Storage
- Java Develop
- assembly language
- Applications
- Other systems
- Database system
- Embeded-SCM Develop
- FlashMX/Flex
- source in ebook
- Delphi VCL
- OS Develop
- MiddleWare
- MPI
- MacOS develop
- LabView
- ELanguage
- Software/Tools
- E-Books
- Artical/Document
STATUS.C
Package: MSDN_VC98.zip [view]
Upload User: bangxh
Upload Date: 2007-01-31
Package Size: 42235k
Code Size: 9k
Category:
Windows Develop
Development Platform:
Visual C++
- /*************************************************************************
- **
- ** OLE 2.0 Sample Code
- **
- ** status.c
- **
- ** This file contains the window handlers, and various initialization
- ** and utility functions for an application status bar.
- **
- ** (c) Copyright Microsoft Corp. 1992 - 1996 All Rights Reserved
- **
- *************************************************************************/
- // Application specific include files
- #include "outline.h"
- #include "message.h"
- #include "status.h"
- // Current status message.
- static char lpszStatusMessage[256];
- // Window proc for status window.
- LRESULT FAR PASCAL StatusWndProc
- (HWND hwnd, unsigned message, WPARAM wParam, LPARAM lParam);
- // List of all constant messages.
- static STATMESG ControlList[2] =
- {
- { STATUS_READY, "Ready." },
- { STATUS_BLANK, " " }
- };
- // List of all system menu messages.
- static STATMESG SysMenuList[16] =
- {
- { SC_SIZE, "Change the size of the window." },
- { SC_MOVE, "Move the window." },
- { SC_MINIMIZE, "Make the window iconic." },
- { SC_MAXIMIZE, "Make the window the size of the screen." },
- { SC_NEXTWINDOW, "Activate the next window." },
- { SC_PREVWINDOW, "Activate the previous window." },
- { SC_CLOSE, "Close this window." },
- { SC_VSCROLL, "Vertical scroll?" },
- { SC_HSCROLL, "Horizontal scroll?" },
- { SC_MOUSEMENU, "A menu for mice." },
- { SC_KEYMENU, "A menu for keys (I guess)." },
- { SC_ARRANGE, "Arrange something." },
- { SC_RESTORE, "Make the window noramally sized." },
- { SC_TASKLIST, "Put up the task list dialog." },
- { SC_SCREENSAVE, "Save the screen! Run for your life!" },
- { SC_HOTKEY, "Boy, is this key hot!" }
- };
- // Message type for popup messages.
- typedef struct {
- HMENU hmenu;
- char string[MAX_MESSAGE];
- } STATPOPUP;
- // List of all popup messages.
- static STATPOPUP PopupList[NUM_POPUP];
- static UINT nCurrentPopup = 0;
- /* RegisterStatusClass
- * -------------------
- *
- * Creates classes for status window.
- *
- * HINSTANCE hInstance
- *
- * RETURNS: TRUE if class successfully registered.
- * FALSE otherwise.
- *
- * CUSTOMIZATION: Change class name.
- *
- */
- BOOL RegisterStatusClass(HINSTANCE hInstance)
- {
- WNDCLASS wc;
- wc.lpszClassName = "ObjStatus";
- wc.lpfnWndProc = StatusWndProc;
- wc.style = 0;
- wc.hInstance = hInstance;
- wc.hIcon = NULL;
- wc.cbClsExtra = 4;
- wc.cbWndExtra = 0;
- wc.lpszMenuName = NULL;
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- wc.hbrBackground = GetStockObject(LTGRAY_BRUSH);
- if (!RegisterClass(&wc))
- return FALSE;
- return TRUE;
- }
- /* CreateStatusWindow
- * ------------------
- *
- * Creates status window.
- *
- * HWND hwndMain
- *
- * RETURNS: HWND of status window if creation is successful.
- * NULL otherwise.
- *
- * CUSTOMIZATION: Change class name.
- *
- */
- HWND CreateStatusWindow(HWND hWndApp, HINSTANCE hInst)
- {
- RECT rect;
- int width, height;
- HWND hWndStatusBar;
- lstrcpy (lpszStatusMessage, ControlList[0].string);
- GetClientRect(hWndApp, &rect);
- width = rect.right - rect.left;
- height = rect.bottom - rect.top;
- hWndStatusBar = CreateWindow (
- "ObjStatus",
- "SvrStatus",
- WS_CHILD |
- WS_CLIPSIBLINGS |
- WS_VISIBLE,
- 0, height - STATUS_HEIGHT,
- width,
- STATUS_HEIGHT,
- hWndApp,
- NULL,
- hInst,
- NULL
- );
- return hWndStatusBar;
- }
- /* DestroyStatusWindow
- * -------------------
- *
- * Destroys status window.
- *
- * CUSTOMIZATION: None.
- *
- */
- void DestroyStatusWindow(HWND hWndStatusBar)
- {
- DestroyWindow(hWndStatusBar);
- }
- /* AssignPopupMessage
- * ------------------
- *
- * Associates a string with a popup menu handle.
- *
- * HMENU hmenuPopup
- * char *szMessage
- *
- * CUSTOMIZATION: None.
- *
- */
- void AssignPopupMessage(HMENU hmenuPopup, char *szMessage)
- {
- if (nCurrentPopup < NUM_POPUP) {
- PopupList[nCurrentPopup].hmenu = hmenuPopup;
- lstrcpy(PopupList[nCurrentPopup].string, szMessage);
- ++nCurrentPopup;
- }
- }
- /* SetStatusText
- * -------------
- *
- * Show the message in the status line.
- */
- void SetStatusText(HWND hWndStatusBar, LPSTR lpszMessage)
- {
- lstrcpy (lpszStatusMessage, lpszMessage);
- InvalidateRect (hWndStatusBar, (LPRECT)NULL, TRUE);
- UpdateWindow (hWndStatusBar);
- }
- /* GetItemMessage
- * --------------
- *
- * Retrieve the message associated with the given menu command item number.
- *
- * UINT wIDItem
- * LPVOID lpDoc
- *
- * CUSTOMIZATION: None.
- *
- */
- void GetItemMessage(UINT wIDItem, LPSTR FAR* lplpszMessage)
- {
- UINT i;
- *lplpszMessage = ControlList[1].string;
- for (i = 0; i < NUM_STATS; ++i) {
- if (wIDItem == MesgList[i].wIDItem) {
- *lplpszMessage = MesgList[i].string;
- break;
- }
- }
- }
- /* GetPopupMessage
- * ---------------
- *
- * Retrieve the message associated with the given popup menu.
- *
- * HMENU hmenuPopup
- * LPVOID lpDoc
- *
- * CUSTOMIZATION: None.
- *
- */
- void GetPopupMessage(HMENU hmenuPopup, LPSTR FAR* lplpszMessage)
- {
- UINT i;
- *lplpszMessage = ControlList[1].string;
- for (i = 0; i < nCurrentPopup; ++i) {
- if (hmenuPopup == PopupList[i].hmenu) {
- *lplpszMessage = PopupList[i].string;
- break;
- }
- }
- }
- /* GetSysMenuMessage
- * -----------------
- *
- * Retrieves the messages to correspond to items on the system menu.
- *
- *
- * UINT wIDItem
- * LPVOID lpDoc
- *
- * CUSTOMIZATION: None.
- *
- */
- void GetSysMenuMessage(UINT wIDItem, LPSTR FAR* lplpszMessage)
- {
- UINT i;
- *lplpszMessage = ControlList[1].string;
- for (i = 0; i < 16; ++i) {
- if (wIDItem == SysMenuList[i].wIDItem) {
- *lplpszMessage = SysMenuList[i].string;
- break;
- }
- }
- }
- /* GetControlMessage
- * -----------------
- *
- * Retrieves the general system messages.
- *
- *
- * STATCONTROL scCommand
- * LPVOID lpDoc
- *
- * CUSTOMIZATION: Add new messages.
- *
- */
- void GetControlMessage(STATCONTROL scCommand, LPSTR FAR* lplpszMessage)
- {
- UINT i;
- *lplpszMessage = ControlList[1].string;
- for (i = 0; i < 2; ++i) {
- if ((UINT)scCommand == ControlList[i].wIDItem) {
- *lplpszMessage = ControlList[i].string;
- break;
- }
- }
- }
- /* StatusWndProc
- * -------------
- *
- * Message handler for the statusbar window.
- *
- *
- * CUSTOMIZATION: None
- *
- */
- LRESULT FAR PASCAL StatusWndProc
- (HWND hwnd, unsigned message, WPARAM wParam, LPARAM lParam)
- {
- if (message == WM_PAINT) {
- RECT rc;
- HDC hdc;
- PAINTSTRUCT paintstruct;
- HPEN hpenOld;
- HPEN hpen;
- HFONT hfontOld;
- HFONT hfont;
- HPALETTE hpalOld = NULL;
- POINT point;
- BeginPaint (hwnd, &paintstruct);
- hdc = GetDC (hwnd);
- GetClientRect (hwnd, (LPRECT) &rc);
- hpenOld = SelectObject (hdc, GetStockObject (BLACK_PEN));
- MoveToEx (hdc, 0, 0, &point);
- LineTo (hdc, rc.right, 0);
- SelectObject (hdc, GetStockObject (WHITE_PEN));
- MoveToEx (hdc, STATUS_RRIGHT, STATUS_RTOP, &point);
- LineTo (hdc, STATUS_RRIGHT, STATUS_RBOTTOM);
- LineTo (hdc, STATUS_RLEFT-1, STATUS_RBOTTOM);
- hpen = CreatePen (PS_SOLID, 1, /* DKGRAY */ 0x00808080);
- SelectObject (hdc, hpen);
- MoveToEx (hdc, STATUS_RLEFT, STATUS_RBOTTOM-1, &point);
- LineTo (hdc, STATUS_RLEFT, STATUS_RTOP);
- LineTo (hdc, STATUS_RRIGHT, STATUS_RTOP);
- SetBkMode (hdc, TRANSPARENT);
- SetTextAlign (hdc, TA_LEFT | TA_TOP);
- hfont = CreateFont (STATUS_THEIGHT, 0, 0, 0, FW_NORMAL, FALSE, FALSE,
- FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS,
- CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
- DEFAULT_PITCH | FF_DONTCARE, "MS Sans Serif");
- hfontOld = SelectObject(hdc, hfont);
- TextOut (hdc, STATUS_TLEFT, STATUS_TTOP,
- lpszStatusMessage,
- lstrlen(lpszStatusMessage));
- // Restore original objects
- SelectObject (hdc, hfontOld);
- SelectObject (hdc, hpenOld);
- DeleteObject (hpen);
- DeleteObject (hfont);
- ReleaseDC (hwnd, hdc);
- EndPaint (hwnd, &paintstruct);
- return 0;
- }
- else {
- return DefWindowProc(hwnd, message, wParam, lParam);
- }
- }