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

Материал из Весельчак У
Перейти к: навигация, поиск
м (пробел перед запятой)
Строка 1: Строка 1:
===Как создавать всплывающие сообщения?===
+
===Как создавать всплывающие подсказки (ToolTip) ?===
Называется ето сообщение Balloon ToolTip. В МСДНесть статейка по этому поводу называется "Using ToolTip Controls"
+
Этот элемент управления называется "Balloon ToolTip". (В МСДН есть статья под названием "Using ToolTip Controls")
 
[[Изображение:context_help.GIF]]
 
[[Изображение:context_help.GIF]]
  
 
Тематические ссылки:
 
Тематические ссылки:
 +
 
http://www.codeproject.com/shell/LiviuBirjegaCode.asp
 
http://www.codeproject.com/shell/LiviuBirjegaCode.asp
 +
 
http://www.codeproject.com/useritems/wtlntray.asp
 
http://www.codeproject.com/useritems/wtlntray.asp
  
Для получения сообщения того, как на картинке установите стиль
+
 
 +
Для того, чтобы подсказка имела вид "облака" (как в коммиксах), нужно установить недокументированный стиль
 
TTS_BALLOON==0x40
 
TTS_BALLOON==0x40
  
и еще:
+
Вот ещё пара полезных функций API для работы с подсказками
<pre>
+
<syntaxhighlight>
CToolTipCtrl::SetDelayTime(TTDT_AUTOPOP,10000);//время горения
+
CToolTipCtrl::SetDelayTime(TTDT_INITIAL, мс );//через какое время появится на экране после наведения курсора
CToolTipCtrl::SetDelayTime(TTDT_INITIAL,300);//через какое время появится на экране после наведения курсора
+
CToolTipCtrl::SetDelayTime(TTDT_AUTOPOP, мс );//время горения подсказки на экране
</pre>
+
 
 +
//мс - время в миллисекундах , тип DWORD
 +
</syntaxhighlight>
 +
 
 +
 
 +
===Что делает функция ScrollWindow()===
 +
Функция ScrollWindow() всего лишь двигает рисунок, уже нарисованный на контексте окна, на заданное количество пикселов.
  
===Не могу понять, что делает функция ScrollWindow()===
+
К примеру, у имеется нарисованное изображение на клиентской части окна, и нужно сделать скролинг этой части.
К примеру, у вас есть уже нарисованное изображение на клиентской части окна, и нужно сделать скролинг этой части.
+
  
 
Первый путь: Стереть что уже было нарисовано, и перерисовывать все заново с учетом скролинга.
 
Первый путь: Стереть что уже было нарисовано, и перерисовывать все заново с учетом скролинга.
  
Второй путь: Передвинуть ту часть, которая останется в зоне видимости, и дорисовать недостаюшую часть. Вот ScrollWindow() и делает передвижение рисунка на заданное количество пикселей. Остаётся потом только дорисовать
+
Второй путь: Передвинуть ту часть, которая останется в зоне видимости, и дорисовать недостаюшую часть. Функция ScrollWindow() как раз и пригодится, чтобы передвинуть рисунок на заданное количество пикселов. Останется потом только дорисовать.
  
===В редакторе ресурсов на диалоге создаю элемент ComboBox. Почему во время работы программы список не выпадает, хотя клавишами "вверх" и "вниз" значения перебираются?===
+
===Почему список CComboBox не выпадает, хотя клавишами "вверх" и "вниз" значения перебираются?===
Находясь в редакторе форм, щёлкните по стрелке комбобокса - и за нижний маркер растяни вниз - то есть задайте размер выпадающего
+
Нужно задать высоту выпадающего списка: находясь в редакторе форм, нужно щёлкнуть по стрелке комбобокса и за нижний маркер растянуть вниз, тем самым и задать размер выпадающего списка.
списка.
+
  
===Internet Explorer: как поменять настройки программно?===
+
===Как программно поменять настройки Internet Explorer?===
путь в реестре:
+
Можно воспользоваться редактированием реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\AdvancedOptions\ (всякие настройки)
+
<syntaxhighlight>
 +
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\AdvancedOptions\ (всякие настройки)
 +
</syntaxhighlight>
  
