FAQ:WinAPI VCPP

Материал из Весельчак У
Перейти к: навигация, поиск

Ответы на часто задаваемые вопросы по 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?


(Идет работа в разделе.)