|
I have investigated with a test application and found that when including the following manifest definition in stdafx.h i am getting crash.
Crash occured in m_EditCtrl.FmtLines(TRUE);
However if i remove m_EditCtrl.FmtLines(TRUE); from OnCtlColor everything is ok.
What should i do?
#if _MSC_VER >= 1400
#if defined _M_IX86
#define PROCESSOR_ARCH "x86"
#define CC_PROCESSOR_ARCH "x86"
#endif
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='" CC_PROCESSOR_ARCH "' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif // _MSC_VER >= 1400
|
|
|
|
|
KASR1 wrote: What should i do?
You've not answered any of my questions.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"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
|
|
|
|
|
Sorry.
Yes it says
"Unhandled exception at 0x7866f5f0 (mfc90d.dll) in TestAppln.exe: 0xC0000005: Access violation writing location 0x00030f7c."
when i comment below line it did not crash.
m_EditCtrl.FmtLines(FALSE);
|
|
|
|
|
Use the debugger.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"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
|
|
|
|
|
Does your edit box have the multi-line property set? FmtLines only applies if it is.
Quoting MSDN:
Windows will only respond if the CEdit object is a multiple-line edit control.
FmtLines only affects the buffer returned by GetHandle and the text returned by WM_GETTEXT.
It has no impact on the display of the text within the edit control.
Hope that helps.
Karl - WK5M
PP-ASEL-IA (N43CS)
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
krmed wrote: Does your edit box have the multi-line property set?
Whether it did or didn't, that would not cause a "crash." The edit control will simply ignore the EM_FMTLINES message if the ES_MULTILINE style is not set.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"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
|
|
|
|
|
I have found that calling FmtLines() inside OnCtlColor causes recurrsive call to OnCtlColor. This causes stack overflow and crashes the application.
Is there any possiblity to control this?
|
|
|
|
|
KASR1 wrote: Is there any possiblity to control this?
Why are you calling FmtLines() and GetWindowText() from within the WM_CTLCOLOREDIT handler?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"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
|
|
|
|
|
Yes i have multi-line property set.
|
|
|
|
|
Are you using UNICODE in your build? There are some items within the CommonControl 6.0 that are only capable of operating with a unicode build, so perhaps that is your problem.
Try a simple test app - set for unicode - and see if it works, then modify to MBCS instead of unicode and try again.
Hope that helps.
Karl - WK5M
PP-ASEL-IA (N43CS)
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
I tried with test application.
It crashes in unicode build and in MBCS its ok.
However if add the following manifest then it crashes in MBCS also.
#if _MSC_VER >= 1400
#if defined _M_IX86
#define PROCESSOR_ARCH "x86"
#define CC_PROCESSOR_ARCH "x86"
#endif
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='" CC_PROCESSOR_ARCH "' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif // _MSC_VER >= 1400
|
|
|
|
|
Hi All,
I have created one DLL using C programming language.there i have used putenv().Now i wanna give input for putenv() in Runtime.What are all the possible ways to achieve this.
Mohan
|
|
|
|
|
Possibly exporting a function?
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]
|
|
|
|
|
Need More information Please.
Mohan t working for N.I.C
|
|
|
|
|
See here [^], please.
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]
|
|
|
|
|
mohant$.net wrote: Now i wanna give input for putenv() in Runtime.
This is a bit unclear. Please elaborate.
mohant$.net wrote: What are all the possible ways to achieve this.
See here.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"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
|
|
|
|
|
The following manifest entry causes some problem in common controls like list control, edit box. etc (Vc++ appln).
Its getting added when i use some third party libraries.
How do i solve this problem?
#if defined _M_IX86
#define PROCESSOR_ARCH "x86"
#define CC_PROCESSOR_ARCH "x86"
#endif
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='" CC_PROCESSOR_ARCH "' publicKeyToken='6595b64144ccf1df' language='*'\"")
|
|
|
|
|
you can also use external manifests, so in the project settings the manifest will be changed.
is _M_IX86 defined?
Press F1 for help or google it.
Greetings from Germany
|
|
|
|
|
_M_IX86 is defined.
i want to remove 'Microsoft.Windows.Common-Controls' manifest from the manifest file programetically.
|
|
|
|
|
//#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='" CC_PROCESSOR_ARCH "' publicKeyToken='6595b64144ccf1df' language='*'\"")
Press F1 for help or google it.
Greetings from Germany
|
|
|
|
|
What this #pragma will do?
|
|
|
|
|
the #pragma is a precompiler dirrecte which in this case will inject a manifest. To avoid it comment it out.
Press F1 for help or google it.
Greetings from Germany
|
|
|
|
|
since #pragma is defined in thirdparty files, we cannot modify them.
May be we need to do it different way.
Is it possible to remove that #pragma by programatically? Or by some settings in our application?
|
|
|
|
|
I dont know
Maybe modiying the code or copying the interesting parts in a separate file.
#define _M_IX86 in the project settings or in the stdafx.h like "#define _M_IX86 1"
Press F1 for help or google it.
Greetings from Germany
|
|
|
|
|
Can't you use the Microsoft manifest tool[^] to modify/remove the manifest? Another option is to call the SetWindowTheme Function[^] on the affected controls. Maybe call it on all child windows?
SetWindowTheme(m_YourControl.m_hWnd,L"",L"");
Although this seems more like a hack.
Best Wishes,
-David Delaune
|
|
|
|