MFC Application in VC++ - visual-c++

I have developed a desktop application using MFC, which has FILE, EDIT, VIEW and HELP options,along with one pen to write on the opened document which saves as test1. It is allowing me to open only test1 or test2 etc. Apart from these types of files, if i want to open PPTs or PDFs how can i do it?
The code to open a file is autogenerated by Visual Studio 2008. Now i need to modify the same.

This is something Microsoft doesn't provide any Wizards to do (at least not directly). The basic idea is that you have to create and add new document and view classes for the new file types. Then you need to add document strings to the string table to describe the association between the file extensions and the document/view classes. Then you register each document/view pair in the app class using the strings you added to the string table.
By far the easiest way to do this is to generate the document, view, and string in another (otherwise throwaway) application, grab the document, view, registration string and registration code from that application and put them into your application. Then generate another throwaway application for the next file extension.
That gives you a skeleton doc/view for each file extension. From there, it's up to you to write the code to actually open, display, edit, save, etc., that type of file. That's not going to be trivial for either PDF or (especially) PPT -- unless you "delegate" and use something like an ActiveX control to do the real work. If you want to do that, the Adobe ActiveX control works reasonably well (somewhat limited capabilities, but it'll show up essentially the same as a PDF in a web browser). Offhand I don't remember whether MS provides an ActiveX control for viewing PPT files. There is a free PPT viewer, but if memory serves it's an executable, rather than a control.

Related

Disable copy function in PDFTRON for Android

Is it possible to disable the copy option of the lib when selecting a text in the PDF using the PDFTron lib for Android?
I tried to search for the string, but also have not found it.
If you are using one of the mobile SDK's, or using our PDFViewWPF control for .Net 4+, then this is possible by modifying the tools code that is provided. There will one or two text selection tools, for which you can just comment out. Plus you would want to disable ctrl-c, and right click and select copy abilities. Exact code changes depends on platform. If you are using our older C++ PDFViewCtrl class this is harder to do, but I suspect you are not on this anyway.
Be aware though, there is no real way to prevent a user from extracting text from a PDF, since they can always open it in another PDF viewer and do it there.
See this form post for more info, including how to scramble the unicode values of text.
https://groups.google.com/forum/#!searchin/pdfnet-sdk/disable$20text/pdfnet-sdk/luWQmyhRDTw/z7UIGuu9uYkJ
Note, you will probably be interested in the PDFTron WebViewer technology, which provides much greater control over content. In particular, the original PDF file is never exposed to anyone for download. You can also encrypt the XOD file, so it cannot be opened in an XPS viewer, and you have full control over the UI, including disabling text search/extraction.
https://www.pdftron.com/webviewer/showcase/
https://www.pdftron.com/webviewer/index.html

How can I set a file association from a custom file type to a program

Let's say I make a custom file that actually corresponds to what my program can read called "Bacon.dek". I can access it, modify it, etc. normally from my program, with only a few problems staying alive (fixing them at a relatively correct speed, too).
Now, what I wanna do (and try to fix rather quickly once done), is actually choosing my file from Windows Explorer, right-clicking on it, and choose "Open with..." and choose my application.
Or simply set my application as the default application to simply double-click it and it would open in my app? Like, I double-click "Bacon.dek", and it opens "Eggs.exe", reading "Bacon.dek"?
Basically you have to do this -
In registry add these keys
[HKEY_CURRENT_USER\Software\Classes\dekEditor\shell\open\command]<br/>
#="c:\path\to\app.exe \"%1\""<br/>
[HKEY_CURRENT_USER\Software\Classes\.dek]<br/>
#="dekEditor"<br/>
This is a 2 step task.First you associate your extension .dek with dekEditor (2nd entry) and then specify it in Classes(1st entry).
Answer taken from: Create registry entry to associate file extension with application in C++
MSDN Article.

creating a pdf editor like application in c#

I want to create a desktop application, whose functioning is as follows :
1. user opens a pdf file in the form
2. then, it gets opened up on the UI. After that, user performs certain editing using mouse
like drawing a rectangle, crossing a certain region (similar to paint)
3. Then, after doing all the editing, he saves that file into another pdf (edited one)
I am doing it in c#. Can you suggest, how to do it ?
This may get handy,
How to write a PDF editor?
iText ® is a library that allows you to create and manipulate PDF documents. It enables developers looking to enhance web- and other applications with dynamic PDF document generation and/or manipulation.
Developers can use iText to:
Serve PDF to a browser
Generate dynamic documents from XML files or databases
Use PDF's many interactive features
Add bookmarks, page numbers, watermarks, etc.
Split, concatenate, and manipulate PDF pages
Automate filling out of PDF forms
Add digital signatures to a PDF file
iText is available in Java as well as in C#.
PDFsharp is the Open Source library that easily creates PDF documents from any .NET language.
The same drawing routines can be used to create PDF documents, draw on the screen, or send output to any printer.
It can use either GDI+ or WPF.
It includes support for Unicode in PDF files.
It also includes MigraDoc Foundation which brings you all the high-level functionality not included in PDFsharp.

How to place todo reminders in Dreamweaver code

I am coding in Dreamweaver for a change. Is there a way to place reminders in your code, for example in the form of a "todo list"?
I know Eclipse has this option. You can place //TODO before the line of code and the marker is placed in a list. You can view this list at will and conveniently go back to the exact spot later.
After weeks of coding I sometimes forget to take care of certain things. A todo list in the code itself would really help out, anyone know of a method for this in Dreamweaver?
Dreamweaver doesn't have a dedicated interface for viewing TODO items. However, it does have what it calls Design Notes. These notes are stored in *.mno files that are within _notes folders within the folder of the file that has a design note attached to it. These files and folders are only viewable within Dreamweaver if you have Show Hidden files enabled, which you can do by accessing the Files panel options menu on the upper right by clicking on it, then selecting View -> Show hidden files.
You have to turn them on in the site definition, although by default, a Dreamweaver site will have them turned on. The following steps are for Dreamweaver CS4:
Site -> Manage Sites..., Select the site, click Edit, select the Design notes category, check maintain design notes. Next go to the File View Columns category and make sure that the Notes column is displayed. Click OK then Done.
You can also opt to share these design notes, which means the they will be uploaded when you FTP the files to the remote site, so that others that you work with when they download the file (and assuming they also have Design notes enabled and shared), then they will be able to see that a file has a design note associated with it. Note: These *.mno files are plain text and if you your server may be accessible by others, so be sure not to put anything confidential in them.
In the Files panel, right-click on a file that you want to add a TODO item to, select "Design Notes...". In the interface that opens, you can enter in a free form note for the document. Check the Show when file is opened to cause this interface to open when you open up the file you're applying the design note to.
If you switch to the All Info tab, you can add "keyed" notes, that is a note with a name, and an associated value. This open may be good for TODO items.
When you add a design note to a file and you have the Notes column displayed, you should see an icon in the Notes column for any files that have associated notes for. Double clicking this icon will open up the Design Notes UI. This will be a quick way to determine if you have any TODOs in the files that you can see. Note: you won't see this icon for files within folders that are closed.
If you would like to do some searches or listing of files with design notes associated with them, then you can take a look at the Site Reports Design Notes report. Go to Window -> Results -> Site Reports. In the upper right of this panel, click the green arrow. This brings up the Reports interface. Select the appropriate option under Report on, and then check "Design Notes" under Workflow. Don't bother with the report settings....it's supposed to allow for some search/filtering, but I can't get it not to display all files with notes associated with them, perhaps you'll have better luck. Click the Run button and the Site Reports panel should contain a list of files that have design notes associated with them, as well as the design note info for the file. If you double click the entry, then the file will open.
Well, i use to put a simply comment like this below, directly in the php code:
//TODO: something to do here.
When i need to check my todo list, just search in the site by "//TODO:", and voilá, this is my todo list! It works, it's free and well according with KISS requirements.
Try using doxygen to document your code.
anything marks with a #todo, will be put in a special page when you generate documentaion.
Not ideal but the best i can think of.
(I haven't had much experience with dream weaver - it might have the feature you are looking for IDK)

What is the best way to package and distribute an Excel application

I've writen an Excel-based, database reporting tool. Currentely, all the VBA code is associated with a single XLS file. The user generates the report by clicking a button on the toolbar. Unfortunately, unless the user has saved the file under another file name, all the reported data gets wiped-out.
When I have created similar tools in Word, I can put all the code in a template (.dot) file and call it from there. If I put the template file in the Office startup folder, it will launch everytime I start Word. Is there a similar way, to package and distribute my code in Excel? I've tried using Add-ins, but I didn't find a way to call the code from the application window.
Simply move your code into an Excel Addin (XLA) - this gets loaded at startup (assuming it's in the %AppData%\Microsoft\Excel\XLSTART folder) but if it's a addin, not a workbook, then only your macros and defined startup functions will be loaded.
If the functions depend on a spreadsheet itself, then you might want to use a combination of templates and addins.
I'm distributing part of an application like this, we have addins for Word, Excel and Powerpoint (XLA, PPA, DOT) and also Office 2007 'ribbon' versions (DOTM, XLAM and PPAM)
The addin startup code creates toolbar buttons if they're not found, this means in any workbook/document/etc they can simply hit the toolbar button to run our code (we have two action buttons and one button that displays a settings dialog)
Templates aren't really the way to go for VBA code, Addins are definitely the way to go...
So to load the toolbars on startup we're using something like.. (checking to see if toolbar exists though - code will run for each worksheet that is opened, but toolbars are persistent for the user session)
Public Sub Workbook_Open()
' startup code / add toolbar / load saved settings, etc.
End Sub
hope that helps :)
I always use an Add-in(xla)/Template(xlt) combination. Your add-in creates the menu (or other UI entry points) and loads templates as needed. It also write data that you want to persist to a database (Access, SQLServer, text file, or even an xls file).
The first rule is to keep your code separate from your data. Then, if you later have bug fixes or other code changes, you can send a new add-in and all of their templates and databases aren't affected.
You can modify the user's personal.xls file, stored in the excel startup directory (varies between Office versions). If you have lots of users though, that can be fiddly.
An alternative way to get over your problem is to store the macro in a template (.xlt) file. Then when the users opens it they can't save it back over the original file, but have to specify a new filename to save it as. The disadvantage of this method is that you then get multiple copies of your original code all over the place with each saved file. If you modify the original .xlt and someone reruns the old macro in a previously-saved .xls file then things can get out of step.
Have you looked into ClickOnce deploying the Excel file?
What about to save an excel to network folder with read only permissions ? The authentication can be done with integrated windows authentication and you don't need to store connection password to the database in the VBA. Then you only need distribute a link to this location to your users only once. If you will do an update, you only change data in that folder without user notice.

Resources