|
Hi Experts,
I am trying to create a context menu. But a exception is coming.
Context menu is : File->Add
My code is
<br />
CMenu menu;<br />
menu.LoadMenu(IDR_CONTEXT);<br />
CMenu* pPopup = menu.GetSubMenu(0);<br />
CWnd* pWndPopupOwner = this;<br />
<br />
CMenu *mnuPopupMenu = pPopup->GetSubMenu(0);<br />
ASSERT(mnuPopupMenu);<br />
<br />
<br />
while(pWndPopupOwner->GetStyle() & WS_CHILD)<br />
pWndPopupOwner = pWndPopupOwner->GetParent();<br />
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,<br />
point.x,<br />
point.y,<br />
AfxGetMainWnd(), NULL);<br />
What is wrong with this?
|
|
|
|
|
pther wrote: while(pWndPopupOwner->GetStyle() & WS_CHILD)
pWndPopupOwner = pWndPopupOwner->GetParent();
Why u wrote the above code? the variable pWndPopupOwner is not user in any other place.
Try commenting out those two lines. I suspect this is a null pointer exception.
|
|
|
|
|
You might want to tell us what the exception is, and on what line it happens...
You may get lucky with some CP members, but I for one am not psychic.
Have you tried stepping through the function one line at a time, and checking the contents of variables? The debugger is also very good at telling you where an error happens.
Iain.
|
|
|
|
|
How can I change the backkground colour and text color of a cell in ListControl?
With Reagards
Vikas
|
|
|
|
|
You have to do Custom draw( handling NM_CUSTOMDRAW notification ) in list control from this. search in code project with tag "List control custom draw"
|
|
|
|
|
HI naveen,
Thanks for the information. I was able to color the cells handling the NM_CUSTOMDRAW notification.
With Reagards
Vikas
|
|
|
|
|
I'll preface this by saying I'm 25 years old, and I've been programming since I was about 12 in various scripting and programming languages, though primarily in C. Up until recently, this was all console programming. I wouldn't call myself an expert on C because all of my knowledge is self-taught and specific to my needs, but I would call myself an expert on being able to visualize how something could be coded. Brain pseudo-code, I suppose.
Anyways, I started working in a new industry a bit over a year ago. Slowly I came to the idea that the software we use could work better. There are actually several competing programs, and I'm familiar with two of the major ones. About 8 months ago I started working with VS6 and MFC and I've put together a preliminary, dialog-based application that reduces the time to do some of the work I do by as much as 25-50%, as well as significantly increasing its accuracy. In fact, it even interfaces with the two aforementioned programs by way of copying the data on to the clipboard in a manner that these programs' spreadsheets will accept.
Thing is.. I have much higher aspirations for my program than just being a secondary device. Right now, the interface, while usable, is not something that would be considered industrial-strength. I've attempted to switch over to an SDI interface, and I've run into a whole new slew of issues of how to get objects to correctly interact with each other. Simply put, it made me question the logic behind MFC.
So I did some research on MFC and how it is basically falling out of favor in light of the newer paradigms such as .NET and even Qt. Since I'm at the point where I'm basically re-writing the program anyway, I've started to explore these options.
The pros of Qt seem to be very good. However, one thing I seriously have to avoid is reinventing the wheel because I am a one man team on this project at this point, and free code that is not GPL'd is significantly harder to come by for Qt. But, Qt looks like it would make a lot more sense to me with my programming history than MFC does.
I know very little about .NET, but from the bits that I've read, it may not have as much functionality built-in as MFC does. Qt has quite a bit of functionality already included. However, MFC has the recently-released Ultimate Toolbox/Grid/TCP/IP all of which has many useful classes that will significantly reduce my time to create a workable (and downright pretty) interface. I'm not sure how much of that stuff is covered in Qt.
Another issue is that I need a relatively powerful spreadsheet. It doesn't need formulas, and it doesn't need to be on an Excel-level, but it has to be very functional. I can only find one for Qt which is called QicsTable, and they describe it as aimed for super industrial-strength applications, and I'd imagine the price that goes with it is similar. Qt does have a table widget, although I'm not sure if it's powerful enough out of the box, or how easy it would be to program more complex cell types. It looks simple enough but I haven't tried it yet.
Also, the user base for Qt (and therefore knowledge available, sites to learn from, etc.) is obviously limited when compared to MFC or .NET. And it seems that learning each one of these APIs is like learning an entirely new programming language. I rely heavily on the internet to provide answers to my questions, because the MSDN is not anywhere near as good as ol' Turbo C++'s help files were. This would put me at a disadvantage with Qt.
So, I need to make a decision, and soon, on how I want to proceed with this. Another, far-off consideration I have to make is that I may need to hire additional coders, and I may be limiting my selection by using Qt.
In summation--
Qt pros: Appears to fit more with my programming style; has many GUI features out-of-box; multiplatform (although my primary userbase would be Windows without a doubt, so this is not a huge consideration); has the open-source community mentality to development.
Qt cons: I would have to learn a new API; of what freely available code there is, much of it is GPL'd and could not be used in a commercial application; less help and resources are available compared to MFC or .NET.
MFC pros: I've been learning it for some time now; many, many free to use code snippets, especially the Ultimate Toolbox/Grid.
MFC cons: It is an outdated API getting minimal support from MS; coding for it often seems like a chore to me because I have to spend hours figuring out how something that should be simple works, and the MSDN hasn't been all that helpful.
.NET pros/cons: I don't really know that much about .NET. But I can't imagine the pros would seriously outweigh the cons enough (I wouldn't be able to use any of those MFC tools, correct?) to switch.
C#: Same goes here, I just threw this wildcard out to see if someone had opinions on the subject.
Thanks for taking the time to read this; any and all comments are greatly appreciated.
|
|
|
|
|
I have a list control of 3rows and 3columns.
Is it possible to make a column editable?
|
|
|
|
|
With the CListCtrl, you can make the first column of the list control editable. check the
ClistCtrl::EditLabel()[^] function.
But if you want to make all the columns editable you have to do it by user self. There are many article in the code project that implements this feature. Search...
|
|
|
|
|
while (...)<br />
{<br />
case 8:<br />
....<br />
case 7:<br />
....<br />
case 6:<br />
....<br />
......<br />
}
VC compile optimize:
...
00007 83 e8 01 sub eax, 1
0000a 74 16 je SHORT $LN2@TestFun1
0000c 83 e8 01 sub eax, 1
0000f 74 0b je SHORT $LN3@TestFun1
00011 83 e8 01 sub eax, 1
00014 75 1b jne SHORT $LN1@TestFun1
...
how to let vc don't optimize like that,like nether.
jmp DWORD PTR $LN17@TestFun1[esi*4]
.......
$LN17@TestFun1:
DD $LN10@TestFun1
DD $LN1@TestFun1
DD $LN2@TestFun1
DD $LN3@TestFun1
DD $LN4@TestFun1
DD $LN5@TestFun1
DD $LN6@TestFun1
DD $LN7@TestFun1
------------------------------------------------------------------
or how to write inline asm jump a address table. but in inline asm can't use DD.
Thanks.
|
|
|
|
|
Visual C++ will compile whatever it thinks is most effective dependent on the compiler options you have selected. I typically select /Oxs (Minimize Size) as it tends to produce a smaller binary. In many circumstances this will actually run faster as more code fits into the processor's caches and less paging typically happens. Second-guessing the compiler often leads to worse performance.
It's important to be aware of the differences is both bandwidth and latency between different types of memory in a modern computer system, when evaluating different choices in optimization. See Herb Sutter's Machine Architecture[^] presentation for the Northwest C++ User's Group.
These kinds of micro-optimizations are for times when you've already eliminated any possible gains you can get from improving your use of data structures and algorithms, and already made your data structures as cache-efficient as you can, so your program isn't stalling due to CPU wait-states. Generally you'll find more improvement by improving one of those areas instead.
DoEvents: Generating unexpected recursion since 1991
|
|
|
|
|
Hi All,,
I want to create one process which to run an .EXE so I tried to write follwing code ....
<br />
STARTUPINFO si;<br />
PROCESS_INFORMATION pi;<br />
<br />
ZeroMemory(&si,sizeof(si));<br />
si.cb = sizeof(si);<br />
ZeroMemory(&pi,sizeof(pi));<br />
<br />
if(!CreateProcess(LPWSTR("E:\\Testing_and_Download\\Testing\\DLL\\TestProcess\\CaptureChange.exe"),NULL,<br />
NULL,NULL,FALSE,NULL,NULL,NULL,&si,&pi))<br />
{<br />
AfxMessageBox(CString("CreateProcess Failed"));<br />
}<br />
else<br />
{<br />
AfxMessageBox(CString("Process Created"));<br />
}<br />
<br />
WaitForSingleObject(pi.hProcess,INFINITE);<br />
<br />
CloseHandle(pi.hProcess);<br />
CloseHandle(pi.hThread);<br />
But Here every time process is not created and shows "CreateProcess Failed" Message.
So can you help where am I doing minstake??
|
|
|
|
|
ashishbhatt wrote: if(!CreateProcess(LPWSTR("E:\\Testing_and_Download\\Testing\\DLL\\TestProcess\\CaptureChange.exe"),NULL,
NULL,NULL,FALSE,NULL,NULL,NULL,&si,&pi))
This not the mothod for creating LPWSTR. Change it as follows..
if(!CreateProcess( _T ("E:\\Testing_and_Download\\Testing\\DLL\\TestProcess\\CaptureChange.exe"),NULL,
NULL,NULL,FALSE,NULL,NULL,NULL,&si,&pi))
_T macrop converts a string to LPWSTR if unicode is defined. other wise it will covert the string to LPSTR.
|
|
|
|
|
Thank you v much.
I got the solution.
|
|
|
|
|
Hi all,
I've create a Rich Edit Control using windows API and add some data as follows. Then get the text only from the rtf text which is sends to the rich edit control window.
::SetWindowText(m_hwnd_RTFBox, rtf.c_str());
int recCount = GetWindowText(m_hwnd_RTFBox, pBuffer, 1024);
if(recCount > 0)
{
string strPlr(pBuffer, 1024);
printf("%s", strPlr.c_str());
}
Now I want to count the number of words on the rich edit control window. Do you know a better way. On windows API i can't see any simple class member to use this.
Any idea.
I appreciate your help all the time...
Eranga
|
|
|
|
|
If I can find the word breaks of the string on the rich edit control until the end of it, i can found the number of words.
I appreciate your help all the time...
Eranga
|
|
|
|
|
Have you tried to count the number of "blank spaces"? That number + 1 should be the number of words.
Greetings.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
“The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson
|
|
|
|
|
Hi! I'm Rathakrishnan. I've a project developed in VC++. It was compiled and run very well. Once I rebuilt the the solution, it showed me an error
which said "Error Spawning rc.exe". I didn't do any thing(not changed any code or didn't even open the resource file at all). How do I resolve this error?
|
|
|
|
|
|
try the following.
in msdev take tools->options->directories.
in the "show directories" combobox, select executable files. Now in the below list box, add the path of folder where CL.exe exisits( usually in the "C:\Program Files\Microsoft Visual Studio\VC98\BIN" ). Click ok and compile again
|
|
|
|
|
I've included "C:\Program Files\Microsoft Visual Studio\VC98\BIN" in the executable files. Now also the same problem persists. What to do?
|
|
|
|
|
does the cl.exe exits in the "C:\Program Files\Microsoft Visual Studio\VC98\BIN" folder?
|
|
|
|
|
Yes. CL.exe exists in the "C:\Program Files\Microsoft Visual Studio\VC98\BIN" folder. I searched and added the path. Any alternatives?
|
|
|
|
|
sorry. I though it was cl.exe The rc.exe exists in the folder
"C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin". add that folder too
|
|
|
|
|
I could not find the file rc.exe. In case Visual Studio .NET 2003, where the file exists usually?
|
|
|
|
|