FAQ:WinAPI VCPP — различия между версиями

Материал из Весельчак У
Перейти к: навигация, поиск
Строка 119: Строка 119:
 
#[[FAQ:WinAPI VCPP:ожидание завершения процесса|Я запускаю экзешник при помощи ::ShellExecute(). Процедура тут же возвращает управление, а как дождаться, когда запущенный процесс завершится, только потом продолжить выполнение программы?]]
 
#[[FAQ:WinAPI VCPP:ожидание завершения процесса|Я запускаю экзешник при помощи ::ShellExecute(). Процедура тут же возвращает управление, а как дождаться, когда запущенный процесс завершится, только потом продолжить выполнение программы?]]
 
#[[FAQ:WinAPI VCPP:назначить иконку окна из ресурсов|Как сменить иконку у диалога или мейнфрейма? (поставить свою иконку из ресурсов)]]
 
#[[FAQ:WinAPI VCPP:назначить иконку окна из ресурсов|Как сменить иконку у диалога или мейнфрейма? (поставить свою иконку из ресурсов)]]
 
<br> (Идет работа в разделе.)
 
 
*[[FAQ:WinAPI, VCPP Part 4|Часть 4]]
 
  
 
[[Category:FAQ]] [[Category:FAQ:WinAPI_VCPP]]
 
[[Category:FAQ]] [[Category:FAQ:WinAPI_VCPP]]

Версия 19:43, 3 октября 2009

Ответы на часто задаваемые вопросы по Windows API и VC++.

