Страница: 1 | 
		
		 
			   
			 
			 
			 
			 Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Возврат управления
     
    
Добавлено: 10.07.04 15:56
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
    
 EROS
      
       
  
Парни, вот такая проблема...
 
    
К примеру имеется несколько форм с накладными и одна форма для работы с товаром. В этой форме юзер удаляет какой-либо товар или меняет цену и т.д., а он уже выдан в накладной.. Я пошел по следующему пути:
- При измении в товаре я через SendMessage рассылаю всем формам в MDI-приложение предварительно зарегестрированное сообщение.
- Форма его отлавливает и вносит измения(переданные в сообщении) в накладную 
 Проблема заключается в том, что прога зависает,пока все накладные не обработают полученное сообщение.Другими словами управление не возвращается до окончания обработки сообщения другими формами..
Возможно ли сделать так чтобы накладные обрабатывали сообщение в фоновом режиме, т.е. без захвата управления?
Возможно надо использовать PostMessage? Но каков тогда порядок обработки полученных сообщений формой?
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 6
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа:
 sne
![]()
![]()
![]()
![]()
![]()
Разработчик Offline Client
ICQ: 233286456 
Вопросов: 34
Ответов: 5445
      
 Web-сайт:  
 Профиль |  | #1
      
Добавлено:  10.07.04 16:30
       
    
       
  
Попробуй Пост... возможно и подойдет... правда лишь только при условии, что ты в качестве lParam не передаешь каких-нибудь данных, например UDT или ссылку на массив...
 
    
Т.к. в этом случае массив может быть уничтожен еще до окончания работы с ним других процедур...
Тут бы в самый раз запустить кол-во потоков равное кол-ву форм... на каждую по потоку... но т.к. это невозможно, стоит попробовать ПостМессадж...
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа:
 cresta
![]()
![]()
Вопросов: 117
Ответов: 1538
      
 Профиль |  | #2
       
Добавлено:  10.07.04 17:01
       
    
       
  
SendMessage передает сообщение в оконную процедуру немедленно и не возвращается, пока сообщение не обработано. Сообщение обрабатывается сразу, остальные сообщения в очереди отодвигаются на потом. PostMessage передает сообщение в конец очереди сообщений и возвращается не ожидая, пока твоё сообщение будет  обработано. В этом случае сообщение будет обработано только когда до него дойдёт очередь.
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа:
 EROS
![]()
![]()
![]()
![]()
Вопросов: 58
Ответов: 4255
 Профиль |  | #3
       
Добавлено:  10.07.04 17:58
       
    
       
  
sne:
 
    
В lParam я планирую передавать значение Long(ID изменённого товара)..
Надеюсь, с ним ничего не случиться? В SendMessage этот вариант отлично работает.
		
	  
			 
	
		 
    
       
    
Номер ответа: 4 
      
Автор ответа:
 sne
![]()
![]()
![]()
![]()
![]()
Разработчик Offline Client
ICQ: 233286456 
Вопросов: 34
Ответов: 5445
      
 Web-сайт:  
 Профиль |  | #4
      
Добавлено:  10.07.04 18:18
       
    
       
  
Если товар для всех один, и это значение меняться не будет, то должно быть все впорядке...
 
    
по-идее...
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа:
 EROS
![]()
![]()
![]()
![]()
Вопросов: 58
Ответов: 4255
 Профиль |  | #5
       
Добавлено:  11.07.04 03:31
       
    
       
  
sne:
 
    
А почему потоки не реальны?? В VB6 с этим трудности?
		
	  
			 
	
		 
    
       
    
Номер ответа: 6 
      
Автор ответа:
 sne
![]()
![]()
![]()
![]()
![]()
Разработчик Offline Client
ICQ: 233286456 
Вопросов: 34
Ответов: 5445
      
 Web-сайт:  
 Профиль |  | #6
      
Добавлено:  11.07.04 03:37
       
    
       
  
небольшие