Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Почему при пошаговой отработке программы в Builderе команда

30K
08 марта 2009 года
asmel
50 / / 05.03.2009
Почему при пошаговой отработке программы в Builderе команда
PostMessage(hWindow,WM_SYSCOMMAND,SC_CLOSE,0); выполняется а в *.exe шнике не выполняется

Код:
#include <vcl.h>
#include "UnitMain.h"

#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma hdrstop

HWND hWindow;

ShellExecute(NULL, NULL, "c:\calc.exe", NULL, NULL, SW_RESTORE);

hWindow = FindWindow(NULL, "Калькулятор Плюс");

PostMessage(hWindow,WM_SYSCOMMAND,SC_CLOSE,0); // не выполняется в *.exe
SendMessage(hWindow,WM_CLOSE, NULL, NULL); // выполняется и в Buildere и в *.exe
255
08 марта 2009 года
Dart Bobr
1.4K / / 09.04.2004
Да сделайте лог, и после каждого шага проверяйте GetLastError.
30K
08 марта 2009 года
asmel
50 / / 05.03.2009
DartBobr честно говоря, из того, что Вы предложили, я ничего не понял - сейчас разбираюсь со второй в моей жизни программой на С++.
255
08 марта 2009 года
Dart Bobr
1.4K / / 09.04.2004
Приведеные вами функции умеют возвращать код ошибки. Код ошибки можна узнать вызвав функцию GetLastError. Для того, чтобы не парить себе мозги, предлгаю вам после использования каждой апи функции проверять код ошибки и записывать в файл, а потом посмотреть файл и понять на каком этапе возникает проблема.
Пример использования:
 
Код:
int err = 0;
if (ShellExecute(NULL, NULL, "c:\calc.exe", NULL, NULL, SW_RESTORE) <= 32)
  err = GetLastError();

Подробнее смотрите в мсдн.
30K
09 марта 2009 года
asmel
50 / / 05.03.2009
Dart Bobг сделал так, как Вы советовали
Код:
char f_err[10]= "0";
HWND hWindow; // окно "Калькулятор Плюс"
hWindow = FindWindow(NULL, "Калькулятор Плюс");
if (MoveWindow (hWindow, 600, 100, 500, NULL, NULL) <= 32)
{
err = GetLastError();
f = fopen("c:\error.txt", "a+");
f_err[0] = (char)err;
fwrite(f_err,1,5,f);
fclose(f);
}

получил в ответ
ERROR_CALL_NOT_IMPLEMENTED
120 This function is not supported on this system.
Таким образом, в системе Builder функция переноски окна приложения поддерживается, а в моем WindowsXP не поддерживается!?

И еще, Вы не подскажете, что означают звездочки справа от заголовка темы в главном окне форума.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог