|
How do i insert text to the CRichEditCtrl progromaticaly?
|
|
|
|
|
|
You need a callback function, something like:
DWORD CALLBACK readText(DWORD dwFilehandle, LPBYTE lpBuffer, LONG lBytesToRead,LONG FAR* lpBytesRead)
{
if(!ReadFile((HANDLE)dwFilhandle,lpBuffer, lBytesToRead, (unsigned long*)lpBytesRead, NULL)){
AfxMessageBox(_T("Couldn't read from file!"));
return 1;
}
return 0;
}
and then use StreamIn.
/Per
|
|
|
|
|
Hi,
I am using ADO tecnology to execute stored procedure.
Does anyone know how to read out a parameter from sp into VC++ variable
I need to get @file_id (which is set at the bottom of sp)
thank you,
bartek
My stored procedure:
CREATE PROCEDURE [sp_StandardFileNew]
@receive_date varchar(20),
@pj_id int,
@pj_type varchar(20),
@file_group varchar(200),
@name varchar(255),
@ext varchar(10),
@total_words int,
@dtp_pages int,
@notes varchar(500)
AS
DECLARE @file_id int,
@receive_date2 smalldatetime,
@project_id int,
@job_id int,
@group_id int
-- Check if obligatory text parameters are null
if @name is null OR @ext is null OR @pj_id is null OR @pj_type is null OR @receive_date is null
begin
return 1
end
-- Set @project_id or @job_id depending on the @pj_type [ "job" | "project" ]
if @pj_type="job" begin
set @project_id=null
set @job_id=@pj_id
end else if @pj_type="project" begin
set @project_id=@pj_id
set @job_id=null
end else begin
return 2
end
-- Check group_txt if it exists retrieve its id or create new group if it does not exist
if @file_group is not null begin
exec sp_NewFileGroup @file_group, null, @project_id, @job_id, @group_id OUTPUT
if @group_id is null begin
return 3
end
end else begin
set @group_id = null
end
-- Convert date-string format to datetime / smalldatetime
exec sp_DateConvert @receive_date, @receive_date2 OUTPUT
-- insert new row to the Files table and convert text arguments to integer values
insert into files(name, ext, receive_date, group_id, job_id, project_id, total_words, dtp_pages, file_type_id, deleted, works_count, notes)
values(@name, @ext, @receive_date2, @group_id, @job_id, @project_id, @total_words, @dtp_pages, 0, 0, 0, @notes)
set @file_id = @@identity
if @file_id is null begin
return 4
end
return 0
GO
|
|
|
|
|
I have three menu buttons on a dialog (thanks to Norm Almond for the code) each of which requires the same menu items on them in terms of the strings they present and whether or not any items are disabled.
However, the first and third buttons need to show check marks, but independently of each other. The second button mustn't show any check marks at all.
Does anyone have any clever ideas on how best to implement this or do I need a separate menu and corresponding handlers for each?
Is there a way to use the ON_UPDATE_COMMAN_UI macro? If so how?
Derek.
|
|
|
|
|
ON_UPDATE_COMMAND_UI should work - do you have any problems with that?
Tomasz Sowinski -- http://www.shooltz.com
|
|
|
|
|
I thought this macro was only applicable to menus and toolbars that existed in a CFrameWnd-derived class.
If I can use it then presumably all I need to do is process which button was pressed and then update the checkmarks (if any) accordingly. With the LButtonDown/Up already overridden in the class to provide the menu buttons, how can I determine which button was pressed from the dialog?
|
|
|
|
|
You are correct in the ON_UPDATE_COMMAND_UI is not directly supported in dialog based apps. However, there is a workaround that is EASY to implement that WILL allow you to use the ON_UPDATE_COMMAND_UI mechanism on dialogs. Look up on MSDN the private message WM_KICKIDLE. The kind developers at microsoft implemented this private message for us folks that like dialog based apps.
WillCodeForMoney
|
|
|
|
|
Thanks for the tip. I'll look it up
|
|
|
|
|
You could set a flag before calling TrackPopupMenu, and check the value inside UpdateCmdUi handlers. There's other solution - just disable or check menu items 'manually' using CMenu member functions before TrackPopupMenu.
Tomasz Sowinski -- http://www.shooltz.com
|
|
|
|
|
The next episode in my ongoing saga of owner drawn buttons:
I want to allow icons or bitmaps to be drawn on my button and this can be done using a CImageList to store the images in. At the moment I just have a single icon or bitmap to draw (the rest will come later) and I'm using the following to draw the image in DrawItem:
void CButtonEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) {
m_imageList.DrawIndirect (pDC, 0, CPoint(3 + m_bBtnPushed, 3 + m_bBtnPushed),
CSize (m_nImageWidth, m_nImageHeight), CPoint (0, 0), ILD_NORMAL);
}
The problem is that the transparent bits of an icon are drawn black! Any ideas why?
The icon is added to the image list as follows:
BOOL CButtonEx::SetButtonIcon(UINT nResourceID, COLORREF crMask) {
BOOL bReturn = FALSE;
HINSTANCE hInstance = AfxFindResourceHandle (MAKEINTRESOURCE (nResourceID), RT_GROUP_ICON);
m_hIcon = (HICON)::LoadImage (hInstance, MAKEINTRESOURCE (nResourceID), IMAGE_ICON, 0, 0, 0);
if (NULL != m_hIcon) {
m_crMask = crMask;
ICONINFO iconInfo;
ZeroMemory (&iconInfo, sizeof (ICONINFO));
bReturn = ::GetIconInfo (m_hIcon, &iconInfo);
if (TRUE == bReturn) {
m_nImageWidth = iconInfo.xHotspot * 2;
m_nImageHeight = iconInfo.yHotspot * 2;
::DeleteObject(iconInfo.hbmMask);
::DeleteObject(iconInfo.hbmColor);
bReturn = m_imageList.Create (m_nImageWidth, m_nImageHeight, ILC_COLOR32, 1, 1);
if (TRUE == bReturn) {
if (m_imageList.Add (m_hIcon) > -1) {
m_bImageLoaded = TRUE;
}
else {
m_bImageLoaded = FALSE;
}
}
}
}
return bReturn;
}
|
|
|
|
|
I think you need to create a masked image list not a standard image list. Add ILC_MASK to the nFlags parameter of the image list creation.
Hope this helps.
Steve.
|
|
|
|
|
Thanks for the tip. I'll try that and see how I get on
|
|
|
|
|
Hi,
Recently I have seen in a decoration store an application for paints mix.
One of the dialogs was the simulation of a pad sheet yellow page, with horizontal lines.
Does anybody knows where I can find a way to do this or a lib that contains it ?
Thanks,
Claude
|
|
|
|
|
What type is it with two asterixes?? Is it a pointer to a pointer? That sounds silly.
Really appreciate a hand as doing a search for this is nigh on impossible.
Thanks.
|
|
|
|
|
Silly though it may sound 'something**' is a pointer to a pointer.
I've never found the need to use one, but I'm sure there is someone who can teel you a very good reason for needing them
|
|
|
|
|
It's not that silly. Here's an example. Say you want to sort a very large array of "things", where you don't want to be swapping the things around in memory, because it would be very inefficient. You create an index into the main array of things, where each item in the index points at one of the things. This array is defined as a **:
typedef thing; // thing is large.
thing *m_atThingArray;
thing **m_atThingIndex;
int m_iArraySize = 10000;
m_atThingArray = new thing[m_iArraySize]
m_paThingIndex = new thing*[m_iArraySize];
m_paThingIndex[0] = m_tThingArray[40]; // Makes index[0] point at thing[40]
// more efficiently than moving
// thing[40] to thing[0]
This is good for sorting large arrays of large items.
------------------------
Derek Waters
derek@lj-oz.com
|
|
|
|
|
m_paThingIndex = new thing*[m_iArraySize]; m_paThingIndex[0] = m_tThingArray[40];
Where is m_paThingIndex declared? Is this automatically created when you define the p-to-p? If you want an example of a pointer to a pointer several MFC classes have methods that use a p-to-p I think there mostly for callback functions (someone jump in if I'm way off!)
Sam C
----
Systems Manager
Hospitality Marketing Associates
|
|
|
|
|
Er, sorry, typing error.
m_paThingIndex should be m_atThingIndex;
so:
m_atThingIndex = new thing*[m_iArraySize];
m_atThingIndex[0] = m_atThingArray[40];
Sorry about that!
Derek.
------------------------
Derek Waters
derek@lj-oz.com
|
|
|
|
|
Nothing to be sorry about I make typos all the time
Now anyone want to let me know if I was right about the double pointers being used in MFC class methods, concerning CALLBACK functions? Let me know if I'm in the right ballpark.
Sam C
----
Systems Manager
Hospitality Marketing Associates
|
|
|
|
|
When I use the DAO SQL form:
"[MyField] = '"+strMyString+"'"
all is well unless there is a single quote in strMyString, then JET errors out with a missing parameter error.
Does anyone know a fix, or is this just another MS/MS (MicroSoft Major Screwup)?
Richard
|
|
|
|
|
Anytime you include a string in an SQL statement (either in a where clause, VALUES clause, SET clause, etc). Single quotes must be dealt with before including the string in SQL. You do this by double-single quoting them.
ie. ("I can't swim") becomes ("I can''t swim").
When you insert this into the database, the DB server will only store one of the single quotes.
|
|
|
|
|
Hi,
I have question of you,
Why you wrote your field name between [ and ] ?
When i must use [ and ] ?
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|
|
In SQL, you must enclose any field names that contain spaces in the brackets. SQL doesn't know that 'User Name', for example, is a field name; it sees it as two words.
Select User Name, Password From Users Order By User Name
This will confuse the SQL engine. It sees 'User' as a field name, and 'Name' as a keyword that it doesn't recognize. That's when you'd use the brackets:
Select [User Name], Password From Users Order By [User Name]
Now the parser know that 'User Name', and not just 'User', is the name of the field you're after. Many people get so used to using the brackets that they enclose ALL their fields in them out of habit. I prefer to simply leave spaces out of my field names. Where I feel space would be helpful, I'll use an underscore.
Select UserName, Password From Users Order By UserName
or
Select User_Name, Password From Users Order By User_Name
Jamie Nordmeyer
Portland, Oregon, USA
|
|
|
|
|
Your answer was great ...
Now, i wanna know, what is Primary Key in Microsoft Access ?
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|
|