===Как узнать, когда приложение уже готово к работе? (в этот момент мне нужно стартовать вспомогательный диалог для показа определенных значений)===
+
===Как узнать, когда после запуска приложение уже готово к работе?===
Можно попробовать переопределить функцию CWinApp::OnIdle. Эта функция вызывается всякий раз, когда в очереди сообщений
+
Можно переопределить функцию CWinApp::OnIdle. Эта функция вызывается всякий раз, когда в очереди сообщений приложения нет больше сообщений. Самый первый вызов функции будет соответствовать моменту, когда приложение стало быть готово к работе.
приложения нет больше сообщений. И при первом вызове OnIdle показывать вспомогательный диалог.
+
  
 
===Как получить короткое и длинное имя файла?===
 
===Как получить короткое и длинное имя файла?===
Например имеется путь к файлу:
+
Можно использовать функции API
  D:\program files\Microsoft Office\OFFICE11\winword.exe
+
<syntaxhighlight>
надо привести его к виду:
+
  d:\PROGRA~1\MICROS~2\OFFICE11\WINWORD.EXE
+
и  наоборот,
+
использовать функции API
+
<pre>
+
 
GetShortPathName(
 
GetShortPathName(
 
LPCSTR lpszLongPath,
 
LPCSTR lpszLongPath,
 
LPSTR  lpszShortPath,
 
LPSTR  lpszShortPath,
 
DWORD    cchBuffer); //получить короткий путь
 
DWORD    cchBuffer); //получить короткий путь
 +
</syntaxhighlight>
 
и
 
и
 +
<syntaxhighlight>
 
GetLongPathName(
 
GetLongPathName(
 
LPCSTR lpszShortPath,
 
LPCSTR lpszShortPath,
 
LPSTR  lpszLongPath,
 
LPSTR  lpszLongPath,
 
DWORD    cchBuffer); //получить полный путь
 
DWORD    cchBuffer); //получить полный путь
</pre>
+
</syntaxhighlight>
 +
 
 +
 
 +
Например имеется путь к файлу:
 +
<syntaxhighlight>
 +
D:\program files\Microsoft Office\OFFICE11\winword.exe
 +
</syntaxhighlight>
 +
функция GetShortPathName() поможет привести его к виду:
 +
<syntaxhighlight>
 +
d:\PROGRA~1\MICROS~2\OFFICE11\WINWORD.EXE
 +
</syntaxhighlight>
 +
а функция GetLongPathName() - наоборот.
 +
 
 +
Максимальная длина пути файла равна MAX_PATH (==260) символам
  
 
===В чём разница между сообщениями WM_MOVE и WM_MOVING?===
 
===В чём разница между сообщениями WM_MOVE и WM_MOVING?===
VM_MOVING - посылается окну, когда пользователь перемещает окно
 
  
VM_MOVE - посылается окну, когда пользователь завершил перемещение
+
Сообщение VM_MOVING посылается окну, когда пользователь перемещает окно.
  окна (отпустил кнопку мыши)
+
 
 +
Сообщение VM_MOVE посылается окну, когда пользователь завершил перемещение окна (отпустил кнопку мыши).
  
 
=== Как из программы определить каталог, в котором находится эта программа?===
 
=== Как из программы определить каталог, в котором находится эта программа?===
Функция
+
Это можно сделать при помощи функции, которая возвращает абсолютное имя модуля.
GetModuleFileName
+
<syntaxhighlight>
возвращает абсолютное имя модуля.
+
GetModuleFileName()
 +
</syntaxhighlight>
  
 
В MFC можно использовать переменную-член класса CWinApp, определённую как
 
В MFC можно использовать переменную-член класса CWinApp, определённую как
LPCTSTR m_pszExeName;
+
<syntaxhighlight>
Вызывать так:
+
LPCTSTR m_pszExeName;
 +
</syntaxhighlight>
 +
 
 +
Получить доступ можно двумя способами:
 +
<syntaxhighlight>
 +
//1
 
  AfxGetApp()->m_pszExeName;
 
  AfxGetApp()->m_pszExeName;
 +
 +
//2
 +
//extern CMyApp theApp
 +
theApp.m_pszExeName;
 +
</syntaxhighlight>
 +
 
===Как получить полное имя пользователя и организации, то есть то, что на диалоге system properties (горячая кнопка [ Win ] + Break ) на закладке General перечисленно под пунктом Registred To? ===
 
