|
Hi to all
Iam using CInPlaceEdit class whose author is "Aravindan Premkumar"
Its working very well. But I want to have a spinner control associated with the inplace edit box (Offcourse it's possible). I tried the following code its working but there are some problems associated with it which I'll discuss below.
Code:
step 1: I made the CSpinButtonCtrl object member of this class
class CInPlaceEdit : public CEdit
{
public:
CSpinButtonCtrl m_spinCtrl;
.......
};
Step 2: I made some changes in the following method
BOOL CInPlaceEdit::ShowEditCtrl(DWORD dwStyle, const RECT &rCellRect, CWnd* pParentWnd, UINT uiResourceID, int iRowIndex, int iColumnIndex,CString& strValidChars, CString& rstrCurSelection)
{
m_iRowIndex = iRowIndex;
m_iColumnIndex = iColumnIndex;
m_strValidChars = strValidChars;
m_strWindowText = rstrCurSelection;
m_bESC = FALSE;
if (NULL == m_pInPlaceEdit->m_hWnd)
{
BOOL bCreated = m_pInPlaceEdit->Create(dwStyle, rCellRect, pParentWnd, uiResourceID);
// I added following code in this method
CRect rect;
rect.left = rCellRect.left + 50;
rect.top = rCellRect.top;
rect.right = 20;
rect.bottom = rCellRect.bottom;
// are above 5 line correct way to obtain right location for spinner ctrl??
// If not how it could be done?
bCreated = m_spinCtrl.Create(WS_CHILD | WS_VISIBLE | UDS_ALIGNRIGHT |UDS_SETBUDDYINT | UDS_ARROWKEYS |UDS_AUTOBUDDY, rect, pParentWnd, IDC_SPIN);
m_spinCtrl.SetRange32(0, 1000);
UDACCEL uda;
uda.nInc = 20;
uda.nSec = 0;
m_spinCtrl.SetAccel(1, &uda);
return bCreated;
}
return TRUE;
}
after this I removed the PostMessage(WM_CLOSE) statement from OnKillFocus()
The spinner ctrl is getting displayed & the edit box values are also changing but only when user clicks on spinner button .
PROBLEMS:
1)Though while creating spinner button I have given style as UDS_ARROWKEY it is not working.
2) When User resizes the grid column multiple spin button ctrl gets created.
Please tell me where i am going wrong.
if any one have achieved this please help me how it could be done.
Thank you
|
|
|
|
|
Just a guess...
You are creating the spin control in the wrong place. This function get's called multiple times and everytime it creates a new spin control.
Shoaib Patel wrote: Iam using CInPlaceEdit class whose author is "Aravindan Premkumar"
You will receive a better answer from him.
Nibu thomas
Software Developer
|
|
|
|
|
hello Nibu
your guess was , that method is getting called multiple no. of times but I checked its not the case.
Actually I have almost created the spin button control it is working when user clicks on it but when user presses up or down key to change the value of buddy it increaments it first time & after that it doesn't.
And when user resizes the grid column it is having some problem. I think the problem is because of its position.
If you want I can send you the sample application & the document of scenarios.Please help me.
You said I'll get better answer from him ( Do u mean "Aravindan Premkumar"??)
Do u know his email id. i tried searching it but I didn't found it.
Thank you
|
|
|
|
|
hi,
As i created 5 buttons at runtime (getting values from user).
Simultaneously i want to add event to those button which i created at runtime.
how & where could i add the button cliked event in our code .
reply early
send reply
|
|
|
|
|
You can override OnCommand for this purpose. Look up MSDN for more help.
Nibu thomas
Software Developer
|
|
|
|
|
Check the id of the button that was clicked in the OnCommand function and perform the tasks required over there .
Vision is Always important and so is your ATTITUDE.
Wishes.
Anshuman Dandekar
|
|
|
|
|
thanks , i got it from ur reply...
send reply
|
|
|
|
|
Hi maharaja pandian,
////In file h///////////////
CButton m_Button3;
afx_msg void OnBnClickedButton3();
////////In file Cpp/////////////
#define IDC_BUTTON3 12000
ON_BN_CLICKED(IDC_BUTTON3, OnBnClickedButton3)
///////In you function////////////////
m_Button3.Create("Butotn3",WS_CHILD|WS_VISIBLE|BS_NOTIFY,CRect(0,0,20,20),this,IDC_BUTTON3);
void CssDlg::OnBnClickedButton3()
{
MessageBox("button3");
}
|
|
|
|
|
thanks for ur reply,
but during the runtime only i know ,how many buttons are requried.
i created like
CButton bt[]=new CButton (noofval);
bt[0].create(....);
bt[1].create(....);
.
.
.
like that i created, but i want to add cliked event to that each button
send reply
|
|
|
|
|
You can use Oncommand in your project but if you know about buttons
you can use this code (example you created 10 buttons dynamic) then
you can use this way.I use this way and this is safe and I think it's easy
|
|
|
|
|
thanks , i got it from ur reply...
send reply
|
|
|
|
|
Does anyone know whether you can have more than one Column in a CComboBox ? Seen this in an Access App. If yes: how to do ?
Modified: Meant Column rather that row !
-- modified at 7:20 Monday 20th March, 2006
|
|
|
|
|
What do you mean by more that one row in a combo box?
Nibu thomas
Software Developer
|
|
|
|
|
All right: a ComboBox keeps al lot of items listed while opened. I used ComboBoxes a lot so far.
It´s content could look like this, just one row is keept by ComboBox Element and displayed:
Fred
Harry
Paul
Thomas
I seen this in ACCESS in a different shape:
1 Fred
2 Harry
3 Paul
4 Thomas
ACCESS is capable of holding more than one row in a ComoBox Element.
|
|
|
|
|
RadioOpa wrote: I seen this in ACCESS in a different shape:
1 Fred
2 Harry
3 Paul
4 Thomas
It is easy to display strings like this...
When you add an item make sure you get the index to the item and then use
CString's Format function.
CString str;
str.Format("%02d Fred", nIndex);
m_cmb.AddString(str);
Well to create multicolumn list box use LBS_MULTICOLUMN .
Nibu thomas
Software Developer
|
|
|
|
|
Thanks, but this is not a ListBox but a ComboBox. In a ListBox you can easily create more than one column and select items and it´s columns as
m_Liste.InsertColumn( 0, "ID");
m_Liste.SetColumnWidth( 0, 40 );
m_Liste.InsertColumn( 1, "Customer");
m_Liste.SetColumnWidth( 1, 160 );
m_Liste.InsertColumn( 2, "Country");
m_Liste.SetColumnWidth( 2, 40);
It appears that ComboBoxes do not support this feature so I need to format the string as suggested. I´ll use CString members as mid... for getting what I´m after.
|
|
|
|
|
Yeah. You are right. Subclass the combobox. And then get hold of the list box inside the combo using OnCtlColor (See my reply to NS17 down). Now modify the style of the list box. Set it to have LBS_MULTICOLUMN style.
Nibu thomas
Software Developer
|
|
|
|
|
|
Hi,
I have my MFC wizard generated applicaiton (TestPro),
one global object is created with name CTestProApp theAPP,
This constructir invokes ( CWinApp::CWinApp), from here how the control flows..
From here how will call my progam ( CTestProApp->InistInstance, run..etc) methods, b'coz I did't find any of the methods are calling from CWinApp constructor.
Code for CWinApp constructor: Could any body explain code level how it works,
----------------------------------------------------------------
CWinApp::CWinApp(LPCTSTR lpszAppName)
{
if (lpszAppName != NULL)
m_pszAppName = _tcsdup(lpszAppName);
else
m_pszAppName = NULL;
// initialize CWinThread state
AFX_MODULE_STATE* pModuleState = _AFX_CMDTARGET_GETSTATE();
AFX_MODULE_THREAD_STATE* pThreadState = pModuleState->m_thread;
ASSERT(AfxGetThread() == NULL);
pThreadState->m_pCurrentWinThread = this;
ASSERT(AfxGetThread() == this);
m_hThread = ::GetCurrentThread();
m_nThreadID = ::GetCurrentThreadId();
// initialize CWinApp state
ASSERT(afxCurrentWinApp == NULL); // only one CWinApp object please
pModuleState->m_pCurrentWinApp = this;
ASSERT(AfxGetApp() == this);
// in non-running state until WinMain
m_hInstance = NULL;
m_pszHelpFilePath = NULL;
m_pszProfileName = NULL;
m_pszRegistryKey = NULL;
m_pszExeName = NULL;
m_pRecentFileList = NULL;
m_pDocManager = NULL;
m_atomApp = m_atomSystemTopic = NULL;
m_lpCmdLine = NULL;
m_pCmdInfo = NULL;
// initialize wait cursor state
m_nWaitCursorCount = 0;
m_hcurWaitCursorRestore = NULL;
// initialize current printer state
m_hDevMode = NULL;
m_hDevNames = NULL;
m_nNumPreviewPages = 0; // not specified (defaults to 1)
// initialize DAO state
m_lpfnDaoTerm = NULL; // will be set if AfxDaoInit called
// other initialization
m_bHelpMode = FALSE;
m_nSafetyPoolSize = 512; // default size
}
---------------------------------------------------------------------------
Thanks
Siva
|
|
|
|
|
Siva Sankar Koyi wrote: From here how will call my progam ( CTestProApp->InistInstance, run..etc) methods, b'coz I did't find any of the methods are calling from CWinApp constructor.
it's all done by the frame work.
one way to look at it, is to put a break point in InitInstance, and see where it's called from.
if InitInstance is not called, I think there is a problem with you program, maybe you deleted a line or two in the generated Wizard code.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
press f9 on the codes you have typed and while running in the debugging mode, just press f5 so that it will stop in the next line of "your" code where you have set a break-point(f9). now it wont be letting you see the MFC AFX zone secrets.
VuNic
|
|
|
|
|
I developed DCOM Server and Mutltithreaded Client in VC++.
When I run client and If DCOM Service is in started state then it gives an Error "Server Execution failed".
Can Anybody help me?
Its urgent!!!
Anita
|
|
|
|
|
how do i find out if a particular process is running or not. I have the ProcessID with me for reference. I dont wanna use OpenProcess method. Is there any other way.
|
|
|
|
|
you can enumerate running processes if you have the name of the executable and match the filenames.
BTW, if you just want to check whether IE is running or not then this code snippet will work just fine
HWND hExplorer = ::FindWindow("IEFrame", NULL);
if (!hExplorer)
{
hExplorer = ::FindWindow("CabinetWClass", NULL);
}
if(hExplorer)
{
}
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg
|
|
|
|
|
why not openprocess?
nave
|
|
|
|