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 36 CDialogCustomControlBase::CDialogCustomControlBase(HWND aControlHandle, HWND aParentHandle) : 37 m_CustomControlHandle(aControlHandle), 38 m_ParentHandle(aParentHandle) 39 { 40 } 41 42 //----------------------------------- 43 // 44 //----------------------------------- 45 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 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 95 CDummyCustomControl::CDummyCustomControl(HWND, HWND) 96 { 97 } 98 99 //----------------------------------- 100 // 101 //----------------------------------- 102 103 void SAL_CALL CDummyCustomControl::Align() 104 { 105 // do nothing 106 } 107 108 //----------------------------------- 109 // 110 //----------------------------------- 111 112 void SAL_CALL CDummyCustomControl::SetFont(HFONT) 113 { 114 // do nothing 115 } 116 117 //----------------------------------- 118 // 119 //----------------------------------- 120 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 131 void SAL_CALL CStaticCustomControl::Align() 132 { 133 AlignToBuddy(GetDlgItem(m_ParentHandle,stc3)); 134 } 135 136 //----------------------------------- 137 // 138 //----------------------------------- 139 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 150 void SAL_CALL CPushButtonCustomControl::Align() 151 { 152 AlignToBuddy(GetDlgItem(m_ParentHandle,IDCANCEL)); 153 } 154 155 //----------------------------------- 156 // 157 //----------------------------------- 158 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 169 void SAL_CALL CComboboxCustomControl::Align() 170 { 171 AlignToBuddy(GetDlgItem(m_ParentHandle,cmb1)); 172 } 173 174 //----------------------------------- 175 // 176 //----------------------------------- 177 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 188 void SAL_CALL CCheckboxCustomControl::Align() 189 { 190 AlignToBuddy(GetDlgItem(m_ParentHandle,cmb1)); 191 } 192