Prev: Simple Valication Check... Question
Next: Reminder - Microsoft Responds to the Evolution of Community
From: Stephen Myers on 28 May 2010 10:26 JCO wrote: > Yeah I think I need more information. I created CHelpDlg class (derived > from CDialog) but could not put a RichEdit Control on it. It causes all > sorts of compile errors. Right now I have a regular CEdit set to handle > Multiple Lines, vertical & horz scrolls. This CEdit (ID = > IDC_EDIT_HISTORY) is as big as the CHelpDlg. > > I don't know how to use the FindResource() & LoadResource() well enough > to make this work although I'm doing some reading on it now. The more I > read the more confusing it is so I'm not sure if I'm going down the > wrong path or not. > > My way of adding the HistoryInfo.rtf file as a resource was to drag it > to the Resource Folder with in Visual Studio's Solution Explorer. When > I select the file History.rtf, the properties shows the relative path to > be: ".\HistoryInfo.rtf". If that makes it a resource, great, but I > just don't know how to connect the dots. > > Hope this is not to confusing... but more help is needed. > > Thanks > JCO > > "Stephen Myers" <""StephenMyers\"@discussions(a)microsoft.com"> wrote in > message news:uR8$cE1#KHA.420(a)TK2MSFTNGP02.phx.gbl... >> JCO wrote: >>> Are there any choices if you don't want to distribute an htm file? >>> >>> "Goran" <goran.pusic(a)gmail.com> wrote in message >>> news:b70939de-4038-4975-b876-5f6934394414(a)z33g2000vbb.googlegroups.com... >>> >>>> On May 19, 9:02 pm, "JCO" <some...(a)somewhere.com> wrote: >>>>> Using VS2008, MFC Dialog App >>>>> >>>>> In my menu, I have a Help>Information. >>>>> >>>>> I don't want to display the typical help (.chm file). I have a >>>>> simply .htm >>>>> file that I would like this menu to display. However, I don't want to >>>>> distribute the htm file. So here's my two Questions. >>>>> >>>>> Question 1: >>>>> If I drag my Info.htm file onto the solution explorer it will >>>>> display with >>>>> the source files. Does this mean it gets compiled as part of the exe >>>>> (regardless of any code)? >>>>> Question 2: >>>>> Assuming that this is true, what would be the easiest way to call this >>>>> Info.htm using the menu Help>Information? >>>> >>>> If you distribute HTML with your app, you can use ShellExecute to >>>> launch HTML viewer (a browser). You might add resources of type "HTML" >>>> to your exe resources with resource editor and launch browser using >>>> res:// >>>> protocol. Examples are not hard to find, and there has been a similar >>>> discussion on that here, not long ago. You can also put WebBrowser >>>> control of IE into your about dialog and display same HTML. >>>> >>>> Goran. >>> >> Try this: >> >> 1. Save help document as help.RTF. >> >> 2. Add help.rtf to your resources. >> >> 3. Use LoadResource() etc to get a pointer to the resource as a string. >> >> 4. Load it into a Rich Edit Control. >> >> Sorry that there are a number of details missing. >> >> HTH >> Steve > The rtf file should show up as a resource in the resource view of the project. If it does, take careful note of the name of the node it appears in as well as whether there are quotes around the names. In my case I have TESTFIRE RTF "res\\procedure.rtf" in the .rc file. This shows up in the Resource View as a type "RTF" and the resource named "TESTFIRE". I would then create a dialog and insert a Rich Edit Control in it. Make sure that AfxInitRichEdit2() is called as part of the initialization. Using the resource editor, add a CRichEditCtrl member, m_REControl (or some such). In the dialog's OnInitDialog, add the following. m_REControl.SetTextMode(TM_RICHTEXT); HINSTANCE hInstance = AfxGetApp()->m_hInstance; HRSRC hRsrcInfo = FindResource(hInstance,_T("TESTFIRE"),_T("RTF")); if(hRsrcInfo == NULL){ DWORD err = GetLastError(); // Missing resource Procedure.rtf ASSERT(false); } else{ DWORD dwLen = SizeofResource(hInstance,hRsrcInfo); HGLOBAL hRsrc = LoadResource(hInstance,hRsrcInfo); if(!hRsrc){ DWORD err = GetLastError(); // Unable to LoadResource resource Procedure.rtf ASSERT(false); } else{ // Be careful here. We're using ANSI so char * is appropriate. // You will probably use TCHAR, and dwLen will need to be // divided by sizeof TCHAR char *pText = (char *)LockResource(hRsrc); CString s(pText,dwLen); m_REControl.SetWindowText(s); } } CWinApp can probably be used to get to FindResource etc. HTH Steve
From: JCO on 28 May 2010 12:36 After a few attempts, I got the .rc file to accept this resource as shown below. The path is slightly different than your example but is shows up in the Resource View okay. /////////////////////////////////////////////////////////////////////////////// // MY_OWN_RESOURCETYPE // IDR_APP_HISTORY RTF ".\\HistoryInfo.rtf" My text in the RichEditControl looks like this: {\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31506\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;} {\f34\fbidi \froman\fcharset1\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose "Stephen Myers" <""StephenMyers\"@discussions(a)microsoft.com"> wrote in message news:O8#$EHn$KHA.5560(a)TK2MSFTNGP02.phx.gbl... > JCO wrote: >> Yeah I think I need more information. I created CHelpDlg class (derived >> from CDialog) but could not put a RichEdit Control on it. It causes all >> sorts of compile errors. Right now I have a regular CEdit set to handle >> Multiple Lines, vertical & horz scrolls. This CEdit (ID = >> IDC_EDIT_HISTORY) is as big as the CHelpDlg. >> >> I don't know how to use the FindResource() & LoadResource() well enough >> to make this work although I'm doing some reading on it now. The more I >> read the more confusing it is so I'm not sure if I'm going down the wrong >> path or not. >> >> My way of adding the HistoryInfo.rtf file as a resource was to drag it to >> the Resource Folder with in Visual Studio's Solution Explorer. When I >> select the file History.rtf, the properties shows the relative path to >> be: ".\HistoryInfo.rtf". If that makes it a resource, great, but I just >> don't know how to connect the dots. >> >> Hope this is not to confusing... but more help is needed. >> >> Thanks >> JCO >> >> "Stephen Myers" <""StephenMyers\"@discussions(a)microsoft.com"> wrote in >> message news:uR8$cE1#KHA.420(a)TK2MSFTNGP02.phx.gbl... >>> JCO wrote: >>>> Are there any choices if you don't want to distribute an htm file? >>>> >>>> "Goran" <goran.pusic(a)gmail.com> wrote in message >>>> news:b70939de-4038-4975-b876-5f6934394414(a)z33g2000vbb.googlegroups.com... >>>>> On May 19, 9:02 pm, "JCO" <some...(a)somewhere.com> wrote: >>>>>> Using VS2008, MFC Dialog App >>>>>> >>>>>> In my menu, I have a Help>Information. >>>>>> >>>>>> I don't want to display the typical help (.chm file). I have a >>>>>> simply .htm >>>>>> file that I would like this menu to display. However, I don't want >>>>>> to >>>>>> distribute the htm file. So here's my two Questions. >>>>>> >>>>>> Question 1: >>>>>> If I drag my Info.htm file onto the solution explorer it will display >>>>>> with >>>>>> the source files. Does this mean it gets compiled as part of the exe >>>>>> (regardless of any code)? >>>>>> Question 2: >>>>>> Assuming that this is true, what would be the easiest way to call >>>>>> this >>>>>> Info.htm using the menu Help>Information? >>>>> >>>>> If you distribute HTML with your app, you can use ShellExecute to >>>>> launch HTML viewer (a browser). You might add resources of type "HTML" >>>>> to your exe resources with resource editor and launch browser using >>>>> res:// >>>>> protocol. Examples are not hard to find, and there has been a similar >>>>> discussion on that here, not long ago. You can also put WebBrowser >>>>> control of IE into your about dialog and display same HTML. >>>>> >>>>> Goran. >>>> >>> Try this: >>> >>> 1. Save help document as help.RTF. >>> >>> 2. Add help.rtf to your resources. >>> >>> 3. Use LoadResource() etc to get a pointer to the resource as a string. >>> >>> 4. Load it into a Rich Edit Control. >>> >>> Sorry that there are a number of details missing. >>> >>> HTH >>> Steve >> > The rtf file should show up as a resource in the resource view of the > project. If it does, take careful note of the name of the node it appears > in as well as whether there are quotes around the names. > > In my case I have > TESTFIRE RTF "res\\procedure.rtf" > > in the .rc file. This shows up in the Resource View as a type "RTF" and > the resource named "TESTFIRE". > > I would then create a dialog and insert a Rich Edit Control in it. Make > sure that AfxInitRichEdit2() is called as part of the initialization. > > Using the resource editor, add a CRichEditCtrl member, m_REControl (or > some such). > > In the dialog's OnInitDialog, add the following. > > m_REControl.SetTextMode(TM_RICHTEXT); > HINSTANCE hInstance = AfxGetApp()->m_hInstance; > HRSRC hRsrcInfo = FindResource(hInstance,_T("TESTFIRE"),_T("RTF")); > if(hRsrcInfo == NULL){ > DWORD err = GetLastError(); > // Missing resource Procedure.rtf > ASSERT(false); > } > else{ > DWORD dwLen = SizeofResource(hInstance,hRsrcInfo); > HGLOBAL hRsrc = LoadResource(hInstance,hRsrcInfo); > if(!hRsrc){ > DWORD err = GetLastError(); > // Unable to LoadResource resource Procedure.rtf > ASSERT(false); > } > else{ > // Be careful here. We're using ANSI so char * is appropriate. // You > will probably use TCHAR, and dwLen will need to be // divided by sizeof > TCHAR > char *pText = (char *)LockResource(hRsrc); > CString s(pText,dwLen); > m_REControl.SetWindowText(s); > } > } > > CWinApp can probably be used to get to FindResource etc. > > HTH > Steve >
From: JCO on 28 May 2010 13:00 Sorry my mistake. After I changed it to use the TCHAR and dwLen/sizeof(TCHAR)... This works great. sorry for the bother of the extra work you did but, this is really appreciated. "Stephen Myers" <""StephenMyers\"@discussions(a)microsoft.com"> wrote in message news:O8#$EHn$KHA.5560(a)TK2MSFTNGP02.phx.gbl... > JCO wrote: >> Yeah I think I need more information. I created CHelpDlg class (derived >> from CDialog) but could not put a RichEdit Control on it. It causes all >> sorts of compile errors. Right now I have a regular CEdit set to handle >> Multiple Lines, vertical & horz scrolls. This CEdit (ID = >> IDC_EDIT_HISTORY) is as big as the CHelpDlg. >> >> I don't know how to use the FindResource() & LoadResource() well enough >> to make this work although I'm doing some reading on it now. The more I >> read the more confusing it is so I'm not sure if I'm going down the wrong >> path or not. >> >> My way of adding the HistoryInfo.rtf file as a resource was to drag it to >> the Resource Folder with in Visual Studio's Solution Explorer. When I >> select the file History.rtf, the properties shows the relative path to >> be: ".\HistoryInfo.rtf". If that makes it a resource, great, but I just >> don't know how to connect the dots. >> >> Hope this is not to confusing... but more help is needed. >> >> Thanks >> JCO >> >> "Stephen Myers" <""StephenMyers\"@discussions(a)microsoft.com"> wrote in >> message news:uR8$cE1#KHA.420(a)TK2MSFTNGP02.phx.gbl... >>> JCO wrote: >>>> Are there any choices if you don't want to distribute an htm file? >>>> >>>> "Goran" <goran.pusic(a)gmail.com> wrote in message >>>> news:b70939de-4038-4975-b876-5f6934394414(a)z33g2000vbb.googlegroups.com... >>>>> On May 19, 9:02 pm, "JCO" <some...(a)somewhere.com> wrote: >>>>>> Using VS2008, MFC Dialog App >>>>>> >>>>>> In my menu, I have a Help>Information. >>>>>> >>>>>> I don't want to display the typical help (.chm file). I have a >>>>>> simply .htm >>>>>> file that I would like this menu to display. However, I don't want >>>>>> to >>>>>> distribute the htm file. So here's my two Questions. >>>>>> >>>>>> Question 1: >>>>>> If I drag my Info.htm file onto the solution explorer it will display >>>>>> with >>>>>> the source files. Does this mean it gets compiled as part of the exe >>>>>> (regardless of any code)? >>>>>> Question 2: >>>>>> Assuming that this is true, what would be the easiest way to call >>>>>> this >>>>>> Info.htm using the menu Help>Information? >>>>> >>>>> If you distribute HTML with your app, you can use ShellExecute to >>>>> launch HTML viewer (a browser). You might add resources of type "HTML" >>>>> to your exe resources with resource editor and launch browser using >>>>> res:// >>>>> protocol. Examples are not hard to find, and there has been a similar >>>>> discussion on that here, not long ago. You can also put WebBrowser >>>>> control of IE into your about dialog and display same HTML. >>>>> >>>>> Goran. >>>> >>> Try this: >>> >>> 1. Save help document as help.RTF. >>> >>> 2. Add help.rtf to your resources. >>> >>> 3. Use LoadResource() etc to get a pointer to the resource as a string. >>> >>> 4. Load it into a Rich Edit Control. >>> >>> Sorry that there are a number of details missing. >>> >>> HTH >>> Steve >> > The rtf file should show up as a resource in the resource view of the > project. If it does, take careful note of the name of the node it appears > in as well as whether there are quotes around the names. > > In my case I have > TESTFIRE RTF "res\\procedure.rtf" > > in the .rc file. This shows up in the Resource View as a type "RTF" and > the resource named "TESTFIRE". > > I would then create a dialog and insert a Rich Edit Control in it. Make > sure that AfxInitRichEdit2() is called as part of the initialization. > > Using the resource editor, add a CRichEditCtrl member, m_REControl (or > some such). > > In the dialog's OnInitDialog, add the following. > > m_REControl.SetTextMode(TM_RICHTEXT); > HINSTANCE hInstance = AfxGetApp()->m_hInstance; > HRSRC hRsrcInfo = FindResource(hInstance,_T("TESTFIRE"),_T("RTF")); > if(hRsrcInfo == NULL){ > DWORD err = GetLastError(); > // Missing resource Procedure.rtf > ASSERT(false); > } > else{ > DWORD dwLen = SizeofResource(hInstance,hRsrcInfo); > HGLOBAL hRsrc = LoadResource(hInstance,hRsrcInfo); > if(!hRsrc){ > DWORD err = GetLastError(); > // Unable to LoadResource resource Procedure.rtf > ASSERT(false); > } > else{ > // Be careful here. We're using ANSI so char * is appropriate. // You > will probably use TCHAR, and dwLen will need to be // divided by sizeof > TCHAR > char *pText = (char *)LockResource(hRsrc); > CString s(pText,dwLen); > m_REControl.SetWindowText(s); > } > } > > CWinApp can probably be used to get to FindResource etc. > > HTH > Steve >
First
|
Prev
|
Pages: 1 2 Prev: Simple Valication Check... Question Next: Reminder - Microsoft Responds to the Evolution of Community |