|
I have taken a look at that, but this time I noticed I need to give my view the keyboard focus (how can I do this?).
Thanks.
Though I'm still not sure how to detect multiple arrow key presses at once, I tried getting the flags with "ah 12h, int 16h" but that only returns flags that hold shift,ctrl,insert,etc.
So how do I detect that two (or more) arrow keys are being pressed at once?
|
|
|
|
|
Take a look at the function GetKeyState(VK_DOWN) , should return the state of the key, pressed or not etc.
You will need to call it once for each key you want to check.
If you vote me down, my score will only get lower
|
|
|
|
|
I'm going crazy over TB_ADDSTRING. I can't get it to work properly.
For example, this will work:
TCHAR* pCaption = _T("I Hate TB_ADDSTRING");
iIndex = ::SendMessage(m_hWnd, TB_ADDSTRING, (WPARAM)0, (LPARAM)pCaption);
pCaption = _T("Did I mention that I Hate TB_ADDSTRING?");
iIndex = ::SendMessage(m_hWnd, TB_ADDSTRING, (WPARAM)0, (LPARAM)pCaption);
However, this will not:
TCHAR szRes[255];
LoadString( m_hResModule, IDS_SOMESTRING, szRes, sizeof( szRes ) );
iIndex = ::SendMessage(m_hWnd, TB_ADDSTRING, (WPARAM)0, (LPARAM)szRes);
LoadString( m_hResModule, IDS_SOMETHING, szRes, sizeof( szRes ) );
iIndex = ::SendMessage(m_hWnd, TB_ADDSTRING, (WPARAM)0, (LPARAM)szRes);
What is going on?!
|
|
|
|
|
Check the return value from LoadString()
"No matter where you go, there your are." - Buckaroo Banzai
-pete
|
|
|
|
|
Hi,
LoadString return value is fine, it' the TB_ADDSTRING part that is confusing me!
|
|
|
|
|
From the docs:If hinst is set to NULL, idString points to a character array with one or more null-terminated strings. The last string in the array must be terminated with two null characters. Neither of your examples is right - you pass a single null-terminated string - but by sheer luck the first example is working because after your literals there happen to be two nulls.
In your second example, init your TCHAR array to all zeros before the LoadString() calls and it will work
--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ
----
Actual sign at the laundromat I go to: "No tinting or dying."
|
|
|
|
|
Hi there,
We've been using VSS for a while, but the database is getting rather large and VSS is only recommended for 500 MG !
Can anyone recommand a good alternative? One that does atomic commits, has a decent gui, and has a feature to share files between projects (like in VSS).
Thanks
[b]yte your digital photos with [ae]phid [p]hotokeeper - www.aephid.com.
|
|
|
|
|
CVS - with the WinCVS GUI and WinMerge as the GUI diff'ing tool.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
How about Subversion? it's based on CVS...
Does CVS / Subversion support sharing of files between projects? Couldn't find that in Subversion...
Cheers,
swine
[b]yte your digital photos with [ae]phid [p]hotokeeper - www.aephid.com.
|
|
|
|
|
We have switched to perforce. It supports atomic commits branching and file sharing (via a branch).
It is a server/client system and is very fast.
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
I was able to test Ben Bryant's simple XML parser in a small independent project setting. But when I put in an existing larger project I get the following link errors:
Linking...
nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMT.lib(new.obj)
nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in libcpmt.lib(delop.obj)
Release/project_firm.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
I tried undefining _ATL_MIN_CRT in preprocessor setting and other things I read on this and MS site but nothing works.
The project was compiled with multithreading, using MFC static library and VC++ 6.
Any idea? I would love to be able to use the XML Parser.
|
|
|
|
|
Taking a guess, some of your projects are compiled for the multithreading library, and some are not. I would make sure all of the projects and object libraries are set consistently, and rebuild everything.
Software Zen: delete this;
|
|
|
|
|
Actually I built everything with multithread option and MFC static lib.
Nick Pirocanac's report points out this MSDN article
It says,
RESOLUTION
To resolve this issue, explicitly import the template class for CStringT and CSimpleStringT in the precompiled header (stdafx.h) file, as follows: template class __declspec(dllimport) CStringT<tchar, strtraitmfc<tchar,="" chtraitscrt<tchar=""> > >;
template class __declspec(dllimport) CSimpleStringT<tchar>;
I did this but it would not compile. It complains about these '<'.
From Nick Pirocanac's posting, it seems that there are different definitions of CString in more than one library.
But thanks for trying to help.
|
|
|
|
|
I am responding to an DTN_DROPDOWN message from a CDateTimeCtrl in order to set the day states for the Month Calendar Control that appears when you click the dropdown button. I am using the following code to set the day states, where pCalCtrl is a pointer to the Calender Control that I obtained using CDateTimeCtrl::GetMonthCalCtrl():
pCalCtrl->SetDayState(nMonths,pStates);
The problem is that I get the following line asserts from the SetDayState Function:
ASSERT(GetStyle()&MCS_DAYSTATE);
Why is this happening and how can I resolve it?
Thanks
|
|
|
|
|
sschilachi wrote:
Why is this happening and how can I resolve it?
The control does not have the MCS_DAYSTATE style, therefore setting the day states makes no sense.
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
How can I set the MCS_DAYSTATE flag, i have tried but i have had no luck?
|
|
|
|
|
void CMyDialog::OnClick( UINT uId, LPNMHDR, LRESULT * )
{
CDateTimeCtrl *pDateTimeCtrl;
CMonthCalCtrl *pMonthCalCtrl;
pDateTimeCtrl = (CDateTimeCtrl *) GetDlgItem(uId);
pMonthCalCtrl = pDateTimeCtrl->GetMonthCalCtrl();
pMonthCalCtrl->ModifyStyle(0, MCS_DAYSTATE);
...
}
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
The Modify style returned true, but it did not work as the line still asserted.
Can anyone find the code that creates the CMonthCalCtrl object when the dropdown button is clicked, because then I will create my own instance of CMonthCalCtrl, it is just I cannot find the code to mimic its behaviour?
Thanks
|
|
|
|
|
sschilachi wrote:
Can anyone find the code that creates the CMonthCalCtrl object when the dropdown button is clicked...
The code I provided was from a working project that does just that, except that it adds the MCS_NOTODAY style. Remember that GetMonthCalCtrl() will only return a pointer to the month calendar control while the control actually exists--that is, while it has been dropped-down by the user. Once it has been dismissed (e.g., selecting a date), the control does not actually exist.
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
I know that, I am using the following code in an OnDtnDropdown() message handler for my own wrapper of the CTimeDateCtrl object that is an object in my own custom Toolbar:
CMonthCalCtrl* pCtrl = (CMonthCalCtrl*) GetMonthCalCtrl();<br />
ASSERT(pCtrl != NULL);<br />
pCtrl->ModifyStyle(0, MCS_DAYSTATE);<br />
SYSTEMTIME timeFrom;<br />
SYSTEMTIME timeUntil;<br />
int nCount = pCtrl->GetMonthRange(&timeFrom, &timeUntil, GMR_DAYSTATE);<br />
LPMONTHDAYSTATE pDayState;<br />
pDayState = new MONTHDAYSTATE[nCount];<br />
memset(pDayState, 0, sizeof(MONTHDAYSTATE) * nCount);<br />
int nIndex = (timeFrom.wDay == 1) ? 0 : 1;<br />
pDayState[nIndex] |= BIT4;<br />
pDayState[nIndex] |= BIT19;<br />
pDayState[nIndex] |= BIT25; <br />
pCtrl->SetDayState(nCount, pDayState);<br />
delete [] pDayState;
However when I call pCtrl->SetDayState(), it is there that the problem occurs and it directs me to the line that asserts that i previously mentioned.
The ModifyStyle function used in the third line seems to have no effect, as I checked the return value from pCtrl->GetStyle() before and after the call to ModifyStyle and the result was the same.
By the code to create the CMonthCalCtrl I meant the code that is prewritten in the source code provided with Visual C++, not the code the user writes.
Thanks
|
|
|
|
|
|
Thanks, I haven't got time to try that tonight but I will look at it tomorrow
|
|
|
|
|
I have tried to destroy the control using pMonthCalCtrl->DestroyWindow() in response to the user clicking the dropdown button, however, I get an access violation when i run it, how do you destroy the MonthCalCtrl?
Thanks
|
|
|
|
|
Did you ever fix this problem? I am having the same problem in getting bold dates up. If you managed to destroy and recreate the window and get the dates bold I would love to know how.
Hope your still reading.
Thanks
Dave
|
|
|
|
|
No, I looked absolutely everywhere and tried just about everything but I eventually gave up as I couldn't find a solution anywhere. If I do have any success I will let you know, and could you do the same if you find a solution.
Thanks
|
|
|
|