|
Thanks Phil,
since my app refuses to "grab a single AVI frame" I have been doing some more MSDN look-ups.
I do not recall where, but it MSDN states that the AVI frame is in DIB format.
Something else same up, CapEditCopy writes into clipboard without checking if it is in use.So I hack it by opening the clipboard and hoping it can be open, and than closing it. Real kluge.
Vaclav
|
|
|
|
|
Hi,
I have changed the normal dialog button to owner draw and used CBitmapButton.
But when the focus is on the button and when we hit enter it is not taking the keyboard input.
When we remove the owner draw, keyboard input works.
Can someone let me know how to enable keyboard input when the button is Owner draw and use CBitmapButton to place image on it.
Thanks in advance..
Ram..
|
|
|
|
|
Is the control recieving a WM_KEYDOWN when you bash enter when the focus is on it?
From what I remember of using BS_OWNERDRAW controls years ago you have to handle the keyboard messages yourself. Unlike BS_PUSHBUTTON the control doesn't generate BN_CLICKED notifications from someone pressing return/enter or space.
My first line of enquiry would be to override OnKeyDown in the button class and see what happens. If that's called then override OnKeyUp and send the button's parent a WM_COMMAND/BN_CLICKED when the enter or space key are released.
Cheers,
Ash
modified on Monday, September 20, 2010 11:39 AM
|
|
|
|
|
Visual C++ Solution
Accomplishing this task from a Visual C++ host is very straightforward. You can use an IWebBrowser2 interface to call the QueryInterface method for the IHTMLDocument2 interface. After you obtain a pointer to the document, then call QueryInterface for the IPersistFile interface. After you obtain this interface pointer, you can call the save method to save the file to disk.
HRESULT hr = E_FAIL;
IDispatch* pDisp = NULL;
IHTMLDocument2* pDoc = NULL;
pDisp = m_webOC.GetDocument();
if(SUCCEEDED(hr = pDisp->QueryInterface(IID_IHTMLDocument2,(void**)&pDoc)))
{
IPersistFile* pFile = NULL;
if(SUCCEEDED(pDoc->QueryInterface(IID_IPersistFile,(void**)&pFile)))
{
LPCOLESTR file = L"c:\\test1.htm";
pFile->Save(file,TRUE);
}
}
Hi all
I have seen this ariticle in MSDN.
In that i don't know m_webOC belongs to which object. If so how to create that object.
|
|
|
|
|
Form the article "How To Programmatically Save an HTML Page to Disk":
As a Web browser control host, or an application that is automating Internet Explorer, you may find it useful to be able to programmatically save the currently loaded document to disk without user intervention.
So, does your application host a Web Browser control?
Or, are you automating I.E.?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I am not using Webrowser control
But it is an SDI appllication with CHtmlView..... I just want to save a web page and read them back.
Could u give any information on this...........
|
|
|
|
|
How about using CHtmlView::GetSource and writing it to a file.
|
|
|
|
|
You may follow Superman's suggestion or replace
pDisp = m_webOC.GetDocument();
with
pDispl = <YourCHtmlViewName>.GetHtmlDocument();
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
modified on Monday, September 20, 2010 6:46 AM
|
|
|
|
|
Pallini , your solution goes fine :
pDispl = <<YourCHtmlViewName>>.GetHtmlDocument();
Thank you !!!
|
|
|
|
|
You are welcome.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Hi all,
i want to combine all my files into a single file.
How can i do it.
Thanks in advance
|
|
|
|
|
You can do this from the command prompt using the command copy *.* newfile .
To do this programatically, open the destination file for writing using CreateFile .
Use FindFirstFile / FindNextFile to enumerate each file in the folder.
For each file found use CreateFile to open the file for reading.
Call ReadFile to read the entire contents of the file for reading and then use WriteFile on the destination file to write the contents that were read.
|
|
|
|
|
If you're using C++ you can combine files fairly easily. Open each one as an istream, open the destination file as an ofstream and then insert the streambufs of the input files to the destination file.
Something like:
std::ifstream a( "c:\\a.txt" );
std::ifstream b( "c:\\b.txt" );
std::ofstream c( "c:\\c.txt" );
c << a.rdbuf() << b.rdbuf();
will concatenate a.txt and b.txt and dump them in c.txt. It saves loads of tedious mucking about with C functions or Windows API functions.
Cheers,
Ash
|
|
|
|
|
Hello to all,
In my project I am sending email with attachment of jpeg image. I am using following user defined function in which logic of sending mail is written,
In foolowing function
lpszSubject = subject of mail
lpszTo = email address to whom u want to send mail
lpszName = name of person to whom u want to send mail
lpszText = email text
lpszFullFileName = path of the jpeg file to be attached
BOOL SendFile(LPCSTR lpszSubject, LPCSTR lpszTo,
LPCSTR lpszName, LPCSTR lpszText,
LPCSTR lpszFullFileName)
{
HINSTANCE hMAPI = ::LoadLibrary("mapi32.dll");
LPMAPISENDMAIL lpfnMAPISendMail =
(LPMAPISENDMAIL)::GetProcAddress(hMAPI, "MAPISendMail");
char szDrive[_MAX_DRIVE] = { 0 };
char szDir[_MAX_DIR] = { 0 };
char szName[_MAX_FNAME] = { 0 };
char szExt[_MAX_EXT] = { 0 };
char szFileName[MAX_PATH] = { 0 };
strcat(szFileName, szName);
strcat(szFileName, szExt);
char szFullFileName[MAX_PATH] = { 0 };
strcat(szFullFileName, lpszFullFileName);
MapiFileDesc MAPIfile = { 0 };
ZeroMemory(&MAPIfile, sizeof(MapiFileDesc));
MAPIfile.nPosition = -1;
MAPIfile.lpszPathName = szFullFileName;
MAPIfile.lpszFileName = szFileName;
char szTo[MAX_PATH] = { 0 };
strcat(szTo, lpszTo);
char szNameTo[MAX_PATH] = { 0 };
strcat(szNameTo, lpszName);
MapiRecipDesc recipient = { 0 };
recipient.ulRecipClass = MAPI_TO;
recipient.lpszAddress = szTo;
recipient.lpszName = szNameTo;
char szSubject[MAX_PATH] = { 0 };
strcat(szSubject, lpszSubject);
char szText[MAX_PATH] = { 0 };
strcat(szText, lpszText);
MapiMessage MAPImsg = { 0 };
MAPImsg.lpszSubject = szSubject;
MAPImsg.lpRecips = &recipient;
MAPImsg.nRecipCount = 1;
MAPImsg.lpszNoteText = szText;
MAPImsg.nFileCount = 1;
MAPImsg.lpFiles = &MAPIfile;
ULONG nSent = lpfnMAPISendMail(0, 0, &MAPImsg, NULL, 0);
FreeLibrary(hMAPI);
return (nSent == SUCCESS_SUCCESS || nSent == MAPI_E_USER_ABORT);
}
Now everything is working fine but I am getting some surprising results as below
(1)If at the sending side user is using Outlook Express then email goes with attachment perfectly at the receiving side on any mail client
(2)But if at the sending side user is using Microsoft Office Outlook then email goes but attachment is missing at receiving side. If at the receiving side also Microsoft Office Outlook is there then only we get the attachment.
Means in short from Microsoft Office Outlook to Microsoft Office Outlook email goes with attachment at receiving side.
but from Microsoft Office Outlook to other mail client (other than Microsoft Office Outlook) attachment is missing at receiving side.
Please anyone can tell me what I am missing in my code and how to solve this problem. It is really very very urgent so please help me out.
Thanks and Regards,
Anay
|
|
|
|
|
AnayKulkarni wrote: (2)But if at the sending side user is using Microsoft Office Outlook then email goes but attachment is missing at receiving side.
What type of attachment?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
I hear that the memory pool can improve the performance. It means that allocate a block of memory and then new the class object in this memory block, but how to make the thread safe and proceeding safe?
modified on Wednesday, September 22, 2010 11:10 AM
|
|
|
|
|
A memory pool (implemented as a custom allocator or overiding new/delete for a class) can improve speed a lot. HOWEVER before you do make sure that your app is actually eating up loads of execution time in the ordinary allocator before doing anything about it. I've seen plenty of people mess about and spend ages optimising allocators and get nothing concrete out of it.
If you decide to use a custom allocator then you make it thread safe the way you do any other object - use a synchronisation object and lock it when doing any operations on the object. Incidentally I've seen the cost of synchronisation wipe out any benefit a custom allocator gives you, so again make sure you're just not replacing a runtime library bottleneck with a carefully crafted homemade one.
There are ways you can reduce locking bottlenecks from an allocator but you start needing to use multiple arenas to allocate from and switch between them on each allocation. This can then start messing up locality of reference (unless you manage interleaved arenas) and again slow everything down again.
Anyway, the point I'm really making here is measure how long your app spends in the allocator. If it's taking an appreciable length of time consider using a third party custom allocator or implementation of new and delete and only write your own if it's still not fast enough.
Another idea would be to use a garbage collector - if you google "Hans" "Boehm" and "garbage collection" you can find a decent one (if you like that sort of thing) that's written by one of the luminaries of the C++ standards committee. Garbage collection has the advantage that when you delete objects the memory is not immediately freed and is recovered in one fell swoop later by the garbage collector reducing contention for the allocator when releasing objects.
Cheers,
Ash
modified on Monday, September 20, 2010 7:05 AM
|
|
|
|
|
good answer.
I've bumped (5-ved) the question also.
Watched code never compiles.
|
|
|
|
|
Thanks for the reply.
I've given the questioner a five as well - normally I wouldn't but in this case his question didn't deserve the one someone else gave him so I'm attempting to be karmic.
Cheers,
Ash
|
|
|
|
|
Override the new/delete operators and use "placement new" syntax to alloc in a predetermined location, managed by you.
onwards and upwards...
|
|
|
|
|
If you take the memory from your own Win32 Heap, then it is already thread-safe. See HeapCreate.
|
|
|
|
|
I find that I could not distinguish the synchronization from the block, and asynchronism from no-block.
when use the synchronization to socket with the server, it must be block model. How to achieve it with the non-block model?
|
|
|
|
|
I don't understand your question. You probably mean synchronisation in the context of multi threading, with non-blocking sockets (asynchronous networking) you typically have a single threaded application.
/M
|
|
|
|
|
Thanks for your reply. It not multi-thread, it is using socket. I do not know the different between synchronization and block.
|
|
|
|
|
CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007Luna_Blue);
this code is set my program's color blue.
but I want red or another.
How to create a style by myself?
How to change the style that vs2008 feature pack?
thanks!
|
|
|
|