|
Hi,
Is there a way to append text to a rich edit box without using SetSel/ReplaceSel? The problem is that the text is highlightable, and if the user is highlighting text, then receives a chat message, which runs in a separate thread, sometimes the mouse dragging will set the selection to within the chat history and replace the highlighted history instead of appending to the end of the editbox.
Thanks!
Kelly Ryan
|
|
|
|
|
In that case you just have to ensure that all accesses to your rich edit box all happen on your main (GUI) thread. When you get data on your seperate thread, post a user defined message to your gui thread and have the handler of that message do the appending (remember to save and restore the current user selection).
|
|
|
|
|
Oh yeah.. I was thinking I'd still run into shared memory problems if I set up an event queue but if I just post a windows message I won't have to worry about memory locking or anything. Great, thanks!
Kelly Ryan
|
|
|
|
|
i load menu using this code
CMenu* menu2=AfxGetMainWnd()->GetMenu();
CMenu* submenu = menu2->GetSubMenu(0);
submenu->AppendMenu(MF_STRING, MF_BYPOSITION,m_SongName );
how can i add click event to this menus
-- modified at 9:46 Monday 26th June, 2006
|
|
|
|
|
Add handler for ON_COMMAND_RANGE depends on the ID receiving inside the function, you could handle it.
don't forget to specify the menu ID within the range
Sample from MSDN
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_COMMAND_RANGE(ID_FILE_MENUITEM1, ID_FILE_MENUITEM3, OnFileMenuItems)
END_MESSAGE_MAP()
void CMainFrame::OnFileMenuItems(UINT nID)
{
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(0);
submenu->CheckMenuRadioItem(ID_FILE_MENUITEM1, ID_FILE_MENUITEM3,
nID, MF_BYCOMMAND);
}
SaRath.
"Do Next Thing..."
My Blog | Understanding State Pattern in C++
|
|
|
|
|
Hello
sir i'm getting assertion error in my program.
actually this error comes in winocc.
here
ASSERT(::IsWindow(m_hWnd));
My Code is:-
void
CTESTsipXtapiDlg::handleOffering(SIPX_CALL hCall)
{
SetDlgItemText(IDC_STATIC_NEW_CALL,"New Incoming Call");
}
just i want to display this msg in any text box or in label control of Dialog.
My application is a Dialog Based Application.
thanks
|
|
|
|
|
It seems as if you call SetDlgItemText() before the window/control is created.
AFAIK, the earliest time you can (programmaticly) set text to a window is in OnInitDialog().
|
|
|
|
|
hello
i cann't do it..
becoz when a call comes to my PC i have to show the caller id in it.
yes i'm feeling the same becoz when i trace it then i found that hWnd value is NULL.
plz tell me how to recify this error.
thanx
|
|
|
|
|
The simple solution would be to just do a null-check on the m_hWnd handle. If it is null, skip the set call. A more thorough solution might be to figure out why you are trying to set a window's text prior to creation to begin with. I've seen many people deal with communication-type code where they initialize the communications port (serial, ethernet, etc) in the application's InitInstance method and wonder why they have problems (a better solution in many cases is to do that initialization from the OnInitDialog/OnInitialUpdate method in the dialog or view class).
If you decide to become a software engineer, you are signing up to have a 1/2" piece of silicon tell you exactly how stupid you really are for 8 hours a day, 5 days a week
Zac
|
|
|
|
|
You can test ::IsWindow(m_hWnd) yourself. If ::IsWindow(m_hWnd) returns FALSE, then you can buffer the message(s). (Or write them to a file).
Then, in the OnInitDialog, you can update the window with the buffered messages.
But it seems a bit peculiar to me that the app exists and is running, but the window doesn't exist (yet) ...
|
|
|
|
|
hello
yes this is exactly i'm not getting if appication is running but the window does not exist at all.and hwnd=NULL.
My Application is a Dialog Based Application.
i cannot do as u said becoz in my application when Any one will call to My PC then when i will set the Caller id.
plz help me how to reinitialize the hwnd.
byee
|
|
|
|
|
Have a look at the response from Zac Howland. It should give you the solution to your problem.
|
|
|
|
|
kakan wrote: AFAIK, the earliest time you can (programmaticly) set text to a window is in OnInitDialog().
Make sure the base implementation (of OnInitDialog() ) has been called first. That's when the controls get created.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
yes i have defined the OnintDialog() Before the function calling.
in my case when a call come to my PC then my sipx tapi event generate & its call the handleoffring function which is defined by me in a dialog class and in this function i get the caller id.
now i want to display this id in the text box that "this number is calling".
thats it.
Plz tell me the solution
thanx
|
|
|
|
|
aavesh wrote: Plz tell me the solution
The solution is to simply not update a control that does not exist. Check the control's window handle and act accordingly.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
the control which is i'm updating do exist.
now how to reinitialize the m_hwnd which is NULL when getcallid function called.
byeee
thanx
|
|
|
|
|
aavesh wrote: the control which is i'm updating do exist.
Not according to this assertion:
ASSERT(::IsWindow(m_hWnd));
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
this is exactly i want to know how to update the control according to this.
|
|
|
|
|
You must wait until the window exists before it can be updated. What part of that are you not understanding?
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
hi
this is exactly i'm not getting becoz when my dialog is initialized and my button events are working nice.....after this when any call comes then m_hwnd variable value got NULL.
how this is happenning?
i don't think so this problem should take much time..
but i'm not getting proper solution plz help me.
thanx
|
|
|
|
|
aavesh wrote: ...after this when any call comes then m_hwnd variable value got NULL.
Where is this m_hwnd coming from? I would start there (to see why a NULL window handle is being sent to your code).
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
i have used follwing code :-
void CTESTsipXtapiDlg::handleOffering(SIPX_CALL hCall)
{
SetWindowText(IDC_Realm,"Hello");
}
it does not show the text in the text box.
do u suggest6 me any other way..could u give me ur yahoo id so we chat directly.
thanx
|
|
|
|
|
aavesh wrote: SetWindowText(IDC_Realm,"Hello");
Is IDC_Realm a valid window handle (not a resource id)? Have you tried:
GetDlgItem(IDC_Realm)->SetWindowText("Hello");
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Make IDC_STATIC_NEW_CALL as a control variable of type CStatic and then try SetWindowText on it .
Regards,
FarPointer
Blog:FARPOINTER
|
|
|
|
|
hello
if i use this then m_hwnd will reinitialize itself.
becoz always at the time of calling a function it gets NULL.
i'm trying now.
byeeee
|
|
|
|