===Как получить полное имя пользователя и организации, то есть то, что на диалоге system properties (горячая кнопка [ Win ] + Break ) на закладке General перечисленно под пунктом Registred To? ===
в реестре
+
Значение можно взять в реестре:
  
тут
+
тут (для Windows NT)
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
+
<syntaxhighlight>
 +
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
 +
</syntaxhighlight>
  
или тут
+
или тут (W98, W95)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
+
<syntaxhighlight>
 +
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
 +
</syntaxhighlight>
  
(зависит от версии Windows)
+
===Как определить первый свободный ID, который можно использовать при динамичском создании элементов управления?===
 +
Можно поступить так: начать перебор значений ID со значения 1000 и, проверяя функцией GetDlgItem(), увеличивать значение на единицу до тех пор, пока не будет найден свободный ID.
  
===Мне надо в процессе выполнения программы динамичски создавать / удалять элементы (иконки и текстбоксы). Для этого мне надо при создании элемента задавать ID. Как определить первый свободный ИД, который можно использовать?===
+
===Как изменить цвет рамки приложения?===
Можно поступить так: Начать "поиск" ID со значения 1000 и, проверяя функцией GetDlgItem(), увеличивать значение на единицу до тех пор, пока не будет найден свободный ID.
+
Это можно сделать, если перехватить сообщение WM_NCPAINT, которое отвечает за прорисовку не-клиентской части окна.
  
===Как изменить цвет рамки приложения? Пытаюсь закрашивать в OnPaint(), ничего не получается===
+
===Я запускаю экзешник при помощи ::ShellExecute(). Процедура тут же возвращает управление, а как дождаться, когда запущенный процесс завершится, только потом продолжить выполнение программы?===
Это можно сделать, если перехватывать сообщение, которое идет на прорисовку не клиентской части окна WM_NCPAINT
+
Нужно использовать функции
  
===Я запускаю экзешник при помощи ::ShellExecute(). Процедура тут же возвращает управление, а мне нужно дождаться, когда запущенный процесс завершится, а только потом продолжить дальнейшее выполнение программы. Как это сделать?===
+
CreateProcess()
Нужно использовать CreateProcess/WaitForSingeObject.
+
 
<pre>
+
WaitForSingeObject()
 +
 
 +
<syntaxhighlight>
 
STARTUPINFO StartupInfo;
 
STARTUPINFO StartupInfo;
 
PROCESS_INFORMATION ProcessInfo;
 
PROCESS_INFORMATION ProcessInfo;
Строка 94: Строка 131:
 
RtlZeroMemory(&StartupInfo, sizeof(StartupInfo));
 
RtlZeroMemory(&StartupInfo, sizeof(StartupInfo));
 
StartupInfo.cb = sizeof(StartupInfo);
 
StartupInfo.cb = sizeof(StartupInfo);
 +
 +
//запуск экзешника
 
if(!CreateProcess(
 
if(!CreateProcess(
 
szApplicationName,
 
szApplicationName,
szCommandLine,
+
szCommandLine, //командная строка (можно указать NULL)
 
NULL, NULL, FALSE,
 
NULL, NULL, FALSE,
 
NORMAL_PRIORITY_CLASS,
 
NORMAL_PRIORITY_CLASS,
 
NULL,
 
NULL,
szCurrentDirectory,
+
szCurrentDirectory, //рабочая директория (можно указать NULL)
 
&StartupInfo,
 
&StartupInfo,
 
&ProcessInfo))
 
&ProcessInfo))
 
{
 
{
//ошибка
+
//ошибка запуска
 
DWORD dwdErr=GetLastError(); //определяем ошибку
 
DWORD dwdErr=GetLastError(); //определяем ошибку
 
}
 
}
 
else
 
else
 
