|
I tried to add the handler by clicking right on my dialog class and slecting Add Message Handler, but i cant seem to define "WM_KICKIDLE". How do i add a handler for a custom message like that?
Happy Newyearrrrrrrrrrrrrrrr!!!!!!!!!!!!!!!!!!!!! :p
Kuniva - Also a big Buffy fan, but mostly for Eliza Dushku (Faith)
|
|
|
|
|
With the good old GDI I have always used GetTextExtentPoint32() to get the width of a text string on the current DC.
Now I'm am playing around with Gdiplus::Graphics.DrawString(), but I can't find any function that tell me how many pixels my string is going to be (text width)
Any ideas?
- Anders
Money talks, but all mine ever says is "Goodbye!"
|
|
|
|
|
You may have some success with the overloaded methods:
Gdiplus::Graphics::MeasureString(...) OR
Gdiplus::Graphics::MeasureDriverString(...)
/Andreas
|
|
|
|
|
Thanks a lot
- Anders
Money talks, but all mine ever says is "Goodbye!"
|
|
|
|
|
Hi,
i am new to C++ & Object Oriented concepts.
I came across the 'inheritence' chapter in my C++ book & have the following question.
Can a template class be used as a base class ?
thankyou all for replying.
sysdeamon
|
|
|
|
|
|
I agree!
|
|
|
|
|
|
|
I just discovered the "Format" tab of the Options dialog in MSVC++ 6.0 . I clicked on Source Window, and changed the foreground color of String to red, and voila!: all my quotation mark-enclosed strings in the source code view window are in red! I know this isn't a big deal for a lot of you; I had always known that you could change the colors, but I never knew you could color strings .
|
|
|
|
|
Thanks...I didnt know you could do that....it makes looking at the code easier.
==================================================
The Eclypse
|
|
|
|
|
Hey it's great
Thanks for the hint and a happy new year
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Hi,
What's the notification message that a list view control sends when the selection changes? I need the equivalent of LBN_SELCHANGE for the list view control.
Thanks,
Yury Sulsky
|
|
|
|
|
Hehe, never mind, I found it.
|
|
|
|
|
<br />
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run<br />
I can add a value to this programatically under Windows 98, but when I give my program to my friend on XP, CRegKey::Create() fails. Am I not being told something?
-Jason
nirgle.bitdevil.com
|
|
|
|
|
|
Michael Dunn wrote:
What is the return value from Create()?
Seems to be 161.
#define ERROR_BAD_PATHNAME 161L
Perhaps Software needs to be capitalized? Is the Windows XP Registry case sensitive?
BTW here is the code:
CRegKey autoRunKey;
long ret;
if ((ret = autoRunKey.Create(HKEY_CURRENT_USER, "\\Software\\Microsoft\\Windows\\CurrentVersion\\Run")) != ERROR_SUCCESS)
{
CString f;
f.Format("Couldn't open key.. return code is %ld", ret);
AfxMessageBox(f);
}
-Jason
nirgle.bitdevil.com
|
|
|
|
|
hmm, two things to change. 1, remove the backslash before "software". (Case doesn't matter with registry names). 2, never use KEY_ALL_ACCESS with registry functions because they will fail if the user is not an administrator. The default access for the ATL functions I've encountered is KEY_ALL_ACCESS, which in hindsight was a bad design decision. Anyway, don't take the default access, specify exactly the access you need (KEY_WRITE or whatever). You didn't say if the XP user is running as admin, but if they're not, then the access problem is definitely making the call fail.
--Mike--
My really out-of-date homepage
Buffy's on. Gotta go, bye!
Sonork - 100.10414 AcidHelm
Big fan of Alyson Hannigan.
|
|
|
|
|
Thanks for the quick response. I tried removing the \\ on a hunch, and it ended up working. Good idea. I'll look into the permissions thing too.
Thanks!
-Jason
nirgle.bitdevil.com
|
|
|
|
|
I haven't yet used XP, but it is supposed to be Win2K warmed over. This may be a permissions issue. Does your friend run the program under a user account that has permission to alter the Registry?
|
|
|
|
|
I'm working on a trace utility, mainly to extend my knowledge of IOStreams and STL. I have a map to keep track of a number of edit windows, which all take the same position and are sown based on a tab control.
map<cstring, ctracewnd*=""> m_TraceMap;
Now, I hide all my windows before showing the one selected, like this:
void HideWindow(std::pair<cstring, ctracewnd="" *=""> p)
{
CTraceWnd * pWnd = p.second;
pWnd->ShowWindow(SW_HIDE);
}
void CTabView::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)
{
std::for_each(m_TraceMap.begin(), m_TraceMap.end(), HideWindow);
// etc, etc.
Now I have two questions.
1. How can I make HideWindow a member function of CTabView ? I've tried mem_funxxx stuff, to no avail, and spent a good amount of time reading 'Generic Programming and the STL', also without any success.
2. Better yet, is there a way I can call ShowWindow(SW_HIDE) directly, OR add a HideWindow function that does this to CTraceWnd, and call that ?
Thanks to anyone who answers.
Christian
After all, there's nothing wrong with an elite as long as I'm allowed to be part of it!! - Mike Burston Oct 23, 2001
Sonork ID 100.10002:MeanManOzI live in Bob's HungOut now
|
|
|
|
|
class MyClass : public CTabView
{
public:
MyClass() {}
void HideWindow() { CTabView::ShowWindow(SW_SHOW); };
};
// this seems like it should be a template of some kind
void HideWindow(const std::pair<int, MyClass>& v)
{
MyClass& blah = const_cast<MyClass&>(v.second);
blah.HideWindow();
}
void main()
{
std::map<int, MyClass> blah;
std::for_each(blah.begin(), blah.end(), HideWindow);
}
|
|
|
|
|
Thanks, I'm sure this will work, and the way I'm doing it now works, too, but I want to get rid of the global function altogether and replace it with a member function, either of the class held in the second part of the pair, or in the class calling the function.
Christian
After all, there's nothing wrong with an elite as long as I'm allowed to be part of it!! - Mike Burston Oct 23, 2001
Sonork ID 100.10002:MeanManOzI live in Bob's HungOut now
|
|
|
|
|
void CTabView::HideWindow(std::pair<cstring, ctracewnd="" *=""> p)
{
CTraceWnd * pWnd = p.second;
pWnd->ShowWindow(SW_HIDE);
}
void CTabView::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)
{
std::for_each(m_TraceMap.begin(), m_TraceMap.end(), std::mem_fun_ref(&CTabView::HideWindow));
but I get this error:
error C2784: 'class std::mem_fun_ref_t<_R,_Ty> __cdecl std::mem_fun_ref(_R (__thiscall _Ty::*)(void))' : could not deduce template argument for '<unknown>' from 'void (__thiscall CTabView::*)(struct std::p
air<class cstring,class="" ctracewnd="" *="">)'
I thought maybe mem_fun1_ref, but things just got worse. I tried adding the function to CTraceWnd, but that was worse again....
Christian
After all, there's nothing wrong with an elite as long as I'm allowed to be part of it!! - Mike Burston Oct 23, 2001
Sonork ID 100.10002:MeanManOzI live in Bob's HungOut now
|
|
|
|
|
Try making a "void HideWindow ()" method in CTraceWnd. Then "std::mem_fun_ref (CTraceWnd::HideWindow)" should work.
Tim Smith
Descartes Systems Sciences, Inc.
|
|
|
|