|
|
1.1 ! root 1: /**************************************************************************** ! 2: ! 3: PROGRAM: Icon.c ! 4: ! 5: PURPOSE: Demonstrates using an icon for the About box and minimize box ! 6: ! 7: FUNCTIONS: ! 8: ! 9: WinMain() - calls initialization function, processes message loop ! 10: InitApplication() - initializes window data and registers window ! 11: InitInstance() - saves instance handle and creates main window ! 12: MainWndProc() - processes messages ! 13: About() - processes messages for "About" dialog box ! 14: ! 15: ****************************************************************************/ ! 16: ! 17: #include "windows.h" ! 18: #include "icon.h" ! 19: ! 20: HANDLE hInst; ! 21: ! 22: ! 23: /**************************************************************************** ! 24: ! 25: FUNCTION: WinMain(HANDLE, HANDLE, LPSTR, int) ! 26: ! 27: PURPOSE: calls initialization function, processes message loop ! 28: ! 29: ****************************************************************************/ ! 30: ! 31: int APIENTRY WinMain( ! 32: HANDLE hInstance, ! 33: HANDLE hPrevInstance, ! 34: LPSTR lpCmdLine, ! 35: int nCmdShow ! 36: ) ! 37: { ! 38: MSG msg; ! 39: ! 40: UNREFERENCED_PARAMETER( lpCmdLine ); ! 41: ! 42: if (!hPrevInstance) ! 43: if (!InitApplication(hInstance)) ! 44: return (FALSE); ! 45: ! 46: if (!InitInstance(hInstance, nCmdShow)) ! 47: return (FALSE); ! 48: ! 49: while (GetMessage(&msg, NULL, NULL, NULL)) { ! 50: TranslateMessage(&msg); ! 51: DispatchMessage(&msg); ! 52: } ! 53: return (msg.wParam); ! 54: } ! 55: ! 56: ! 57: /**************************************************************************** ! 58: ! 59: FUNCTION: InitApplication(HANDLE) ! 60: ! 61: PURPOSE: Initializes window data and registers window class ! 62: ! 63: ****************************************************************************/ ! 64: ! 65: BOOL InitApplication(HANDLE hInstance) ! 66: { ! 67: WNDCLASS wc; ! 68: ! 69: wc.style = NULL; ! 70: wc.lpfnWndProc = (WNDPROC) MainWndProc; ! 71: wc.cbClsExtra = 0; ! 72: wc.cbWndExtra = 0; ! 73: wc.hInstance = hInstance; ! 74: wc.hIcon = LoadIcon(hInstance, "MyIcon"); /* loads icon */ ! 75: wc.hCursor = LoadCursor(NULL, IDC_ARROW); ! 76: wc.hbrBackground = GetStockObject(WHITE_BRUSH); ! 77: wc.lpszMenuName = "IconMenu"; ! 78: wc.lpszClassName = "IconWClass"; ! 79: ! 80: return (RegisterClass(&wc)); ! 81: } ! 82: ! 83: ! 84: /**************************************************************************** ! 85: ! 86: FUNCTION: InitInstance(HANDLE, int) ! 87: ! 88: PURPOSE: Saves instance handle and creates main window ! 89: ! 90: ****************************************************************************/ ! 91: ! 92: BOOL InitInstance( ! 93: HANDLE hInstance, ! 94: INT nCmdShow) ! 95: { ! 96: HWND hWnd; ! 97: ! 98: hInst = hInstance; ! 99: ! 100: hWnd = CreateWindow( ! 101: "IconWClass", ! 102: "Icon Sample Application", ! 103: WS_OVERLAPPEDWINDOW, ! 104: CW_USEDEFAULT, ! 105: CW_USEDEFAULT, ! 106: CW_USEDEFAULT, ! 107: CW_USEDEFAULT, ! 108: NULL, ! 109: NULL, ! 110: hInstance, ! 111: NULL ! 112: ); ! 113: ! 114: if (!hWnd) ! 115: return (FALSE); ! 116: ! 117: ShowWindow(hWnd, nCmdShow); ! 118: UpdateWindow(hWnd); ! 119: return (TRUE); ! 120: ! 121: } ! 122: ! 123: /**************************************************************************** ! 124: ! 125: FUNCTION: MainWndProc(HWND, unsigned, WORD, LONG) ! 126: ! 127: PURPOSE: Processes messages ! 128: ! 129: MESSAGES: ! 130: ! 131: WM_COMMAND - application menu (About dialog box) ! 132: WM_DESTROY - destroy window ! 133: ! 134: ****************************************************************************/ ! 135: ! 136: LONG APIENTRY MainWndProc( ! 137: HWND hWnd, ! 138: UINT message, ! 139: UINT wParam, ! 140: LONG lParam) ! 141: { ! 142: FARPROC lpProcAbout; ! 143: ! 144: switch (message) { ! 145: case WM_COMMAND: ! 146: if (LOWORD(wParam) == IDM_ABOUT) { ! 147: lpProcAbout = MakeProcInstance((FARPROC)About, hInst); ! 148: ! 149: DialogBox(hInst, ! 150: "AboutBox", ! 151: hWnd, ! 152: (WNDPROC)lpProcAbout); ! 153: ! 154: FreeProcInstance(lpProcAbout); ! 155: break; ! 156: } ! 157: else ! 158: return (DefWindowProc(hWnd, message, wParam, lParam)); ! 159: ! 160: case WM_DESTROY: ! 161: PostQuitMessage(0); ! 162: break; ! 163: ! 164: default: ! 165: return (DefWindowProc(hWnd, message, wParam, lParam)); ! 166: } ! 167: return (NULL); ! 168: } ! 169: ! 170: ! 171: /**************************************************************************** ! 172: ! 173: FUNCTION: About(HWND, unsigned, WORD, LONG) ! 174: ! 175: PURPOSE: Processes messages for "About" dialog box ! 176: ! 177: MESSAGES: ! 178: ! 179: WM_INITDIALOG - initialize dialog box ! 180: WM_COMMAND - Input received ! 181: ! 182: ****************************************************************************/ ! 183: ! 184: BOOL APIENTRY About( ! 185: HWND hDlg, ! 186: UINT message, ! 187: UINT wParam, ! 188: LONG lParam) ! 189: { ! 190: switch (message) { ! 191: case WM_INITDIALOG: ! 192: return (TRUE); ! 193: ! 194: case WM_COMMAND: ! 195: if (LOWORD(wParam) == IDOK ! 196: || LOWORD(wParam) == IDCANCEL) { ! 197: EndDialog(hDlg, TRUE); ! 198: return (TRUE); ! 199: } ! 200: break; ! 201: } ! 202: return (FALSE); ! 203: UNREFERENCED_PARAMETER(lParam); ! 204: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.