{
 
{
CloseHandle(ProcessInfo.hThread);
+
//ждём 30 секунд момента, пока процесс завершится
WaitForSingleObject(ProcessInfo.hProcess, 30000);
+
//(ProcessInfo.hProcess перейдёт в сигнальное состояние)
 +
DWORD dwd=WaitForSingleObject(ProcessInfo.hProcess, 30000);
 +
//если задать INFINITE , будет ждать до бесконечности
 +
 
 +
//dwd покажет причину завершения процедуры WaitForSingleObject
 +
//WAIT_OBJECT_0 Состояние объекта переведено в сигнальное
 +
//WAIT_TIMEOUT Кончился таймаут
 +
 
 +
//к теме не относится, но для мутекса ещё есть возвращаемое значение:
 +
//WAIT_ABANDONED Объект является мутексом, который был занят потоком, затем поток завершился,
 +
// не разблокировав мутекс. Мутекс находится в несигнальном состоянии
 +
 
 +
 
 +
//если нужно - смотрим, какое значение вернуло приложение
 
GetExitCodeProcess(ProcessInfo.hProcess, &dwRetValue);
 
GetExitCodeProcess(ProcessInfo.hProcess, &dwRetValue);
 +
 +
//освобождаем хендлы, открытые CreateProcess
 +
CloseHandle(ProcessInfo.hThread);
 
CloseHandle(ProcessInfo.hProcess);
 
CloseHandle(ProcessInfo.hProcess);
 
}
 
}
</pre>
+
</syntaxhighlight>
В szApplicationName может быть либо полный путь к файлу, либо только имя файла,
+
в последнем случае файл будет искаться в текущем каталоге.
+
  
szCommandLine может быть NULL, если не надо передавать командную строку
+
В szApplicationName может быть либо полный путь к файлу, либо только имя файла. В последнем случае файл будет искаться в текущем каталоге.
запускаемому процессу.
+
 
 +
szCommandLine может быть NULL, если не надо передавать командную строку запускаемому процессу.
 +
 
 +
szCurrentDirectory может быть NULL, тогда текущий каталог будет как у родительского процесса.
  
szCurrentDirectory может быть NULL, тогда текущий каталог будет как у
 
родительского процесса.
 
 
===Как сменить иконку у диалога или мейнфрейма? (поставить свою иконку из ресурсов)===
 
===Как сменить иконку у диалога или мейнфрейма? (поставить свою иконку из ресурсов)===
<pre>
+
 
HICON m_hIcon;//
+
Пример:
...
+
<syntaxhighlight>
...
+
HICON m_hIcon;
 +
...
 +
...
 
HICON m_hIcon = AfxGetApp()->LoadIcon(IDR_1);
 
HICON m_hIcon = AfxGetApp()->LoadIcon(IDR_1);
 
SetIcon(m_hIcon, TRUE);
 
SetIcon(m_hIcon, TRUE);
</pre>
+
</syntaxhighlight>
 +
 
 
где
 
где
  
Строка 136: Строка 193:
  
 
m_hIcon - хендл типа HICON (естественно - не временный, а, скажем, член класса)
 
m_hIcon - хендл типа HICON (естественно - не временный, а, скажем, член класса)
 
===Как во время долгих вычислений или в обработчике сообщения НЕМЕДЛЕННО перерисовать окно?===
 
скажем, находимся в неком обработчике диалога
 
<pre>
 
MyDialog::f()
 
{
 
...
 
...
 
//тут потребовалось перерисовать немедленно
 
 
//помечаем всё окно "инвалидным" (требующим перерисовки)
 
Invalidate(0);
 
//перерисовываем "напрямую" посылая сообщение WM_PAINT в
 
//оконную процедуру, минуя очередь сообщений
 
UpdateWindow();
 
...
 
...
 
}
 
</pre>
 
  
 
[[Category:FAQ]]
 
[[Category:FAQ]]

Версия 19:29, 17 октября 2008

Содержание

Как создавать всплывающие подсказки (ToolTip) ?

Этот элемент управления называется "Balloon ToolTip". (В МСДН есть статья под названием "Using ToolTip Controls") Файл:Context help.GIF

Тематические ссылки:

http://www.codeproject.com/shell/LiviuBirjegaCode.asp

http://www.codeproject.com/useritems/wtlntray.asp


Для того, чтобы подсказка имела вид "облака" (как в коммиксах), нужно установить недокументированный стиль TTS_BALLOON==0x40

Вот ещё пара полезных функций API для работы с подсказками

Указан неподдерживаемый язык.

Вы должны указать язык следующим образом: <source lang="html4strict">...</source>

