рдпрд╣ рд▓реЗрдЦ рд▓реЗрдЦ рдХрд╛ рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реИ -
рдХрд╛рд░реНрдп рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рд╕рдВрдЧрдарди: рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдЪреИрдирд▓ ред рдЕрдЧрд▓реА рдХрдбрд╝реА рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрджреЗрд╢ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреИрджрд╛ рд╣реБрдЖ рдерд╛ред
рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмреАрдЪ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдп рдереНрд░реЗрдб рдХреЗ рд╕рд╛рде рдЗрдВрдЬрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдкреНрд░рдмрдВрдзрди рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдФрд░ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЖрд╡реЗрджрди рдмрдВрдж рдХрд░рддреЗ рд╕рдордп рдереНрд░реЗрдбреНрд╕ рдХреЗ рдЖрдкрд╕реА рдЕрд╡рд░реЛрдз рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬреЛ рдЗрдВрдЬрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЗрдВрдЬрди рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд░рд┐рдорд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреА рддрд░рд╣ рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдкреИрдЯрд░реНрди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЪрд▓рд┐рдП рдЗрдВрдЬрди рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред рд╣рдорд╛рд░рд╛ рдЗрдВрдЬрди рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╕реЗрдЯ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рд░рд╛рдЬреНрдп рднреА рд╣реЛрдВрдЧреЗред рдореБрдЭреЗ рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯ рдорд┐рд▓рд╛: NotStarted, StartPending, Started, PausePending, Paused, ResumePending, StopPendingред
рдЗрди рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЬреАрдпреВрдЖрдИ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣реА рд╣реИ, GUI рдЗрдВрдЬрди рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛, рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм NotStarted рд░рд╛рдЬреНрдп рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ GUI рдХреЛ "рдкреНрд░рд╛рд░рдВрдн" рдмрдЯрди рдФрд░ "рд░реЛрдХреЗрдВ" "рдЬрд╛рд░реА рд░рдЦреЗрдВ" рдФрд░ "рд░реЛрдХреЗрдВ" рдмрдЯрди рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рддрджрдиреБрд╕рд╛рд░, рдЬрдм рдЖрдк рд░реЛрдХреА рдЧрдИ рд╕реНрдерд┐рддрд┐ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдЯрд╛рд░реНрдЯ рдФрд░ рдкреЙрдЬрд╝ рдмрдЯрди рд▓реЙрдХ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдХрдВрдЯрд┐рдиреНрдпреВ рдФрд░ рд╕реНрдЯреЙрдк рдмрдЯрди рдЕрдирд▓реЙрдХ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдмрдЯрди рдХреЗ рд╕рд╛рде WTL рд╕рдВрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдЬрди рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХрд╛ рдЗрдВрдЬрди рдХреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
void CMainDlg::OnStateChanged(EngineState::State state) {
рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрдВрдЬрди рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╕реЗрдЯ рд╣реЛрдЧрд╛: рдкреНрд░рд╛рд░рдВрдн, рд░реЛрдХреЗрдВ, рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ, рд░реЛрдХреЗрдВ, рдЬрд┐рд╕реЗ рд╕рдВрд╡рд╛рдж рд╡рд░реНрдЧ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЯрди рдХреНрд▓рд┐рдХ рд╣реИрдВрдбрд▓рд░ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдПрдХ рд░рд╛рдЬреНрдп рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЛ GUI рдереНрд░реЗрдб рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╣реИ рдХрд┐, рдЬрдм GUI рдереНрд░реЗрдб "рдкреНрд░рд╛рд░рдВрдн" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╣реИ, рдЗрдВрдЬрди рдкреНрд░рд╛рд░рдВрдн рдпрд╛ рд░реБрдХреА рд╣реБрдИ рд╕реНрдерд┐рддрд┐ рдкрд░ рдЕрддреБрд▓реНрдп рд░реВрдк рд╕реЗ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╣реИрдВрдбрд▓рд░ рдХреЛ "рдкреНрд░рд╛рд░рдВрдн" рдмрдЯрди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЗрдВрдЬрди рдХреЗ рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред
рд╕реНрдЯрд╛рд░реНрдЯрдкрд┐рдВрдЧ рдЬреИрд╕реЗ рд▓рдВрдмрд┐рдд рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рд╕рдВрдХреНрд░рдордг, рдирд┐рдпрдВрддреНрд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХреА рдХреЙрд▓ рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯ, рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╕реНрдЯрд╛рд░реНрдЯ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрдВрдЬрди рдореЗрдВ рд╕реНрдЯрд╛рд░реНрдЯрдкреЗрдВрдбрд┐рдВрдЧ рд╕реНрдерд┐рддрд┐ рд╣реЛрдЧреАред рдпрд╣реА рд╣реИ, StartPending рд░рд╛рдЬреНрдп рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреА рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рднрд▓реЗ рд╣реА рдкреНрд░рд╛рд░рдВрдн рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗред
рдЖрдЗрдП рдЗрдВрдЬрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦреЗрдВред
рдореИрдВ рдЗрдВрдЬрди рдХреНрд▓рд╛рд╕ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдИ рднреА рд▓рд╛рдкрддрд╛ рднрд╛рдЧ рдПрдХ рдмрдбрд╝реА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛ рд╕рдХрддрд╛ рд╣реИред
CEngine рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреНрд▓рд╛рд╕ CEngine рдХреА рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рд╕рдВрд╡рд╛рдж рдХреЗ WTL рд╡рд░реНрдЧ рдХрд╛ рд╕рджрд╕реНрдп рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдкреНрд░рд╛рд░рдВрдн, рд╕реНрдЯреЙрдк, рдХрдВрдЯрд┐рдиреНрдпреВ, рдФрд░ рдкреЙрдЬрд╝ рдХреАрдЬрд╝ рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕рдВрд╡рд╛рдж рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рд╕реЗрдЯ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ CEngine рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрд╡рд╛рдж рд╡рд░реНрдЧ IEngineEvents рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдЬрди рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕реВрдЪрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ OnStateChanged рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕реНрдЯреНрд░реАрдо рд╕рдВрджреЗрд╢ CEngine рд╡рд░реНрдЧ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реИрдВ, рд╕рдВрд╡рд╛рдж рд╡рд░реНрдЧ рдорд╛рдирдХ рд╡рд┐рдзрд┐рдпреЛрдВ WTL :: CMessageLoop :: AddMessageFilter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡рд┐рдВрдбреЛ рд╕рдВрджреЗрд╢ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ WTL :: CMessageililter рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:
class CMessageFilter { public: virtual BOOL PreTranslateMessage(MSG* pMsg) = 0; };
PreTranslateMessage рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди CEngine :: ProcessMessage рдлрд╝рдВрдХреНрд╢рди рдХреА рдкреБрди: рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ
рдЖрд╡реЗрджрди рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╕рдордп рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдЖрдкрд╕реА рдЕрд╡рд░реЛрдз рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрд╡рд╛рдж рд╡рд░реНрдЧ рдореЗрдВ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ CSyncChannel рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ :: CEngine рд╡рд░реНрдЧ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдореЗрдВ рдмрдВрджред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ CEngine рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдореВрд░реНрдд рд▓рд╛рдн рджреЗрддрд╛ рд╣реИред