Поле Edit и буфер
У меня есть функция которая из поля Edit копирует содержимое в буфер (буфер обявлен глобально) и есть другая функция которая должна выводить этот буфер в МеssageBox,но ничго не выводит,из Edit считывает правильно.
Либо вынести buf за пределы функции(в с++ область видимости переменной задаётся либо операторными скобками, либо одно из двух), либо переавать в consume адрес буффера, а сам consume вызывать в procedure пока она не завершилась и не очистила стек от локальных переменных. Память, кстати, за собой высвобождать надо.
Пятница вчера была, модуль телепатии у всех сбоит
Я что-то вопроса в посте не заметил.
Код:
volatile char *buf;
HWND hWnd;
DWORD produce(){
while(start==1){
EnterCriticalSection;
if(flag==1){
int strlen=GetWindowTextLength(edit1);//длина
char *buf=new char[strlen+1];
GetWindowText(edit1,(LPWSTR)buf,strlen+1); //считываем из поля Edit в буфер
flag=0;
}
LeaveCriticalSection;
}
return 0;
}
DWORD consume(){
while(start==1){
EnterCriticalSection;
if(flag==0){
SendMessage(listbox, LB_ADDSTRING, 0, (LPARAM)buf);//отправляем значение буфера в // listbox
flag=4;
}
LeaveCriticalSection;
}
return 0;
}
HWND hWnd;
DWORD produce(){
while(start==1){
EnterCriticalSection;
if(flag==1){
int strlen=GetWindowTextLength(edit1);//длина
char *buf=new char[strlen+1];
GetWindowText(edit1,(LPWSTR)buf,strlen+1); //считываем из поля Edit в буфер
flag=0;
}
LeaveCriticalSection;
}
return 0;
}
DWORD consume(){
while(start==1){
EnterCriticalSection;
if(flag==0){
SendMessage(listbox, LB_ADDSTRING, 0, (LPARAM)buf);//отправляем значение буфера в // listbox
flag=4;
}
LeaveCriticalSection;
}
return 0;
}