Поддерживаемые языки:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, aimms, algol68, apache, applescript, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, caddcl, cadlisp, cfdg, cfm, chaiscript, chapel, cil, clojure, cmake, cobol, coffeescript, cpp, csharp, css, cuesheet, d, dart, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, ezt, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, ispfpanel, j, java, java5, javascript, jcl, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nginx, nimrod, nsis, oberon2, objc, objeck, ocaml, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, pic16, pike, pixelbender, pli, plsql, postgresql, postscript, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, qml, racket, rails, rbs, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, rust, sas, scala, scheme, scilab, scl, sdlbasic, smalltalk, smarty, spark, sparql, sql, standardml, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vbscript, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xpp, yaml, z80, zxbasic


CToolTipCtrl::SetDelayTime(TTDT_INITIAL,  мс );//через какое время появится на экране после наведения курсора
CToolTipCtrl::SetDelayTime(TTDT_AUTOPOP,  мс );//время горения подсказки на экране

//мс - время в миллисекундах , тип DWORD


Что делает функция ScrollWindow()

Функция ScrollWindow() всего лишь двигает рисунок, уже нарисованный на контексте окна, на заданное количество пикселов.

К примеру, у имеется нарисованное изображение на клиентской части окна, и нужно сделать скролинг этой части.

Первый путь: Стереть что уже было нарисовано, и перерисовывать все заново с учетом скролинга.

Второй путь: Передвинуть ту часть, которая останется в зоне видимости, и дорисовать недостаюшую часть. Функция ScrollWindow() как раз и пригодится, чтобы передвинуть рисунок на заданное количество пикселов. Останется потом только дорисовать.

Почему список CComboBox не выпадает, хотя клавишами "вверх" и "вниз" значения перебираются?

Нужно задать высоту выпадающего списка: находясь в редакторе форм, нужно щёлкнуть по стрелке комбобокса и за нижний маркер растянуть вниз, тем самым и задать размер выпадающего списка.

Как программно поменять настройки Internet Explorer?

Можно воспользоваться редактированием реестра:

Указан неподдерживаемый язык.

Вы должны указать язык следующим образом: <source lang="html4strict">...</source>

Поддерживаемые языки:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, aimms, algol68, apache, applescript, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, caddcl, cadlisp, cfdg, cfm, chaiscript, chapel, cil, clojure, cmake, cobol, coffeescript, cpp, csharp, css, cuesheet, d, dart, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, ezt, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, ispfpanel, j, java, java5, javascript, jcl, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nginx, nimrod, nsis, oberon2, objc, objeck, ocaml, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, pic16, pike, pixelbender, pli, plsql, postgresql, postscript, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, qml, racket, rails, rbs, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, rust, sas, scala, scheme, scilab, scl, sdlbasic, smalltalk, smarty, spark, sparql, sql, standardml, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vbscript, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xpp, yaml, z80, zxbasic


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\AdvancedOptions\ (всякие настройки)

Как узнать, когда после запуска приложение уже готово к работе?

Можно переопределить функцию CWinApp::OnIdle. Эта функция вызывается всякий раз, когда в очереди сообщений приложения нет больше сообщений. Самый первый вызов функции будет соответствовать моменту, когда приложение стало быть готово к работе.

Как получить короткое и длинное имя файла?

Можно использовать функции API

Указан неподдерживаемый язык.

Вы должны указать язык следующим образом: <source lang="html4strict">...</source>

Поддерживаемые языки:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, aimms, algol68, apache, applescript, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, caddcl, cadlisp, cfdg, cfm, chaiscript, chapel, cil, clojure, cmake, cobol, coffeescript, cpp, csharp, css, cuesheet, d, dart, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, ezt, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, ispfpanel, j, java, java5, javascript, jcl, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nginx, nimrod, nsis, oberon2, objc, objeck, ocaml, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, pic16, pike, pixelbender, pli, plsql, postgresql, postscript, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, qml, racket, rails, rbs, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, rust, sas, scala, scheme, scilab, scl, sdlbasic, smalltalk, smarty, spark, sparql, sql, standardml, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vbscript, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xpp, yaml, z80, zxbasic


GetShortPathName(
	LPCSTR lpszLongPath,
	LPSTR  lpszShortPath,
	DWORD    cchBuffer);	//получить короткий путь

и

Указан неподдерживаемый язык.

Вы должны указать язык следующим образом: <source lang="html4strict">...</source>

