|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
Ну, т.е. отправные точки такие: 1) Есть некоторый опыт работы с этими "интерфейсами" в .Net Диалог вида OpenFileDialog но для выбора папки, а не файла 2) Есть опыт кастомизации диалогов XP-шного стиля (на VB6 и в .Net), не так чтоб много наплодил, но кой-какой багаж есть Типа картинка с примером 3) Есть пример для VB6 как кастомизировать диалоги "нового типа" (с поясняющими картинками по ссылке). Никогда сей пример в VB6 не изучал, просто в курсе что есть такой. http://www.vbforums.com/showthread.php?786031-VB6-Using-the-new-IFileDialog-interface-for-customizable-Open-Save-(TLB-Vista-)][VB6] Using the new IFileDialog interface for customizable Open/Save (TLB, Vista+) 4) Есть статья Майкрософт, как заниматься кастомизацией оного (C++ пример) IFileDialog, IFileOpenDialog, and IFileSaveDialog:Customizing the Dialog Ну, известные мне "исходники" сформулировал. Собственно надо сваять SaveAs "нового образца", добавив одну галку, два label, два текстбокса, где-нибудь "внизу диалога" вполне сойдет, на большее пока не претендую, задача полагаю выполнимая. (В старом интерфейсе сваял, но чет плоховато на 10-ках он уже смотрится). М.б. знает кто хорошие не навороченные до огромных размеров примеры, лучше если сразу на VB.Net, ну на худой конец на C#? Вектор движения такой пока: предполагаю переработать свой OpenFolder в SaveAs (рука как бы не очень на это набита даже без кастомизаций, обычно хватает .Net-контрола), опосля чего думать в направлении интерфейса IFileDialogCustomize. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2018, 04:20 |
|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
Дмитрий77, Задача написать действительно хороший новый диалог сохранения потянет даже не на дипломную, это серьёзный вызов. Но. Кого волнует такой уровень проработки? ахаххах.. ржака. Создавай форму, размещай контролы и пиши обработчики, а там как-нибудь допинаешь до приемлимого на свой взгляд состояния. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2018, 01:39 |
|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
hVostt написать действительно хороший новый диалог сохранения ... Создавай форму, размещай контролы и пиши обработчики... Мне нужен штатный, но дополненый своими контролами. Причем новый, вида что появились в Висте (ну и на десятке они же). Дмитрий77Вектор движения такой пока: предполагаю переработать свой OpenFolder в SaveAs (рука как бы не очень на это набита даже без кастомизаций,. Без кастомизаций уже осилил: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396.
Естественно ничего нового относительно того штатного что уже есть в .Net это не дает. Но на базе сего можно двигаться дальше: Дмитрий77опосля чего думать в направлении интерфейса IFileDialogCustomize. Ну собсно все ссылки от чего плясать я выложил в первом посту. Пример MSDN на C++ и кой-чего есть тут http://www.ookii.org/software/dialogs/ Хотя сей мутный монстропроджект скомпилировать мне так и не удалось, но можно кой-чего подглядывать в коде, например те же GUID-ы, и "декларации" интерфейса IFileDialogCustomize там кстати есть, хотя примеров с кастомизацией несмотря на монстроразмах там походу нет. А так больше ничего особо и не нагуглил. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2018, 03:27 |
|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
Ну вот вроде дорвался до чего хотел. IFileDialogCustomize: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104.
Ну пихаем "свои" контролы туда: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Ну и фигово. На картинке справа: сделано в "старом" диалоге, там хорошо. Суть: все выровнено, интервалы соблюдены. Первая строка - checkbox, вторая -label+textbox, третья - по типу второй, ширина текстбоксов следует ширине комбобоксов, при снятии чекбокса лейблы и текстбоксы становятся Enabled=False. На картинке слева: "новый" диалог, иначе как бардаком это не назовешь. Ширина контролов - как он решил, расположение пляшет ако попало. Ну и че с этим делать? Как им задавать расположение-размеры? Ну хотя б чтоб чекбокс был в "верхней" строчке, а группы "label+textbox" в нижней. Ну событие для чекбокса еще как-то надо родить, чтоб "при снятии чекбокса лейблы и текстбоксы становятся Enabled=False" Т.е. автоматика добаления своих контролов в "новом" то есть, но она бардачная какая-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2018, 06:59 |
|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
Дмитрий77, Попробуйте все добавляемые Вами контролы красиво разместить на UserControl, а на диалог добавляйте уже его. Хотя и вручную можно выравнять, создавая и добавляя контролы по одиночке - нужных размеров и в нужную позицию. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2018, 17:00 |
|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
не проще сделать диалог, в котором будут 2 эти поле и поле с именем файла, котором будет выбираться стандартным диалоговым окном? какой сакральный смысл пихать контролы в стандартный диалог? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2018, 17:08 |
|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
Cat2Попробуйте все добавляемые Вами контролы красиво разместить на UserControl, а на диалог добавляйте уже его. Хотя и вручную можно выравнять, создавая и добавляя контролы по одиночке - нужных размеров и в нужную позицию. Ну вот я так примерно и делал в диалоге старого типа (доп. контролы на отдельной форме, где задано начальное позиционирование, потом диалог назначается как Parent, через сабклассинг допиливается позиционирование при изменении размеров диалога и т.п.). Примеры: правая картинка выше или картинка по этой ссылке: см. картинку . Добавляешь чего хочешь. Но гимор скажу еще тот, один такой аккуратно сваять. В "новом" диалоге это не пройдет (ну или какой-то совсем гимор, чем заниматься счас точно неохота). Но там как бы есть штатные методы добавления ограниченного набора контролов, типа label, checkbox, textbox и т.д. о чем и речь. Ну в принципе, приемлимых результатов добиться таки можно (считаю пока устроит). Например в моем случае так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
MakeProminent располагает чекбокс рядом с Save. Две пары label+textbox аккуратно расположены в ряд выше. Результат на картинки ниже, вполне. Теперь надо бы добавить события в мой класс. Пока не знаю как это имплементировать. Надо копать примеры, они сильно навороченные. Событий 2 типа. 1) штатный набор, описываемый интерфейсом IFileDialogEvents interface Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
События контролов, добавляемых через IFileDialogCustomize Применительно к моему примеру, это даст мне возможность реагировать на снятие/установку галки в чекбокс - OnCheckButtonToggled. В общем, с событиями осталось разобраться, и будет если не шоколадка, то карамелька. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2018, 18:46 |
|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
Я вот чего-то не врублюсь. Есть интерфейс IFileDialogControlEvents (в модуле m_IFileDialog) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Делаю класс типа так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Он мне пишет 4 ошибки про каждую ф-цию, типа Код: vbnet 1. 2. 3.
Дык вроде прописал их все по формату, че ему не нравится? И примеров на VB.Net ни хрена нету, разбираю муть на C#, в мути в оригинале так Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94.
Нады мне как-то на события диалога и его доп. контролов подписку оформить, сижу туплю как это сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2018, 23:26 |
|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
Дмитрий77Он мне пишет 4 ошибки про каждую ф-цию, типа Код: vbnet 1. 2. 3.
Все, понял. Гребаный синтаксис. В vb.net надо Implements IFileDialogControlEvents.<Function name> еще ляпать в определение каждой ф-ции т.е Код: vbnet 1. 2. 3. 4. 5.
вместо Код: vbnet 1. 2. 3. 4.
Знать бы еще как это все сожрать потом. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2018, 23:39 |
|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
Нады мне как-то на события диалога и его доп. контролов подписку оформить...как это все сожрать потом В общем доосилил таки эту кухню. Идея такая. Создается вспомогательный класс (IIFileDialogEvents), имплементирующий оба типа событий, т.е. интерфейсы IFileDialogEvents и IFileDialogControlEvents. Там должны присутствовать все функции, входящие в эти интерфейсы, хотя бы в качестве ничего не делающей "рыбы". Плюс передаем туда ссылку на основной класс(IISaveFileDialog), представляющий диалог. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Из основного класса подписываем диалог пулять события во вспомогательный Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
А во вспомогательном вызываем публичную ф-цию основного, которая генерирует событие Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Т.е. генерируем событие для диалога: Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Ну и имеем приемлимый код: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
Класс оформил универсально, с возможностью дописывания общих ф-ций если надо будет, но рыбы на все события и кастом-элементы вставил. Глюк правда один заметил (применительно к моему диалогу): если фокус на кастом-текстбоксе, снимаем галку мышкой с чекбокса, текстбокс становится Enabled=false, но рамка блин черная, а не серая получается, ну во всяком случае на Win10. Побороть не сумел. Ну, на всякий случай прилагаю проект, м.б. кому пригодится, вещь вроде неплохая получилась. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2018, 06:54 |
|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
Дмитрий77 Код: vbnet 1.
Небольшие замечания, можешь проигнорить, но пройти мимо не мог. 1. В .NET приняты соглашения , которых нужно придерживаться. Здесь лучше бы подошли такие названия: CustomFileDialogEvents DmitryFileDialogEvents ... 2. Неправильно вызывать fsDlg.Dispose() тогда, когда можно использовать блок Using 3. Раз уж ты создал новый расширяющий класс, не нужно использовать поле Tag для доступа к кастомным полям. Добавь для них отдельные поля в классе. Или хотя бы словарь. Ибо такое Дмитрий77 Код: vbnet 1.
Форменное издевательство над тем, кто будет сопровождать код в дальнейшем (включая себя, безусловно). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2018, 07:37 |
|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
hVosttЗдесь лучше бы подошли такие названия: CustomFileDialogEvents DmitryFileDialogEvents Ну тогда уж MyFileDialogEvents. Но это ИМХО ерунда все. hVostt2. Неправильно вызывать fsDlg.Dispose() тогда, когда можно использовать блок Using У меня и было изначально Using. Но я за пределами основных операций с диалогом объявил Код: vbnet 1.
поэтому Using не катит. А .Dispose() как раз в классе пустой, именно для Using Код: vbnet 1. 2. 3.
hVostt3. Раз уж ты создал новый расширяющий класс, не нужно использовать поле Tag для доступа к кастомным полям. Добавь для них отдельные поля в классе. Или хотя бы словарь. Ибо такое Дмитрий77 Код: vbnet 1.
Форменное издевательство над тем, кто будет сопровождать код в дальнейшем (включая себя, безусловно). Отдельные поля -частный случай конкретного применения. Tag(i) - типа храним чего угодно и сколько угодно. Мне надо взять значения из двух TextBox на момент закрытия диалога. Эти значения доступны на момент нажатия кнопки OK, мы достаем их из события нажатия Save и пихаем обратно в класс, Код: vbnet 1. 2. 3. 4. 5. 6. 7.
потом достаем из обратно Tag когда уже диалог закрыт. Мог обойтись просто переменными в вызывающем коде (в форме), но захотелось вот так, но это "универсально", в другой раз будет три текстбокса и еще чего нибудь и т.д. А насчет "сопровождающих код", мои коды кроме меня никто не сопровождает, а тебе напр. переделать несложно, если считаешь синтаксис вопиющим. В принципе, я обычно пишу простые коды (ну мне так кажется). Аналогичная кухня http://www.ookii.org/software/dialogs/ там все "по науке" (C#), но столько всего что умучаешься что-то выдрать, не говоря о том что проект тот воообще не скомпилировался (какие-то заумные ошибки про какие-то "сборки", уши вянут), понаворочают ссылок на всякие "либы", и своих классов нагородят по 50 модулей на проект, и тащатся от этого. Я не считаю что там лучше и понятней. Я диалог сделал, мою задачу выполняет. Причем класс сгодится и для выполнения других задач, например добавить стрелку с меню к кнопке Save, или там радио-группу, combobox и т.п. Но он конечно реализует своего рода "штатную" кастомизацию, т.е. свою картинку с тулбаром и treeview, как я это делал в старых диалогах, оно не пририсует. Ну, и ограниченная свобода в расположении/размерах контролов кот. добавляешь. Но для большинства чуть нестандартных задач вполне неплохое дополнение. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2018, 09:29 |
|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
Дмитрий77Ну тогда уж MyFileDialogEvents. Но это ИМХО ерунда все. Нет, вовсе не ерунда. Но спорить не будем, указал больше для тех, кто желает развиваться в направлении профессиональной хорошо оплачиваемой разработки. Кому это не нужно, проходят мимо :) Дмитрий77У меня и было изначально Using. Но я за пределами основных операций с диалогом объявил Ок. Дмитрий77Отдельные поля -частный случай конкретного применения. Tag(i) - типа храним чего угодно и сколько угодно. Это понятно. Но так делать не стоит. Дмитрий77Мог обойтись просто переменными в вызывающем коде (в форме), но захотелось вот так, но это "универсально", в другой раз будет три текстбокса и еще чего нибудь и т.д. В том и дело, когда "потом будет", концы искать придётся, тратить на это время, и держать в голове. Ну понятное дело совершать ошибки, которые потом героически исправлять. Дмитрий77А насчет "сопровождающих код", мои коды кроме меня никто не сопровождает, а тебе напр. переделать несложно, если считаешь синтаксис вопиющим. В принципе, я обычно пишу простые коды (ну мне так кажется). Это вопрос культуры кодинга. Может быть тебе придётся когда-нибудь работать в команде, предложат хорошие условия и оплату, а у тебя уже комплект вредных привычек, с которыми бороться очень тяжело. Ну или не тебе, а тому кто читает этот тред :) В общем, это просто ремарка. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2018, 10:39 |
|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
hVosttДмитрий77 Код: vbnet 1.
Небольшие замечания, можешь проигнорить, но пройти мимо не мог. 1. В .NET приняты соглашения , которых нужно придерживаться. Здесь лучше бы подошли такие названия: CustomFileDialogEvents DmitryFileDialogEvents Ну бог с ним, убедил. Вместо IISaveFileDialog IIFileDialogEvents сделал Код: vbnet 1. 2.
"Vista" -понятно, эти диалоги там появились, приставка "I" - сделан на базе интерфейсной кухне, понимаю что это класс а не интерфейс, но даб не путать с теми же .Net-контролами - мне так удобней и понятней. Убрал бы "Vista", но ISaveFileDialog IFileDialogEvents -ориг. названия интерфейсов. Т.е. к примеру класс для выбора папок (в этом же проекте) у меня называется ISelectFolderDialog и вообще но проблем. Приложил проект с новыми "именами", для "сопровождающих код". ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2018, 18:44 |
|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
Дмитрий77Но он конечно реализует своего рода "штатную" кастомизацию, т.е. свою картинку с тулбаром и treeview, как я это делал в старых диалогах, оно не пририсует. Ну, и ограниченная свобода в расположении/размерах контролов кот. добавляешь. Вообще я тут пример из Microsoft SDK глянул, они там умудряются какие-то PropertyItems воткнуть, вместе с календарем и т.п. (но все одно пляшут). Разбирать не стал, уже итак 3 дня потратил. Пора с этим заканчивать, вставить свою наработку в свой App и на этом все пока. Это так, для поддержания темы. Пример на всякий случай прилагаю (выдернут из SDK, качать ее целиком чтоб взглянуть вряд ли кто будет). С++ компилируется в VC++ 2005, но думаю легко импортируется в VS2013 и им подобные. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2018, 19:01 |
|
Кастомизация (добавление своих элементов) в "новых" диалогах SaveAs/Open
|
|||
---|---|---|---|
#18+
Дмитрий77Cat2Попробуйте все добавляемые Вами контролы красиво разместить на UserControl, а на диалог добавляйте уже его. Хотя и вручную можно выравнять, создавая и добавляя контролы по одиночке - нужных размеров и в нужную позицию. Ну вот я так примерно и делал в диалоге старого типа (доп. контролы на отдельной форме, где задано начальное позиционирование, потом диалог назначается как Parent, через сабклассинг допиливается позиционирование при изменении размеров диалога и т.п.). ...Добавляешь чего хочешь. Но гимор скажу еще тот, один такой аккуратно сваять. В "новом" диалоге это не пройдет А вообще м.б. и можно. Вот интересные рассуждения IFileDialog and Subclassing control on it В упомянутом мной коде от MS есть кусочек - суть добыть hwnd диалога. https://msdn.microsoft.com/en-us/library/windows/desktop/bb776913(v=vs.85).aspx#OnFileOk The calling process can use the window handle of the dialog itself as the parent of the UI. That handle can be obtained by first calling IOleWindow::QueryInterface and then calling IOleWindow::GetWindow with the handle as shown in this example. Отчего бы нет: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
Handle получил, но нормально воткнуть туда чего-то или расчистить место под "воткнуть" с ходу не удалось. Если фишку удастся просечь, то можно пичкать его чем угодно по той технике, что использовал для старых диалогов. "OnFolderChanging" это первое событие которое всегда срабатывает (первый раз вроде как до появления на экран), т.е. OnInitDone разумно брать из первого OnFolderChanging, больше нет ничего чтоб подцепиться , там же делать инициализацию-рисовку всего, потом чего нибудь сабклассить, видимо handle диалога и там делать поправки (позиция, размеры). Не уверен, что хочу счас этим заниматься. Ну есть у меня парочка "крутых" диалогов, которые в старом стиле и соотв. некоторый соблазн "обновить" их. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2018, 06:58 |
|
|
start [/forum/topic.php?fid=20&fpage=28&tid=1399255]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
138ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 243ms |
0 / 0 |