ReactOS 0.4.16-dev-91-g764881a
page1.c
Go to the documentation of this file.
1/*
2 * ReactOS Standard Dialog Application Template
3 *
4 * page1.c
5 *
6 * Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 */
22
23#define WIN32_LEAN_AND_MEAN
24#include <windows.h>
25#include <commctrl.h>
26#include <tchar.h>
27#include <assert.h>
28#include "resource.h"
29#include "trace.h"
30
31
32#define XBITMAP 80
33#define YBITMAP 20
34
35#define BUFFER_LEN MAX_PATH
36
37extern HINSTANCE hInst;
38
41
42
44
45static TCHAR* items[] = {
46 _T("services"),
47 _T("event log"),
48 _T("workstation"),
49 _T("server")
50};
51
52static void InitListCtrl(HWND hDlg)
53{
54 TCHAR szBuffer[200];
55 int i;
56
58
59 _tcscpy(szBuffer, _T("foobar item"));
61
62 for (i = 0; i < sizeof(items)/sizeof(items[0]); i++) {
63 _tcscpy(szBuffer, items[i]);
65 }
66
69}
70
72{
73// int nItem;
74 TCHAR tchBuffer[BUFFER_LEN];
75// HBITMAP hbmp;
77 int y;
78 HDC hdcMem;
79 LPDRAWITEMSTRUCT lpdis;
80 RECT rcBitmap;
81
82 lpdis = (LPDRAWITEMSTRUCT)lParam;
83 // If there are no list box items, skip this message.
84 if (lpdis->itemID != -1) {
85 // Draw the bitmap and text for the list box item. Draw a rectangle around the bitmap if it is selected.
86 switch (lpdis->itemAction) {
87 case ODA_SELECT:
88 case ODA_DRAWENTIRE:
89 // Display the bitmap associated with the item.
93 BitBlt(lpdis->hDC,
94 lpdis->rcItem.left, lpdis->rcItem.top,
95 lpdis->rcItem.right - lpdis->rcItem.left,
96 lpdis->rcItem.bottom - lpdis->rcItem.top,
97 hdcMem, 0, 0, SRCCOPY);
98 // Display the text associated with the item.
99 SendMessage(lpdis->hwndItem, LB_GETTEXT, lpdis->itemID, (LPARAM)tchBuffer);
100 GetTextMetrics(lpdis->hDC, &tm);
101 y = (lpdis->rcItem.bottom + lpdis->rcItem.top - tm.tmHeight) / 2;
102 TextOut(lpdis->hDC, XBITMAP + 6, y, tchBuffer, _tcslen(tchBuffer));
105 // Is the item selected?
106 if (lpdis->itemState & ODS_SELECTED) {
107 // Set RECT coordinates to surround only the bitmap.
108 rcBitmap.left = lpdis->rcItem.left;
109 rcBitmap.top = lpdis->rcItem.top;
110 rcBitmap.right = lpdis->rcItem.left + XBITMAP;
111 rcBitmap.bottom = lpdis->rcItem.top + YBITMAP;
112 // Draw a rectangle around bitmap to indicate the selection.
113 DrawFocusRect(lpdis->hDC, &rcBitmap);
114 }
115 break;
116 case ODA_FOCUS:
117 // Do not process focus changes. The focus caret (outline rectangle)
118 // indicates the selection. The IDOK button indicates the final selection.
119 break;
120 }
121 }
122}
123
124
126{
127 RECT rc;
128 WINDOWPOS wp;
129
130 GetWindowRect(hWnd, &rc);
131 wp.hwnd = hWnd;
132 wp.cx = rc.right - rc.left;
133 wp.cy = rc.bottom - rc.top;
136}
137
138void OnMeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
139{
140 HFONT hFont;
141 LOGFONT lf;
142
144 GetObject(hFont, sizeof(LOGFONT), &lf);
145 if (lf.lfHeight < 0)
146 lpMeasureItemStruct->itemHeight = -lf.lfHeight;
147 else
148 lpMeasureItemStruct->itemHeight = lf.lfHeight;
149}
150
152{
153 switch (message) {
154 case WM_INITDIALOG:
155 InitListCtrl(hDlg);
156 return TRUE;
157 case WM_SETFONT:
158 OnSetFont(hDlg, wParam, lParam);
159 return TRUE;
160 case WM_MEASUREITEM:
162 return TRUE;
163 case WM_DRAWITEM:
164 OnDrawItem(hDlg, lParam);
165 return TRUE;
166 case WM_COMMAND:
167 switch (LOWORD(wParam)) {
168 case IDOK:
169 case IDCANCEL:
170 break;
171 }
172 break;
173 }
174 return 0;
175}
176
HWND hWnd
Definition: settings.c:17
HFONT hFont
Definition: main.c:53
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define TRUE
Definition: types.h:120
#define CALLBACK
Definition: compat.h:35
static VOID BitBlt(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_reads_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG BitsPerPixel, _In_ ULONG Delta)
Definition: common.c:57
HWND hListBox
Definition: enumfonts.cpp:27
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define _tcscpy
Definition: tchar.h:623
#define IDC_LIST1
Definition: resource.h:13
static HBITMAP
Definition: button.c:44
static HDC
Definition: imagelist.c:88
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
unsigned int UINT
Definition: ndis.h:50
LRESULT CALLBACK PageWndProc1(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: page1.c:151
static void OnDrawItem(HWND hWnd, LPARAM lParam)
Definition: page1.c:71
HINSTANCE hInst
Definition: dxdiag.c:13
#define BUFFER_LEN
Definition: page1.c:35
HBITMAP hbmpOld
Definition: page1.c:40
#define XBITMAP
Definition: page1.c:32
void OnSetFont(HWND hWnd, WPARAM wParam, LPARAM lParam)
Definition: page1.c:125
void OnMeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
Definition: page1.c:138
static void InitListCtrl(HWND hDlg)
Definition: page1.c:52
#define YBITMAP
Definition: page1.c:33
HBITMAP hbmpPicture
Definition: page1.c:39
static TCHAR * items[]
Definition: page1.c:45
#define LOWORD(l)
Definition: pedump.c:82
LONG lfHeight
Definition: dimm.idl:42
HWND hwnd
Definition: winuser.h:3591
UINT flags
Definition: winuser.h:3597
Definition: tftpd.h:60
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
Definition: time.h:68
#define _T(x)
Definition: vfdio.h:22
HDC hdcMem
Definition: welcome.c:104
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
HGDIOBJ WINAPI GetStockObject(_In_ int)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1546
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
#define SRCCOPY
Definition: wingdi.h:333
#define SYSTEM_FONT
Definition: wingdi.h:911
#define GetObject
Definition: wingdi.h:4468
BOOL WINAPI DeleteDC(_In_ HDC)
#define GetTextMetrics
Definition: wingdi.h:4474
#define TextOut
Definition: wingdi.h:4483
struct tagDRAWITEMSTRUCT * LPDRAWITEMSTRUCT
#define ODS_SELECTED
Definition: winuser.h:2548
#define SWP_NOACTIVATE
Definition: winuser.h:1245
#define LB_GETITEMDATA
Definition: winuser.h:2044
#define ODA_DRAWENTIRE
Definition: winuser.h:2545
#define IDCANCEL
Definition: winuser.h:834
#define LB_GETTEXT
Definition: winuser.h:2052
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define SWP_NOMOVE
Definition: winuser.h:1247
#define WM_COMMAND
Definition: winuser.h:1743
#define ODA_FOCUS
Definition: winuser.h:2547
#define WM_INITDIALOG
Definition: winuser.h:1742
#define LB_ADDSTRING
Definition: winuser.h:2034
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDOK
Definition: winuser.h:833
#define WM_DRAWITEM
Definition: winuser.h:1648
HWND WINAPI SetFocus(_In_opt_ HWND)
#define WM_SETFONT
Definition: winuser.h:1653
#define SendMessage
Definition: winuser.h:5855
#define WM_MEASUREITEM
Definition: winuser.h:1649
#define ODA_SELECT
Definition: winuser.h:2546
#define SWP_NOOWNERZORDER
Definition: winuser.h:1252
#define LB_SETCURSEL
Definition: winuser.h:2066
BOOL WINAPI DrawFocusRect(_In_ HDC, _In_ LPCRECT)
#define SWP_NOZORDER
Definition: winuser.h:1250
#define WM_WINDOWPOSCHANGED
Definition: winuser.h:1665
char TCHAR
Definition: xmlstorage.h:189
#define _tcslen
Definition: xmlstorage.h:198