Поддерживаемые языки:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, aimms, algol68, apache, applescript, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, caddcl, cadlisp, cfdg, cfm, chaiscript, chapel, cil, clojure, cmake, cobol, coffeescript, cpp, csharp, css, cuesheet, d, dart, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, ezt, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, ispfpanel, j, java, java5, javascript, jcl, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nginx, nimrod, nsis, oberon2, objc, objeck, ocaml, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, pic16, pike, pixelbender, pli, plsql, postgresql, postscript, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, qml, racket, rails, rbs, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, rust, sas, scala, scheme, scilab, scl, sdlbasic, smalltalk, smarty, spark, sparql, sql, standardml, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vbscript, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xpp, yaml, z80, zxbasic


GetLongPathName(
	LPCSTR lpszShortPath,
	LPSTR  lpszLongPath,
	DWORD    cchBuffer);	//получить полный путь


Например имеется путь к файлу:

Указан неподдерживаемый язык.

Вы должны указать язык следующим образом: <source lang="html4strict">...</source>

Поддерживаемые языки:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, aimms, algol68, apache, applescript, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, caddcl, cadlisp, cfdg, cfm, chaiscript, chapel, cil, clojure, cmake, cobol, coffeescript, cpp, csharp, css, cuesheet, d, dart, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, ezt, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, ispfpanel, j, java, java5, javascript, jcl, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nginx, nimrod, nsis, oberon2, objc, objeck, ocaml, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, pic16, pike, pixelbender, pli, plsql, postgresql, postscript, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, qml, racket, rails, rbs, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, rust, sas, scala, scheme, scilab, scl, sdlbasic, smalltalk, smarty, spark, sparql, sql, standardml, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vbscript, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xpp, yaml, z80, zxbasic


D:\program files\Microsoft Office\OFFICE11\winword.exe

функция GetShortPathName() поможет привести его к виду:

Указан неподдерживаемый язык.

Вы должны указать язык следующим образом: <source lang="html4strict">...</source>

Поддерживаемые языки:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, aimms, algol68, apache, applescript, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, caddcl, cadlisp, cfdg, cfm, chaiscript, chapel, cil, clojure, cmake, cobol, coffeescript, cpp, csharp, css, cuesheet, d, dart, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, ezt, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, ispfpanel, j, java, java5, javascript, jcl, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nginx, nimrod, nsis, oberon2, objc, objeck, ocaml, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, pic16, pike, pixelbender, pli, plsql, postgresql, postscript, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, qml, racket, rails, rbs, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, rust, sas, scala, scheme, scilab, scl, sdlbasic, smalltalk, smarty, spark, sparql, sql, standardml, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vbscript, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xpp, yaml, z80, zxbasic


d:\PROGRA~1\MICROS~2\OFFICE11\WINWORD.EXE

а функция GetLongPathName() - наоборот.

Максимальная длина пути файла равна MAX_PATH (==260) символам

В чём разница между сообщениями WM_MOVE и WM_MOVING?

Сообщение VM_MOVING посылается окну, когда пользователь перемещает окно.

Сообщение VM_MOVE посылается окну, когда пользователь завершил перемещение окна (отпустил кнопку мыши).

Как из программы определить каталог, в котором находится эта программа?

Это можно сделать при помощи функции, которая возвращает абсолютное имя модуля.

Указан неподдерживаемый язык.

Вы должны указать язык следующим образом: <source lang="html4strict">...</source>

Поддерживаемые языки:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, aimms, algol68, apache, applescript, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, caddcl, cadlisp, cfdg, cfm, chaiscript, chapel, cil, clojure, cmake, cobol, coffeescript, cpp, csharp, css, cuesheet, d, dart, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, ezt, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, ispfpanel, j, java, java5, javascript, jcl, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nginx, nimrod, nsis, oberon2, objc, objeck, ocaml, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, pic16, pike, pixelbender, pli, plsql, postgresql, postscript, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, qml, racket, rails, rbs, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, rust, sas, scala, scheme, scilab, scl, sdlbasic, smalltalk, smarty, spark, sparql, sql, standardml, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vbscript, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xpp, yaml, z80, zxbasic


GetModuleFileName()

В MFC можно использовать переменную-член класса CWinApp, определённую как

Указан неподдерживаемый язык.

Вы должны указать язык следующим образом: <source lang="html4strict">...</source>

