1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_fpicker.hxx"
26
27 #ifndef _DIALOGCUSTOMCONTROLS_CXX_
28 #include "dialogcustomcontrols.hxx"
29 #endif
30 #include <osl/diagnose.h>
31
32 //-----------------------------------
33 //
34 //-----------------------------------
35
CDialogCustomControlBase(HWND aControlHandle,HWND aParentHandle)36 CDialogCustomControlBase::CDialogCustomControlBase(HWND aControlHandle, HWND aParentHandle) :
37 m_CustomControlHandle(aControlHandle),
38 m_ParentHandle(aParentHandle)
39 {
40 }
41
42 //-----------------------------------
43 //
44 //-----------------------------------
45
SetFont(HFONT hFont)46 void SAL_CALL CDialogCustomControlBase::SetFont(HFONT hFont)
47 {
48 SendMessage(
49 m_CustomControlHandle,
50 WM_SETFONT,
51 (WPARAM)hFont,
52 (LPARAM)sal_True);
53 }
54
55 //-----------------------------------
56 //
57 //-----------------------------------
58
AlignToBuddy(HWND aBuddyHandle)59 void SAL_CALL CDialogCustomControlBase::AlignToBuddy(HWND aBuddyHandle)
60 {
61 OSL_PRECOND(IsWindow(aBuddyHandle),"Invalid buddy window handle");
62
63 RECT rcBuddy;
64 GetWindowRect(aBuddyHandle,&rcBuddy);
65
66 POINT pt = {rcBuddy.left,rcBuddy.top};
67 ScreenToClient(m_ParentHandle,&pt);
68
69 int cx_new = rcBuddy.right - rcBuddy.left;
70 int cy_new = rcBuddy.bottom - rcBuddy.top;
71
72 // keep the vertical position because
73 // the Windows dialog controler does
74 // this job
75 RECT rcMe;
76 GetWindowRect(m_CustomControlHandle,&rcMe);
77
78 POINT ptMe = {rcMe.left,rcMe.top};
79 ScreenToClient(m_ParentHandle,&ptMe);
80
81 SetWindowPos(
82 m_CustomControlHandle,
83 HWND_TOP,
84 pt.x,
85 ptMe.y,
86 cx_new,
87 cy_new,
88 SWP_NOACTIVATE);
89 }
90
91 //-----------------------------------
92 //
93 //-----------------------------------
94
CDummyCustomControl(HWND,HWND)95 CDummyCustomControl::CDummyCustomControl(HWND, HWND)
96 {
97 }
98
99 //-----------------------------------
100 //
101 //-----------------------------------
102
Align()103 void SAL_CALL CDummyCustomControl::Align()
104 {
105 // do nothing
106 }
107
108 //-----------------------------------
109 //
110 //-----------------------------------
111
SetFont(HFONT)112 void SAL_CALL CDummyCustomControl::SetFont(HFONT)
113 {
114 // do nothing
115 }
116
117 //-----------------------------------
118 //
119 //-----------------------------------
120
CStaticCustomControl(HWND aControlHandle,HWND aParentHandle)121 CStaticCustomControl::CStaticCustomControl(HWND aControlHandle, HWND aParentHandle) :
122 CDialogCustomControlBase(aControlHandle,aParentHandle)
123 {
124 }
125
126 //-----------------------------------
127 // Align to the "File name" static
128 // text of the standard FileOpen dlg
129 //-----------------------------------
130
Align()131 void SAL_CALL CStaticCustomControl::Align()
132 {
133 AlignToBuddy(GetDlgItem(m_ParentHandle,stc3));
134 }
135
136 //-----------------------------------
137 //
138 //-----------------------------------
139
CPushButtonCustomControl(HWND aControlHandle,HWND aParentHandle)140 CPushButtonCustomControl::CPushButtonCustomControl(HWND aControlHandle, HWND aParentHandle) :
141 CDialogCustomControlBase(aControlHandle,aParentHandle)
142 {
143 }
144
145 //-----------------------------------
146 // Align to the "OK" button of the
147 // standard FileOpen dlg
148 //-----------------------------------
149
Align()150 void SAL_CALL CPushButtonCustomControl::Align()
151 {
152 AlignToBuddy(GetDlgItem(m_ParentHandle,IDCANCEL));
153 }
154
155 //-----------------------------------
156 //
157 //-----------------------------------
158
CComboboxCustomControl(HWND aControlHandle,HWND aParentHandle)159 CComboboxCustomControl::CComboboxCustomControl(HWND aControlHandle, HWND aParentHandle) :
160 CDialogCustomControlBase(aControlHandle,aParentHandle)
161 {
162 }
163
164 //-----------------------------------
165 // Align to the "File name" combobox
166 // of the standard FileOpen dlg
167 //-----------------------------------
168
Align()169 void SAL_CALL CComboboxCustomControl::Align()
170 {
171 AlignToBuddy(GetDlgItem(m_ParentHandle,cmb1));
172 }
173
174 //-----------------------------------
175 //
176 //-----------------------------------
177
CCheckboxCustomControl(HWND aControlHandle,HWND aParentHandle)178 CCheckboxCustomControl::CCheckboxCustomControl(HWND aControlHandle, HWND aParentHandle) :
179 CDialogCustomControlBase(aControlHandle,aParentHandle)
180 {
181 }
182
183 //-----------------------------------
184 // Align to the "File name" combobox
185 // of the standard FileOpen dlg
186 //-----------------------------------
187
Align()188 void SAL_CALL CCheckboxCustomControl::Align()
189 {
190 AlignToBuddy(GetDlgItem(m_ParentHandle,cmb1));
191 }
192