|
Well, I do start the aplication in debug mode.
(in VC 6.0 I press F5)
But I get error message from Windows:
"This program has performed an illegal operation
and will be shut down."
If I go to the VC (using break execution)
the current statement is:
default:
return DefWindowProc(hWnd, message, wParam, lParam);
and the call stack is:
WndProc(HWND__ * 0x00000c84, unsigned int 274, unsigned int 61456, long 0) line 169 + 24 bytes
KERNEL32! bff7363b()
KERNEL32! bff94407()
Anyway, "Hello World" example is too simple.
There is almost no code in it.
And it is the code generated from AppWizard.
And after
1. press: F5
2. press: Alt+Space
3. select: Move (the Move label in the system menu)
Windows displays 4arrow cursor for move window
and I quess control is in some system code not in the app?
Now (while 4arrow cursor is on the screen) I press Enter (or Esc) and get error message
from Windows:
4. press: Enter (or Esc)
After that Windows displays error message:
"This program has performed an illegal operation
and will be shut down."
Any ideas ?
Thanks.
|
|
|
|
|
hi
I´m trying to read from a txt file a line:
<br />
<br />
CFile arch;<br />
CString linea="";<br />
<br />
arch.Open("c:\\archivo.txt", CFile::modeRead );<br />
<br />
arch.Read(&linea, 1024);<br />
<br />
arch.Close;<br />
<br />
But, It doesn´t work
Who can explain me how i have to do?
el hombre es libre cada vez que elige y eso es lo que lo hace libre
|
|
|
|
|
You might want to try something like this:
CHAR pFileChunk[1024];
CFile arch;
CString linea;
if(arch.Open(("c:\\archivo.txt", CFile::modeRead ))
{
arch.Read(pFileChunk, 1024);
linea = CString(pFileChunk);
}
-Mike Zinni
"No sh*t it's tough. If it wasn't, everybody and their sister would be an engineer and then you wouldn't have a job."
|
|
|
|
|
Use CStdioFile with CFile::typeText flag while opening and then it's ReadString method.
Pavel
Sonork 100.15206
|
|
|
|
|
If you want to read 1024 bytes you need to do it to a buffer not a CString object.
char szBuffer [1024];
...
arch.Read (szBuffer, 1024);
|
|
|
|
|
First, if you use the read function like you did, it will copy byte by byte what it reads from the file at the adress of your linea class so it will probably erase important data inside your class. Use a char buffer instead !!
char Buffer[1025];<br />
arch.Read(Buffer,1024);
This will copy the 1024 firsts bytes from your file in the buffer (I suppose that the data in the file are characters).
Second, it will read the BYTES (!!!) from your file so if you have several lines in it, it will copy all of them in the buffer (and the end of line char also)!!! Perhaps what you can do is read the file characters by characters and test if it's an end of line!!
|
|
|
|
|
Martin_Viet wrote:
arch.Open("c:\\archivo.txt", CFile::modeRead );
did you read the documentation????
One access permission and one share option are required
|
|
|
|
|
Thanx at ALL !!!!
el hombre arriesga su vida cada vez que elige y eso es lo que lo hace libre
|
|
|
|
|
If I put a breakpoint in OnItemChanged of my CListCtrl, and debug, it runs through the function many many times! The statement at which I step into this function is a SetItemState to highlight a previous element.At first I thought it ran only twice, so I put a boolean flag which returned the code right away at the second pass after setting it to false again (the first time it runs, this flag is set to true at the end of the function....).
However OnItem runs over and over again, setting and unsetting the flag:
OnItemChanged()
{
if (flag)
{
flag = false;
return
}
if (some condition)
{
AfxMessageBox(...);
flag = true;
<code>list1.SetItemState(....);</code>
return;
}
so I alternate between getting the messagebox and not in pairs of runs. Funnily enough after a zillion times of doing this it suddenly goes through like it should and the UI shows again, with the highlight where I intended it to be.
My intention was to have the messagebox pop up only once, and when dismissed the highlight should have been on the desired item and the UI ready for the next move.
}
Appreciate your help,
ns
|
|
|
|
|
This function gets called when a item receives the focus, when a item loses the focus, when a item is selected...
I filter that using this code:
void CPPDlgParametritzacions::OnItemchangedLctrlIntroduccio(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if ((pNMListView->iItem != this->m_iElementSeleccionatAnt) && (pNMListView->iItem != -1))
{
this->m_iElementSeleccionatAnt = pNMListView->iItem;
if (this->m_cLCtrlParametritzacions.GetItemState(pNMListView->iItem, LVIS_SELECTED) == LVIS_SELECTED)
{
hope this helps...
|
|
|
|
|
Thanks. I'll work on your suggestion. Why this is happpening is because I am forcing the selection back to the one is was on, i nstead of the newly selected one, and I am doing this in the OnItemChanged....thats why it runs 4 times....
Appreciate your help,
ns
|
|
|
|
|
SetItemState might well be triggering several OnItemChanged calls - especially if you're changing the selection, because it might (depends if you've got multi-select enabled) unselect one item before selecting the next.
Anyway, whatever is going on, the easy solution is to set your flag before your call to SetItemState, and unset the flag when the call to SetItemState has returned:
::OnItemChanged(...) {
static bool flag = false;
if (flag) return;
...
if (some condition)
{
flag = true;
list1.SetItemState(...);
flag = false;
}
...
}
"We are the knights who say Ni" (The Knights Who Say Ni)
|
|
|
|
|
Thanks.
In my pretranslatemsg, i trap enter for a text box. If I dont like the user entry I return right away. If I accept it, then I go ahead and move my selection in an adjacent listctrl ahead by one ....using SetItemState(++m_index..)
WIth this happening ,in this function your lock-unlock works great.
However I also have the case where the user puts in a bad entry in the textbox and tries to advance to a new selection in the listbox. OnItem runs of course. In this I check to see if I like the entry . If I dont I want to force the selection to remain where it is, not move the one I just clicked on. Again I do SetItemState....this time in OnItemChanged. However now the unlock-lock trick doesnt work because oddly , after it goes through the first two times,
lock
setItem runs onitem
unlock
runs onitem and returns as it should
onitem runs yet again! but my flags all restored so it goes through all over again.
Thanks for the help again,
it then does another pair.............probably because it was trying to go to the new one and I forced it back or something.
ns
|
|
|
|
|
Have you tried handling LVN_ITEMCHANGING instead, and returning FALSE to prevent the change (see MSDN for LVN_ITEMCHANGING). I haven't tried this myself, so I don't know if it works.
Your other option is to keep track of the currently selected item in a member variable, and only processing the ItemChanged notification if it's trying to select a different item to the one you think is currently selected.
YourClass::OnItemChanged(NMHDR* pNMHDR, LRESULT* pResult)
{
NMLISTVIEW* pNMLV = reinterpret_cast<NMLISTVIEW*>(pNMHDR);
if (!(pNMLV->uNewState & LVIS_SELECTED)) return;
if (pNMLV->iItem == m_CurrentSelection) return;
if (whatever_condition_your_checking_is_okay)
{
m_CurrentSelection = pNMLV->iItem;
}
else
{
m_List.SetItemState(m_CurrentSelection, LVIS_SELECTED, LVIS_SELECTED);
}
}
N.B. Untested code - it's just an example of what I mean.
"We are the knights who say Ni" (The Knights Who Say Ni)
|
|
|
|
|
I'm trying to configure my own GUI for an AutoDial RAS entry, in a similar method to the RasJazz[^] sample in the MSDN. I'm using RasSetEntryProperties to set the autodial DLL and autodial function, and have built a suitable RAS autodial DLL with both ASCII and Unicode exported functions. But it doesn't work.
For some reason, calling RasSetEntryProperties seems to corrupt the dial-up entry, altering the options so that a phonebook entry which previously didn't prompt at all now prompts for the phone number. And regardless of this, the autodial function never seems to get called in my DLL.
Anyone got a working example of this stuff?!? I've even tried compiling the
FYI, here's my code to set up the phone book entry for my autodial DLL....
DWORD dwEntrySize = sizeof( RASENTRY );<br />
RASENTRY entry;<br />
ZeroMemory( &entry, dwEntrySize );<br />
entry.dwSize = dwEntrySize;<br />
<br />
DWORD dwRet = RasGetEntryProperties( NULL, sDialEntryName, <br />
&entry, &dwEntrySize, NULL, NULL);<br />
<br />
if( !dwRet )<br />
{<br />
if( bAddAutoDial )<br />
{<br />
strcpy( entry.szAutodialDll, sDLLPath );<br />
strcpy( entry.szAutodialFunc, "ISPIAutoDialHandler" );<br />
}<br />
else<br />
{<br />
entry.szAutodialDll[0] = NULL;<br />
entry.szAutodialFunc[0] = NULL;<br />
}<br />
<br />
dwRet = RasSetEntryProperties( NULL, sDialEntryName, <br />
&entry, entry.dwSize, NULL, 0);<br />
<br />
if( ! dwRet )<br />
bRet = TRUE;<br />
}
________________________
http://www.webreaper.net
|
|
|
|
|
Hi all,
I want to convert a bmp file to jpg. How to do this in visual c++.
Is there any free libs ?
Thanks in advance
Mahesh Varma
|
|
|
|
|
Hi
Here you got all code you need:
http://www.codeproject.com/bitmap/cximage.asp
Daniel
|
|
|
|
|
Mahesh Varma wrote:
Is there any free libs ?
there are probably ten different libs here on code project. try looking around a little bit.
-c
Image tools: ThumbNailer, Bobber, TIFFAssembler
|
|
|
|
|
Use GDI+ .
Take a sample from MSDN: "Setting JPEG Compression Level"
#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;
INT GetEncoderClsid(const WCHAR* format, CLSID* pClsid);
INT main()
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
CLSID encoderClsid;
EncoderParameters encoderParameters;
ULONG quality;
Status stat;
Image* image = new Image(L"Shapes.bmp");
GetEncoderClsid(L"image/jpeg", &encoderClsid);
encoderParameters.Count = 1;
encoderParameters.Parameter[0].Guid = EncoderQuality;
encoderParameters.Parameter[0].Type = EncoderParameterValueTypeLong;
encoderParameters.Parameter[0].NumberOfValues = 1;
quality = 0;
encoderParameters.Parameter[0].Value = &quality;
stat = image->Save(L"Shapes001.jpg", &encoderClsid, &encoderParameters);
if(stat == Ok)
wprintf(L"%s saved successfully.\n", L"Shapes001.jpg");
else
wprintf(L"%d Attempt to save %s failed.\n", stat, L"Shapes001.jpg");
quality = 50;
encoderParameters.Parameter[0].Value = &quality;
stat = image->Save(L"Shapes050.jpg", &encoderClsid, &encoderParameters);
if(stat == Ok)
wprintf(L"%s saved successfully.\n", L"Shapes050.jpg");
else
wprintf(L"%d Attempt to save %s failed.\n", stat, L"Shapes050.jpg");
quality = 100;
encoderParameters.Parameter[0].Value = &quality;
stat = image->Save(L"Shapes100.jpg", &encoderClsid, &encoderParameters);
if(stat == Ok)
wprintf(L"%s saved successfully.\n", L"Shapes100.jpg");
else
wprintf(L"%d Attempt to save %s failed.\n", stat, L"Shapes100.jpg");
delete image;
GdiplusShutdown(gdiplusToken);
return 0;
}
|
|
|
|
|
If you are using VC++ .NET ,then use CImage class
|
|
|
|
|
How can I list all exported functions in a dll like "dependency walker" from Microsoft...
|
|
|
|
|
Hail AnTri,
You can use dumpbin.exe. It has a lot of options.
To see all exports use dumpbin /exports <file.dll>
Regards.
|
|
|
|
|
Thank you, but you misunderstand me.
I need a function in my Application that list's all exported function from a selected dll.
|
|
|
|
|
Download from MSDN the sample PEDump in article "Peering Inside the PE: A Tour of the Win32 Portable Executable File Format".
However, the function DumpExportsSection doesn't work since it looks for
the section ".edata" which sometimes is contained in ".rdata" section.
Therefore i put some changes according to other sample.
Add the following at the beginning of EXEDump.c :
#define GetImgDirEntryRVA( pNTHdr, IDE ) \
(pNTHdr->OptionalHeader.DataDirectory[IDE].VirtualAddress)
#define GetImgDirEntrySize( pNTHdr, IDE ) \
(pNTHdr->OptionalHeader.DataDirectory[IDE].Size)
PIMAGE_SECTION_HEADER GetEnclosingSectionHeader(DWORD rva, PIMAGE_NT_HEADERS pNTHeader)
{
PIMAGE_SECTION_HEADER section = IMAGE_FIRST_SECTION(pNTHeader);
unsigned i;
for ( i=0; i < pNTHeader->FileHeader.NumberOfSections; i++, section++ )
{
DWORD size = section->Misc.VirtualSize;
if ( 0 == size )
size = section->SizeOfRawData;
if ( (rva >= section->VirtualAddress) &&
(rva < (section->VirtualAddress + size)))
return section;
}
return 0;
}
LPVOID GetPtrFromRVA( DWORD rva, PIMAGE_NT_HEADERS pNTHeader, PBYTE imageBase )
{
PIMAGE_SECTION_HEADER pSectionHdr;
INT delta;
pSectionHdr = GetEnclosingSectionHeader( rva, pNTHeader );
if ( !pSectionHdr )
return 0;
delta = (INT)(pSectionHdr->VirtualAddress-pSectionHdr->PointerToRawData);
return (PVOID) ( imageBase + rva - delta );
}
Replace the function DumpExportsSection with the new one:
void DumpExportsSection(DWORD base, PIMAGE_NT_HEADERS pNTHeader)
{
PIMAGE_EXPORT_DIRECTORY exportDir;
PIMAGE_SECTION_HEADER header;
INT delta;
PSTR filename;
DWORD i;
PDWORD functions;
PWORD ordinals;
PSTR *name;
DWORD exportsStartRVA, exportsEndRVA;
exportsStartRVA = GetImgDirEntryRVA(pNTHeader,IMAGE_DIRECTORY_ENTRY_EXPORT);
exportsEndRVA = exportsStartRVA +
GetImgDirEntrySize(pNTHeader, IMAGE_DIRECTORY_ENTRY_EXPORT);
header = GetEnclosingSectionHeader( exportsStartRVA, pNTHeader );
if ( !header )
return;
delta = (INT)(header->VirtualAddress - header->PointerToRawData);
exportDir = (PIMAGE_EXPORT_DIRECTORY)GetPtrFromRVA(exportsStartRVA, pNTHeader, base);
filename = (PSTR)(exportDir->Name - delta + base);
printf("exports table:\n\n");
printf(" Name: %s\n", filename);
printf(" Characteristics: %08X\n", exportDir->Characteristics);
printf(" TimeDateStamp: %08X\n", exportDir->TimeDateStamp);
printf(" Version: %u.%02u\n", exportDir->MajorVersion,
exportDir->MajorVersion);
printf(" Ordinal base: %08X\n", exportDir->Base);
printf(" # of functions: %08X\n", exportDir->NumberOfFunctions);
printf(" # of Names: %08X\n", exportDir->NumberOfNames);
functions = (PDWORD)((DWORD)exportDir->AddressOfFunctions - delta + base);
ordinals = (PWORD)((DWORD)exportDir->AddressOfNameOrdinals - delta + base);
name = (PSTR *)((DWORD)exportDir->AddressOfNames - delta + base);
printf("\n Entry Pt Ordn Name\n");
for ( i=0; i < exportDir->NumberOfNames; i++ )
{
printf(" %08X %4u %s\n", *functions,
*ordinals + exportDir->Base,
(*name - delta + base));
name++;
ordinals++;
functions++;
}
}
Anyway, if you want me to email you the full sample then send me your
e-mail.
Dudi
|
|
|
|
|
Hello.
i have a little problem.
I have an SDI project. Left pano is CListView and right is CFormView.
It is about the CListView. It uses a standart CListCtrl class which is not very usefull for me. SO i found a source
of extended CListCtrl --> XListCtrl. This is a good class, BUT i dont know how to replace a standart CListCtrl
in the CListView with this XListCtrl.
Any ideas.
Thank you in advance.
|
|
|
|
|