Поддерживаемые языки:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, aimms, algol68, apache, applescript, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, caddcl, cadlisp, cfdg, cfm, chaiscript, chapel, cil, clojure, cmake, cobol, coffeescript, cpp, csharp, css, cuesheet, d, dart, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, ezt, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, ispfpanel, j, java, java5, javascript, jcl, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nginx, nimrod, nsis, oberon2, objc, objeck, ocaml, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, pic16, pike, pixelbender, pli, plsql, postgresql, postscript, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, qml, racket, rails, rbs, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, rust, sas, scala, scheme, scilab, scl, sdlbasic, smalltalk, smarty, spark, sparql, sql, standardml, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vbscript, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xpp, yaml, z80, zxbasic


LPCTSTR m_pszExeName;

Получить доступ можно двумя способами:

Указан неподдерживаемый язык.

Вы должны указать язык следующим образом: <source lang="html4strict">...</source>

Поддерживаемые языки:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, aimms, algol68, apache, applescript, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, caddcl, cadlisp, cfdg, cfm, chaiscript, chapel, cil, clojure, cmake, cobol, coffeescript, cpp, csharp, css, cuesheet, d, dart, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, ezt, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, ispfpanel, j, java, java5, javascript, jcl, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nginx, nimrod, nsis, oberon2, objc, objeck, ocaml, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, pic16, pike, pixelbender, pli, plsql, postgresql, postscript, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, qml, racket, rails, rbs, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, rust, sas, scala, scheme, scilab, scl, sdlbasic, smalltalk, smarty, spark, sparql, sql, standardml, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vbscript, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xpp, yaml, z80, zxbasic


//1
 AfxGetApp()->m_pszExeName;

//2
//extern CMyApp theApp
theApp.m_pszExeName;

Как получить полное имя пользователя и организации, то есть то, что на диалоге system properties (горячая кнопка [ Win ] + Break ) на закладке General перечисленно под пунктом Registred To?

Значение можно взять в реестре:

тут (для Windows NT)

Указан неподдерживаемый язык.

Вы должны указать язык следующим образом: <source lang="html4strict">...</source>

Поддерживаемые языки:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, aimms, algol68, apache, applescript, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, caddcl, cadlisp, cfdg, cfm, chaiscript, chapel, cil, clojure, cmake, cobol, coffeescript, cpp, csharp, css, cuesheet, d, dart, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, ezt, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, ispfpanel, j, java, java5, javascript, jcl, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nginx, nimrod, nsis, oberon2, objc, objeck, ocaml, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, pic16, pike, pixelbender, pli, plsql, postgresql, postscript, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, qml, racket, rails, rbs, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, rust, sas, scala, scheme, scilab, scl, sdlbasic, smalltalk, smarty, spark, sparql, sql, standardml, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vbscript, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xpp, yaml, z80, zxbasic


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

или тут (W98, W95)

Указан неподдерживаемый язык.

Вы должны указать язык следующим образом: <source lang="html4strict">...</source>

Поддерживаемые языки:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, aimms, algol68, apache, applescript, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, caddcl, cadlisp, cfdg, cfm, chaiscript, chapel, cil, clojure, cmake, cobol, coffeescript, cpp, csharp, css, cuesheet, d, dart, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, ezt, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, ispfpanel, j, java, java5, javascript, jcl, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nginx, nimrod, nsis, oberon2, objc, objeck, ocaml, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, pic16, pike, pixelbender, pli, plsql, postgresql, postscript, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, qml, racket, rails, rbs, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, rust, sas, scala, scheme, scilab, scl, sdlbasic, smalltalk, smarty, spark, sparql, sql, standardml, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vbscript, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xpp, yaml, z80, zxbasic


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

Как определить первый свободный ID, который можно использовать при динамичском создании элементов управления?

Можно поступить так: начать перебор значений ID со значения 1000 и, проверяя функцией GetDlgItem(), увеличивать значение на единицу до тех пор, пока не будет найден свободный ID.

Как изменить цвет рамки приложения?

Это можно сделать, если перехватить сообщение WM_NCPAINT, которое отвечает за прорисовку не-клиентской части окна.

Я запускаю экзешник при помощи ::ShellExecute(). Процедура тут же возвращает управление, а как дождаться, когда запущенный процесс завершится, только потом продолжить выполнение программы?

Нужно использовать функции