Составлено по материалам форума программистов.

  1. У меня есть наименование класса ActiveX. Мне необходимо узнать в каком файле он находится, и какой версии этот файл.
  2. Имеется DLL. В ней есть некоторые данные (скажем, массив int). Как сделать, чтобы переменные в DLL были одними и теми же для всех программ, использующих эту DLL? (Например, при загрузке DLL в массиве нет данных. Каждая программа добавит в массив новые данные.)
  3. Если окно объекта, производного от CScrollView, имеет полосы прокрутки, то как определить координаты курсора мыши?
  4. Если известны абсолютные координаты точки на экране, как перевести эти координаты в относительные координаты некоторого известного окна?
  5. Когда я вывожу две строки (одна под другой), то положение символа в строках зависит от ширины символа, а хотелось бы, чтобы символы располагались один под другим.
  6. Как обратиться к переменной или методу базового класса?
  7. Как записать данные в файл?
  8. Имеются две программы, взаимодействующие между собой. Можно ли в MS VC6 запустить под отладчиком одновременно две программы?
  9. Каким образом можно получить доступ к объекту в классе CFrameWnd из функций-членов класса CMyView?
  10. Я рисую новую иконку в ресурсах проекта VC6, но после запуска программы показывается старая иконка. Что делать?
  11. Как программно расположить один CDialogBar под другим при их вертикальном расположении?
  12. Как добавить возврат каретки к переменной типа CString?
  13. Как в диалоговом MFC приложении добавить accelerator'ы? В редакторе ресурсов создаю, а применить не могу.
  14. Как создать в VC++ exe-шник меньше 24-х килобайт?
  15. Как удалить из меню пункт?
  16. Как добавить пункт в меню?
  17. Как вывести на печать то, что я нарисовал в контексте устройства (класс CDC)?
  18. Как нарисовать линию или прямоугольник на контексте устройства (CDC)? Как выбрать цвет и толщину линии?
  19. Как сменить шрифт при выводе текста на CDC?
  20. Как мне скопировать класс из одного проекта в другой? Код класса находится в файлах проекта в виде исходников.
  21. Как создать иконку в области уведомлений (системном трее)? Как определить, какие действия производит с иконкой пользователь? Как сделать анимацию иконки в трее? Как удалить иконку?
  22. У меня в программе имеется процедура, которая производит очень много вычислений. Как сделать так, чтобы пользователь мог прервать процесс вычислений?
  23. Не могу обратиться к COM из дополнительного потока. Мне пишут - "CoInitialize() не вызвано".
  24. Как с помощью CFileDialog разрешить выбирать только папки?
  25. Как в CDialog-based классе получить коды клавиш, которые нажимает пользователь? Пробовал добавлять обработчики OnChar() и OnKeyDown(), но эти обработчики вообще не вызываются.
  26. Как заполнить блок памяти определённым значением?
  27. Как сравнить два блока памяти на равенство значений?
  28. Как скопировать блок памяти?
  29. Нужно удалить контрол (CComboBox) из диалога. Причём это надо сделать из обработчика сообщения этого контрола.
  30. Я создал простой проект DLL на VC++ 6.0. Все скомпилировалось нормально. Но в другой программе не могу вызвать функцию из DLL - программа не может найти функцию по имени.
  31. Есть ли какой-нибудь макрос в VC7, возвращающий строку вида ClassName::FunctionName внутри соответствующей функции?
  32. Как динамически подгрузить ресурсы к ATL проекту?
  33. Как динамически подгрузить ресурсы к MFC проекту?
  34. Как узнать значение цвета пиксела в определенной точке экрана (не окна формы)?
  35. Возможно ли использование файлов чистого С и С++ в одном проекте? Если да, то каковы должны быть настройки компилятора? А то ругается на Unexpected end of file while looking for precompiled header directive.
  36. Каким образом можно установить значение переменной для вызывающего процесса или потока из своей собственной DLL?
  37. Как закрасить фон окна CWnd?
  38. Как определить, что курсор мыши вышел за границу окна?
  39. Когда размещаю компонент RichEdit на форму, программа запускается и тут же закрывается. Что здесь не так?
  40. Как сделать обработчик сообщения для нескольких элементов управления сразу?
  41. Когда я запускаю программу, все надписи на русском языке теряются - показываются вопросики. Что делать?
  42. Как в проекте VC6 MFC программно получить путь, откуда был запущен экзешник (исполняемый модуль) самой программы?
  43. Как получить доступ к элементам управления панели CReBar, принадлежащей классу MainFrame?
  44. Как загрузить и показать один из стандартных курсоров?
  45. Как запретить пользователю закрыть программу нажатием на кнопку с крестиком?
  46. Как создать на диалоге группу элементов "RadioButton" и как задать порядок их обхода клавишей Tab?
  47. Где лучше устанавливать начальные значения элемента CComboBox?
  48. Как перевести RichEdit в режим замены символов?
  49. Как вызвать метод главного окна (если используется класс CMainFrame) из любого места программы?
  50. Как запретить появление полос прокруток на форме класса CFormView, когда пользователь делает размер главного окна меньше размера формы?
  51. Как нарисовать прямоугольник с вертикальным цветовым градиентом?
  52. Как под Windows отслеживать изменение файла?
  53. Как конвертировать массив char[] в CString?
  54. Как зарезервировать в CString буфер нужной длины?
  55. Как передать больше одного параметр в процедуру потока?
  56. Как убрать главное меню из окна CMainFrame?
  57. Как работающая программа может определить, что пользователь завершает работу Windows?
  58. Как сделать всплывающую подсказку для класса CWnd и классов, от него производных?
  59. Как в отладчике Visual С++ просмотреть содержимое std::vector<string>?
  60. Как при выводе текста на контекст устройства определить ширину и высоту выведенных символов текста в пикселах?
  61. Как узнать, что пользователь меняет текст в приложении на основе CRichEditView?
  62. Чем отличается метод CArray::GetSize от метода CArray::GetCount?
  63. Как загрузить текстовую строку из ресурса?
  64. Как поменять иконку у элемента item в CListCtrl?
  65. Имеется класс Class1, содержащий член типа "Class2*". А в Class2 имеется член типа "Class1*". Компилятор выдаёт ошибку. Что надо делать?
  66. Как переключить раскладку клавиатуры в другом (активном) процессе?
  67. Как получить хендл элемента управления, зная его идентификатор?
  68. Как из дочернего окна закрыть приложение?
  69. Как корректно перевести тип BSTR в CString и наоборот?
  70. Как получить доступ к графическим ресурсам элементов текущей темы оформления Windows?
  71. Имеется класс, производный от CDialog. Когда диалог в фокусе, нажатие на Enter или Esc приводит к закрытию диалога. Как это запретить?
  72. Я написал в VC++ простейший макрос, где невозможно ошибиться, а компилятор всё же выдаёт ошибку.
  73. Как получить список всех процессов, включая idle?
  74. Как программно установить переменные окружения?
  75. Как сделать, чтобы у окна был черный фон?
  76. Почему на моем компьютере экзешник, созданный в MFC запускается, а на других компьютерах - нет? Требует какую-то dll.
  77. Как в диалог добавить меню?
  78. Почему не вызывается OnUpdate для пунктов меню (не получается ни затенить, ни отметку поставить)?
  79. Как в главном окне отключить системное меню (в левом верхнем углу) и кнопки (в правом верхнем углу)?
  80. Как запретить пользователю нажать на кнопку?
  81. Что означают сообщения, которые студия выводит при компиляции, вроде таких: Loaded 'C:\WINDOWS\SYSTEM\WSOCK32.DLL', no matching symbolic information found?
  82. Как обработать сообщения, которые приходят к элементу управления?
  83. Как настроить количество пробелов в табуляции?
  84. Как автоматически расставить отступы?
  85. Поиск границ блока.
  86. Вертикальное выделение текста.
  87. Как узнать количество установленных в CListCtrl столбцов?
  88. Как получить иконку приложения?
  89. Как в CString можно найти или вырезать часть строки?
  90. Как отобразить на элементах управления промежуточные результаты длительных вычислений?
  91. Я написал DLL, которую используют несколько приложений. Всё работает, но когда происходит очередной вызов функции из DLL, почему то, данные в функции обнуляются. С чем это связано?
  92. Как открыть проекцию файла в память и как с ней работать?
  93. Как в MFC Grid control отобразить картинку в ячейке?
  94. Как при помощи IPicture отобразить картинку из файла?
  95. Как позволить пользователю начать ввод новой строки в многострочном поле редактирования?
  96. Как выводят картинку-логотип (splash screen) при запуске программы?
  97. Как сделать, чтобы при выпадении списка у ComboBox была не одна строка, а больше? Вроде все свойства покрутил, не помогает: вместо выпадающего списка - одна строка и скролл.
  98. VC++.NET. На форму установил ActiveX ListView. Как объявить класс и переменную для этого элемента?
  99. Как работать с буфером обмена?
  100. Как получить полный путь к экзешнику из самой программы?
  101. Каким способом exe файл может заменить самого себя?
  102. Как производится конвертация из кодировки UTF8 в 1251 и наоборот?
  103. Как работать с базой данных Access из программы на VC.NET?
  104. Как создавать всплывающие подсказки (ToolTip)?
  105. Что делает функция ScrollWindow()?
  106. Почему список CComboBox не выпадает, хотя клавишами "вверх" и "вниз" значения перебираются?
  107. Как программно поменять настройки Internet Explorer?
  108. Как узнать, когда после запуска приложение уже готово к работе?
  109. Как получить короткое и длинное имя файла?
  110. В чём разница между сообщениями WM_MOVE и WM_MOVING?
  111. Как из программы определить каталог, в котором находится эта программа?
  112. Как получить полное имя пользователя и организации, то есть то, что на диалоге system properties (горячая кнопка Win+Break) на закладке General перечислено под пунктом Registred To?
  113. Как определить первый свободный ID, который можно использовать при динамическом создании элементов управления?
  114. Как изменить цвет рамки приложения?
  115. Я запускаю экзешник при помощи ::ShellExecute(). Процедура тут же возвращает управление, а как дождаться, когда запущенный процесс завершится, только потом продолжить выполнение программы?
  116. Как сменить иконку у диалога или мейнфрейма? (поставить свою иконку из ресурсов)