ReactOS  0.4.13-dev-52-g0efcfec
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 
37 extern HINSTANCE hInst;
38 
41 
42 
44 
45 static TCHAR* items[] = {
46  _T("services"),
47  _T("event log"),
48  _T("workstation"),
49  _T("server")
50 };
51 
52 static void InitListCtrl(HWND hDlg)
53 {
54  TCHAR szBuffer[200];
55  int i;
56 
58 
59  _tcscpy(szBuffer, _T("foobar item"));
60  SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)szBuffer);
61 
62  for (i = 0; i < sizeof(items)/sizeof(items[0]); i++) {
63  _tcscpy(szBuffer, items[i]);
64  SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)szBuffer);
65  }
66 
69 }
70 
72 {
73 // int nItem;
74  TCHAR tchBuffer[BUFFER_LEN];
75 // HBITMAP hbmp;
76  TEXTMETRIC tm;
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.
91  hdcMem = CreateCompatibleDC(lpdis->hDC);
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));
104  DeleteDC(hdcMem);
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 
138 void 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 
HGDIOBJ WINAPI GetStockObject(_In_ int)
#define XBITMAP
Definition: page1.c:32
#define LB_SETCURSEL
Definition: winuser.h:2024
Definition: tftpd.h:59
#define TRUE
Definition: types.h:120
#define IDOK
Definition: winuser.h:824
#define LB_ADDSTRING
Definition: winuser.h:1992
void OnSetFont(HWND hWnd, WPARAM wParam, LPARAM lParam)
Definition: page1.c:125
struct tagDRAWITEMSTRUCT * LPDRAWITEMSTRUCT
#define LB_GETITEMDATA
Definition: winuser.h:2002
BOOL WINAPI DrawFocusRect(_In_ HDC, _In_ LPCRECT)
static HDC
Definition: imagelist.c:92
#define CALLBACK
Definition: compat.h:27
HWND hWnd
Definition: settings.c:17
LONG top
Definition: windef.h:292
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1497
_TCHAR * _tcscpy(_TCHAR *to, const _TCHAR *from)
Definition: tcscpy.h:8
LRESULT CALLBACK PageWndProc1(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: page1.c:151
HWND WINAPI SetFocus(_In_opt_ HWND)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
UINT_PTR WPARAM
Definition: windef.h:207
LONG left
Definition: windef.h:291
#define SWP_NOZORDER
Definition: winuser.h:1232
#define GetTextMetrics
Definition: wingdi.h:4452
LONG right
Definition: windef.h:293
#define ODA_FOCUS
Definition: winuser.h:2498
static VOID NTAPI BitBlt(IN ULONG Left, IN ULONG Top, IN ULONG Width, IN ULONG Height, IN PUCHAR Buffer, IN ULONG BitsPerPixel, IN ULONG Delta)
Definition: vga.c:416
WPARAM wParam
Definition: combotst.c:138
HFONT hFont
Definition: main.c:53
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
HBITMAP hbmpPicture
Definition: page1.c:39
LONG lfHeight
Definition: dimm.idl:42
static void OnDrawItem(HWND hWnd, LPARAM lParam)
Definition: page1.c:71
size_t __cdecl _tcslen(const _TCHAR *str)
Definition: tcslen.h:9
#define SYSTEM_FONT
Definition: wingdi.h:910
LONG_PTR LPARAM
Definition: windef.h:208
UINT flags
Definition: winuser.h:3536
HBITMAP hbmpOld
Definition: page1.c:40
static void InitListCtrl(HWND hDlg)
Definition: page1.c:52
char TCHAR
Definition: xmlstorage.h:189
#define ODA_DRAWENTIRE
Definition: winuser.h:2496
#define _T(x)
Definition: vfdio.h:22
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define SWP_NOACTIVATE
Definition: winuser.h:1227
#define WM_MEASUREITEM
Definition: winuser.h:1628
#define BUFFER_LEN
Definition: page1.c:35
#define GetObject
Definition: wingdi.h:4446
#define LB_GETTEXT
Definition: winuser.h:2010
Definition: time.h:76
#define WM_COMMAND
Definition: winuser.h:1716
void OnMeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
Definition: page1.c:138
BOOL WINAPI DeleteDC(_In_ HDC)
HINSTANCE hInst
Definition: dxdiag.c:13
#define IDC_LIST1
Definition: resource.h:13
#define YBITMAP
Definition: page1.c:33
unsigned int UINT
Definition: ndis.h:50
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
#define WM_SETFONT
Definition: winuser.h:1632
#define WM_DRAWITEM
Definition: winuser.h:1627
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
#define WM_WINDOWPOSCHANGED
Definition: winuser.h:1644
#define ODS_SELECTED
Definition: winuser.h:2499
#define SendMessage
Definition: winuser.h:5709
#define TextOut
Definition: wingdi.h:4461
LONG bottom
Definition: windef.h:294
#define SWP_NOMOVE
Definition: winuser.h:1229
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
static HBITMAP
Definition: button.c:44
#define IDCANCEL
Definition: winuser.h:825
HWND hwnd
Definition: winuser.h:3530
LONG_PTR LRESULT
Definition: windef.h:209
static TCHAR * items[]
Definition: page1.c:45
HWND hListBox
Definition: enumfonts.cpp:27
#define WM_INITDIALOG
Definition: winuser.h:1715
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82
#define SRCCOPY
Definition: wingdi.h:332
#define ODA_SELECT
Definition: winuser.h:2497
HDC hdcMem
Definition: welcome.c:104
#define SWP_NOOWNERZORDER
Definition: winuser.h:1234