CreateProcess()

WaitForSingeObject()

Указан неподдерживаемый язык.

Вы должны указать язык следующим образом: <source lang="html4strict">...</source>

Поддерживаемые языки:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, aimms, algol68, apache, applescript, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, caddcl, cadlisp, cfdg, cfm, chaiscript, chapel, cil, clojure, cmake, cobol, coffeescript, cpp, csharp, css, cuesheet, d, dart, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, ezt, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, ispfpanel, j, java, java5, javascript, jcl, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nginx, nimrod, nsis, oberon2, objc, objeck, ocaml, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, pic16, pike, pixelbender, pli, plsql, postgresql, postscript, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, qml, racket, rails, rbs, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, rust, sas, scala, scheme, scilab, scl, sdlbasic, smalltalk, smarty, spark, sparql, sql, standardml, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vbscript, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xpp, yaml, z80, zxbasic


	STARTUPINFO	StartupInfo;
	PROCESS_INFORMATION ProcessInfo;
	DWORD dwRetValue;
	RtlZeroMemory(&StartupInfo, sizeof(StartupInfo));
	StartupInfo.cb = sizeof(StartupInfo);

	//запуск экзешника
	if(!CreateProcess(
		szApplicationName,
		szCommandLine,		//командная строка (можно указать NULL)
		NULL, NULL, FALSE,
		NORMAL_PRIORITY_CLASS,
		NULL,
		szCurrentDirectory,	//рабочая директория (можно указать NULL)
		&StartupInfo,
		&ProcessInfo))
	{
		//ошибка запуска
		DWORD dwdErr=GetLastError(); //определяем ошибку
	}
	else
	{
		//ждём 30 секунд момента, пока процесс завершится
		//(ProcessInfo.hProcess перейдёт в сигнальное состояние)
		DWORD dwd=WaitForSingleObject(ProcessInfo.hProcess, 30000);
		//если задать INFINITE , будет ждать до бесконечности

		//dwd покажет причину завершения процедуры WaitForSingleObject
		//WAIT_OBJECT_0		Состояние объекта переведено в сигнальное 
		//WAIT_TIMEOUT		Кончился таймаут

		//к теме не относится, но для мутекса ещё есть возвращаемое значение:
		//WAIT_ABANDONED	Объект является мутексом, который был занят потоком, затем поток завершился,
		//					не разблокировав мутекс. Мутекс находится в несигнальном состоянии


		//если нужно - смотрим, какое значение вернуло приложение
		GetExitCodeProcess(ProcessInfo.hProcess, &dwRetValue);

		//освобождаем хендлы, открытые CreateProcess
		CloseHandle(ProcessInfo.hThread);
		CloseHandle(ProcessInfo.hProcess);
	}

В szApplicationName может быть либо полный путь к файлу, либо только имя файла. В последнем случае файл будет искаться в текущем каталоге.

szCommandLine может быть NULL, если не надо передавать командную строку запускаемому процессу.

szCurrentDirectory может быть NULL, тогда текущий каталог будет как у родительского процесса.

Как сменить иконку у диалога или мейнфрейма? (поставить свою иконку из ресурсов)

Пример:

Указан неподдерживаемый язык.

Вы должны указать язык следующим образом: <source lang="html4strict">...</source>

Поддерживаемые языки:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, aimms, algol68, apache, applescript, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, caddcl, cadlisp, cfdg, cfm, chaiscript, chapel, cil, clojure, cmake, cobol, coffeescript, cpp, csharp, css, cuesheet, d, dart, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, ezt, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, ispfpanel, j, java, java5, javascript, jcl, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nginx, nimrod, nsis, oberon2, objc, objeck, ocaml, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, pic16, pike, pixelbender, pli, plsql, postgresql, postscript, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, qml, racket, rails, rbs, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, rust, sas, scala, scheme, scilab, scl, sdlbasic, smalltalk, smarty, spark, sparql, sql, standardml, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vbscript, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xpp, yaml, z80, zxbasic


	HICON m_hIcon;
	...
	...
	HICON m_hIcon = AfxGetApp()->LoadIcon(IDR_1);
	SetIcon(m_hIcon, TRUE);

где

IDR_1 - ИД иконки в ресурсах

m_hIcon - хендл типа HICON (естественно - не временный, а, скажем, член класса)