Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > MS Word в дочернем окне


Автор: vespa 18.6.2007, 15:00
Есть основное приложение. Как сделать так, чтобы Word запускался не в отдельном окне, а внутри главной формы?. Т.е создать MDI-приложение, у которого дочерние окна типа Word.

Автор: Wanderer2019 19.6.2007, 14:55
средствами WinApi это вроде бы можно сделать... на форуме обсуждалось.

обрати внимание на API SetParent и ShowWindow.

Автор: Wanderer2019 19.6.2007, 15:45
Код

 public partial class Form1 : Form
    {
        [DllImport("user32.dll")]
        private static extern int SetParent(IntPtr hWndChild, IntPtr
hWndNewParent);

        [DllImport("User32")]
        private static extern int ShowWindow(IntPtr hWnd, int nCmdShow);

        private const int SW_MAXIMIZE = 3;

        Process p = new Process(); 

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
            p = Process.GetProcessesByName("winword")[0];
            wordApp.Visible = true;
            SetParent(p.MainWindowHandle, this.Handle);
            ShowWindow(p.MainWindowHandle, SW_MAXIMIZE);
            
        }
    }

Автор: redig 9.10.2007, 01:27
А у меня нет namespace - Microsoft.Office  почему то!?
Как подключить Microsoft.Office ?


Project->Add Reference->Com->Microsoft Word 11.0 Object Library

Автор: redig 9.10.2007, 02:43
А можно ли как то отобразить используя Microsoft.Office.Interop.Word только документ?
Т.е. не весь Word, а только окно с  форматированным текстом документа.

Автор: mr.DUDA 9.10.2007, 09:50
ИМХО, можно показать только всё окно, т.к. ворд "думает" что его запускают как обычно, хоть на самом деле и встраивают в COM-контейнер.

Автор: Legolas 9.10.2007, 22:50
попытался попробовать данный код - появляется ошибка -
Код

 Error    3    The type or namespace name 'Interop' does not exist in the namespace 'Microsoft.Office' (are you missing an assembly reference?)    


подчеркивает данный фрагмент строчки: (Interop)
Код

Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();

подскажите в чем проблема?

+

такие предупреждения:
Код

Warning    1    The referenced component 'Word' could not be found.    


+

Код

Warning    4    Cannot find wrapper assembly for type library "Word".


PS: а вообще я пытаюсь сделать что-нить похожее но только с вэб-браузером. к примеру firefox или IE.

Кстати, вот Solution: там что=то с вордом опять-таки нето... :(
user posted image

Автор: redig 10.10.2007, 06:09
Цитата(mr.DUDA @  9.10.2007,  09:50 Найти цитируемый пост)
ИМХО, можно показать только всё окно, т.к. ворд "думает" что его запускают как обычно, хоть на самом деле и встраивают в COM-контейнер

Да, видимо так и есть.
Вобщем стояла задача организовать просмотр документов Office (xls,doc,rtf,pps) в своей программе, что бы документ можно было только смотреть, прокручивать. 
Нашел решение: Сохранять документ в формат "mht"-веб-архив, и открывать его в компоненте webBrowser. 

Автор: mr.DUDA 10.10.2007, 08:05
Legolas, видимо пример скопирован с компа, на котором установлена другая версия офиса. Нужно передобавить reference на Word.

Автор: Legolas 10.10.2007, 16:20
mr.DUDA, я сам добавлял. какие еще могут  быть причины?

Автор: Legolas 10.10.2007, 22:38
подскажите пожалуйста в чем причина ошибки?

Автор: redig 10.10.2007, 23:50
Цитата(Legolas @  10.10.2007,  22:38 Найти цитируемый пост)
подскажите пожалуйста в чем причина ошибки? 

Попробуте установить это обновление http://download.microsoft.com/download/8/3/a/83a40b5a-5050-4940-bcc4-7943e1e59590/O2003PIA.EXE
Мне помогло.

Автор: Legolas 11.10.2007, 19:57
redig, а что это за обновление? у меня винда - лицензия  smile  сама всё время чёто качает... (достала уже) )) при установки требует указать путь - куда мне это дело запихнуть?

Автор: Legolas 12.10.2007, 20:44
тему ап!

Автор: redig 22.10.2007, 08:25
Цитата(Legolas @  11.10.2007,  19:57 Найти цитируемый пост)
redig, а что это за обновление? у меня винда - лицензия    сама всё время чёто качает... (достала уже) )) при установки требует указать путь - куда мне это дело запихнуть?


Извиняюсь, что сразу не сказал.
Это обновленные библиотечки Office.Core. Распаковывайте куда хотите и установите. Они установятся куда нужно.
В Студии в проекте нужно будет удалить старые и подключить заново. Или просто достаточно перегрузить студию( не помню точно).

Автор: AET 4.12.2007, 15:11
 в меню сделать сылку на word и чтобы открылась в дочерном окне
примерно так 
Код
private void officeWordToolStripMenuItem_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("C:\\Program Files\\Microsoft Office\\Office11\\winword.exe");
            
        }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)