|
Hey Friends
I wish to Create a control just like Shape Control available in Visual Basic.It will be possible to Change its Shape and relocate to some other location.It should be visible properly.
I Tried Inheriting a Class From CWnd and Providing Body to OnPaint But the areas which i do not paint do not get updated and show the Background which looks Bad.
Pl Suggest.Will Regions Solve the Problem ?
Sample Code
void CShapeCtrl::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rRect;
CBrush br;
GetClientRect(&rRect);
br.CreateSolidBrush(RGB(255,0,0));
dc.Rectangle(&rRect);
if(!m_bShapeSet)
{
HRGN hRgn;
rRect.DeflateRect(5,5);
hRgn = ::CreateEllipticRgnIndirect(&rRect);
SetWindowRgn(hRgn,TRUE);
m_bShapeSet = TRUE;
}
}
|
|
|
|
|
You need to call SetWindowRgn() in OnCreate() , and whenever the shape changes, not each call to OnPaint() . If it still updates incorrectly (although it should work), then try setting the WS_EX_TRANSPARENT extended style for the control.
Hope this helps,
Ryan
Being little and getting pushed around by big guys all my life I guess I compensate by pushing electrons and holes around. What a bully I am, but I do enjoy making subatomic particles hop at my bidding - Roger Wright (2nd April 2003, The Lounge)
Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late - John Nichol "Point Of Impact"
|
|
|
|
|
This is an SDI application. I wish to perform some initialization in OnInitialUpdate(). But to my horror, I discovered that OnInitialUpdate() is not getting called at all! I know I didnt add some piece of code required to do this, but am not sure what it is and how to do it. Could someone pls guide me?
|
|
|
|
|
I have a ListView control and I want it to do something when the user presses enter. So, I have put in a case for LVN_KEYDOWN, which seems to work fine for most keys except enter. I never recieve a VK_RETURN in the wVKey member, no matter how much I press the button
So, is there some style I need to set or something? What do I need to do to be notified when the user presses enter in the ListView control?
Thanks,
Melekor
|
|
|
|
|
This question is asked so often, I'm disgusted at how many people don't search the forum before asking questions. It must have been asked 5 or 6 times in the last week
Override PreTranslateMessage() in your dialog and check for WM_KEYDOWN where wParam == VK_ENTER.
If you're not using MFC, it shouldn't be a problem - just check in your message loop.
Ryan
Being little and getting pushed around by big guys all my life I guess I compensate by pushing electrons and holes around. What a bully I am, but I do enjoy making subatomic particles hop at my bidding - Roger Wright (2nd April 2003, The Lounge)
Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late - John Nichol "Point Of Impact"
|
|
|
|
|
Ryan Binns wrote:
This question is asked so often, I'm disgusted at how many people don't search the forum before asking questions
Same for me. If you only knew how many times I've answered the question "How do I change the caption of my window" or "How do I convert my CString into a ..." I think the link to Mike's C++ FAQ should be as big as the advertisement banner, and even that would not help .
~RaGE();
|
|
|
|
|
Rage wrote:
If you only knew how many times I've answered the question "How do I change the caption of my window" or "How do I convert my CString into a ..."
I can guess. I visit the VC++ forum a few times a day, so I see all the questions.
Rage wrote:
I think the link to Mike's C++ FAQ should be as big as the advertisement banner, and even that would not help
Unfortunately it probably wouldn't. I lot of people who ask questions don't appear to be interested in helping themselves. They just want other people to solve all their problems.
Ryan
Being little and getting pushed around by big guys all my life I guess I compensate by pushing electrons and holes around. What a bully I am, but I do enjoy making subatomic particles hop at my bidding - Roger Wright (2nd April 2003, The Lounge)
Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late - John Nichol "Point Of Impact"
|
|
|
|
|
Rage wrote:
I think the link to Mike's C++ FAQ should be as big as the advertisement banner, and even that would not help .
My browser blocks banners, ads and popups
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Greg S. wrote:
My browser blocks banners, ads and popups
Ryan
Being little and getting pushed around by big guys all my life I guess I compensate by pushing electrons and holes around. What a bully I am, but I do enjoy making subatomic particles hop at my bidding - Roger Wright (2nd April 2003, The Lounge)
Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late - John Nichol "Point Of Impact"
|
|
|
|
|
I posted some replies to your nasty comments but I deleted them. I'm just wasting my time. I don't know why you guys have to be so mean about it, you're so perfectly willing to post degrading comments, even saying that I am not interested in helping myself. Well, HF picking on the newbies guys. Later.
|
|
|
|
|
I saw that you weren't using MFC, which is why I gave a non-MFC answer in my reply. It's even easier than if you are using MFC. Every message that is posted to your application is handled through your message loop. If you're not using MFC, then you have complete control over the message loop, so just check every message for a WM_KEYDOWN sent to your list control, with wParam == VK_RETURN.
But having said that, this question has been asked recently, for both win32 and MFC. If you had searched the last week's messages, you would have found your answer.
Ryan
Being little and getting pushed around by big guys all my life I guess I compensate by pushing electrons and holes around. What a bully I am, but I do enjoy making subatomic particles hop at my bidding - Roger Wright (2nd April 2003, The Lounge)
Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late - John Nichol "Point Of Impact"
|
|
|
|
|
Are you really sure you want to perform you action based on VK_RETURN? Perhaps you would be better off handling the LVN_ITEMACTIVATE message.
--------
There are 10 types of people in this world. Those who know binary and those who don't.
|
|
|
|
|
I am already handling LVN_ITEMACTIVATE, which only seems to get sent by double-clicks. Thanks anyways though.
|
|
|
|
|
Aha! I was going to set out to prove you wrong about that, but now think I know what your problem is.
Your CListCtrl is in a dialog, right? As some of the other responses may have suggested, the dialog is eating your VK_RETURN messages. I suggest that you derive a class from CListCtrl and add a WM_GETDLGCODE handler something like this:
UINT CListCtrlEx::OnGetDlgCode()
{
const MSG *pMsg = (const MSG *)GetCurrentMessage()->lParam;
if (pMsg != NULL &&
pMsg->message == WM_KEYDOWN &&
pMsg->wParam == VK_RETURN) {
return DLGC_WANTMESSAGE;
}
return CListCtrl::OnGetDlgCode();
}
Assuming that you want the same thing to happen for double-clicks and the enter key, you should handle LVN_ITEMACTIVATE. If you want to do something different, then this change should get the WM_KEYDOWN/VK_RETURN to your list control.
--------
There are 10 types of people in this world. Those who know binary and those who don't.
|
|
|
|
|
I'm not using MFC at all and My ListView control is in a mdi child window. So I can't use that code. I did mention I was not using mfc but I didn't mention what kind of parent window the list view was in because I didn't think it was important. Sorry about that.
btw Ryan Binns, you edited your answer to say "if you're using win32, just check your message loop". Do you think that answers my question? It doesn't. I admit I didn't search the forum for an answer before, but I have now. And it's not there.
|
|
|
|
|
Well, you may not be able to use the code, but you can still use the concept. You can subclass (in the Windows sense, not the C++ sense) the ListView control and handle the WM_GETDLGCODE message.
There may be more (seemingly) expedient ways to work around your problem, such as peeking the message loop or playing games with the default button, but I don't know of any ways more correct than handling WM_GETDLGCODE as I suggested.
--------
There are 10 types of people in this world. Those who know binary and those who don't.
|
|
|
|
|
I want to know whether the file is ms office file, pdf file, tiff file...etc.
I search and found example at microsoft.com. And I found out I can use StgOpenStorageEx to get the property of any files. but I'm still not success to get the type of the file yet.
Here is my code
<br />
....myfunction(){<br />
char filename[]="c:\\test.tiff";<br />
WCHAR wcFilename[1024];<br />
setlocale( LC_ALL, "" );<br />
int i = mbstowcs(wcFilename, &filename, strlen(filename));<br />
setlocale( LC_ALL, "C" );<br />
wcFilename[i] = 0;<br />
<br />
IStorage *pStorage = NULL;<br />
IPropertySetStorage *pPropSetStg = NULL;<br />
IPropertyStorage *pPropStg = NULL;<br />
HRESULT hr;<br />
<br />
hr = ::StgOpenStorageEx(wcFilename,STGM_READ,STGFMT_ANY,0,NULL,NULL,IID_IPropertySetStorage ,reinterpret_cast<void**>(&pPropSetStg));<br />
<br />
if(FAIL(hr))<br />
return<br />
<br />
hr = if(pPropSetStg == NULL)<br />
return;<br />
<br />
hr = pPropSetStg->Open(FMTID_SummaryInformation,STGM_READWRITE|STGM_SHARE_EXCLUSIVE,&pPropStg);<br />
the program has no error.. but pStorage = NULL so it never execute the last statement
hr= pProSetStg->Open.......
why is that? Is it StgOpenStorageEx(..) works for all kinds of file?
|
|
|
|
|
can anyone help me please...
I nned to know how to read the property of the non-MS Office files.
|
|
|
|
|
Ok, I posted this to Operating Systems/SysAdmin back on Jun.6.
Let's see if any C++ people can help me.
I'm trying to find a way to delete a user-defined EventLog file.
I create the reg keys (for example) :
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog\My Log
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog\My Log\File
and set ...\File = %SystemRoot%\system32\config\MyLog.evt
The file MyLog.evt is created by the EventLog monitor ... as expected.
Unfortunately it (services.exe i.e. EventLog monitor) maintains open references (4 it seems) to the file handle.
I guess it was a bit of wishfull thinking to hope that the handle would be closed when the reg key ...\My Log was deleted (and yes I make sure there are no sources left using the EventLog before I try to delete it).
My current solution is to queue a MoveFileEx(MOVEFILE_DELAY_UNTIL_REBOOT | MOVEFILE_REPLACE_EXISTING) to a hardcoded filename in the temp directory.
Does anyone know of another way to get the ELM to release all references (close the handle) from C++ Win32 so that I don't need a reboot ?
I don't have .NET installed although I noticed it has a class that wraps access to EventLogs i.e. EventLog, and has a Delete method to delete a custom log file.
Does anyone know how the .NET EventLog.Delete works ?
...cmk
|
|
|
|
|
hello @all,
i have a CString, for example:
CString m="TSET";
but i need the invert (turn around) from this CString:
CString n="TEST";
how can i do this?
thank you very much.
sunny
|
|
|
|
|
n = m;<br />
n.MakeReverse();
/ravi
Let's put "civil" back in "civilization"
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
thanks for reply.
it works great!!!!
THANKS!!!!
sunny
|
|
|
|
|
|
thanks for reply.
it works great!!!!
THANKS!!!!
sunny
|
|
|
|
|
Can I convert a CString varible to (char *) type?
For example:
void fun(char * str)
{
....
}
CString str;
fun(????str)
What should be added to before "str"?
|
|
|
|