• Welcome to Theos PowerBasic Museum 2017.

News:

Attachments are only available to registered users.
Please register using your full, real name.

Main Menu

Why is search different from TextBox to RichText?

Started by Paul Breen, December 30, 2009, 09:12:35 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Paul Breen

Hello:
I have a modest editor that uses the textbox, and the search function uses common dialogs with the code that someone posted, Christensen, I think. Search works fine with textbox but when I make a version using richtext the search words are never highlighted. Stepping through the code with debug print shows that the problem is that setsel does not show up in the dialog, even though the parameters, or arguments to the function are OK.
Do I need to do something special? I have seen messages that say you need a special message pump for richtext, but I don't understand why.
Secondly, I would like to customize the common file find control. I found c code that says you can modify the find dialog rc file on msdn but can I do this with powerbasic? Eventually, I want to add a number of features to the search dialog.
Should I try to avoid richtext and do what Jose did, use the scintilla control? It seems that there is a lot of examples just trying to understand how he did everything, but I would like to build my own from the 'ground up', well, just because
got to go library time out

José Roca

 
I don't have worked much with the Rich Edit control. For a text editor there are better options, such Scintilla.

Quote
Secondly, I would like to customize the common file find control. I found c code that says you can modify the find dialog rc file on msdn but can I do this with powerbasic?

Why not?

See: http://msdn.microsoft.com/en-us/library/ms646956%28VS.85%29.aspx

This is the template:


/*++

Copyright (c) Microsoft Corporation. All rights reserved.

Module Name:

    findtext.dlg

Abstract:

    This module contains the resource descriptions for the Win32
    find and replace common dialogs.

Revision History:

--*/



//
//  Find and Replace Dialogs.
//

FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 30, 73, 236, 62
STYLE WS_BORDER | WS_CAPTION | DS_MODALFRAME | WS_POPUP | WS_SYSMENU |
      DS_3DLOOK
CAPTION "Find"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Fi&nd what:", -1, 4, 8, 42, 8
    EDITTEXT        edt1, 47, 7, 128, 12, WS_GROUP | WS_TABSTOP | ES_AUTOHSCROLL

    AUTOCHECKBOX    "Match &whole word only", chx1, 4, 26, 100, 12, WS_GROUP
    AUTOCHECKBOX    "Match &case", chx2, 4, 42, 64, 12

    GROUPBOX        "Direction", grp1, 107, 26, 68, 28, WS_GROUP
    AUTORADIOBUTTON "&Up", rad1, 111, 38, 25, 12, WS_GROUP
    AUTORADIOBUTTON "&Down", rad2, 138, 38, 35, 12

    DEFPUSHBUTTON   "&Find Next", IDOK, 182, 5, 50, 14, WS_GROUP
    PUSHBUTTON      "Cancel", IDCANCEL, 182, 23, 50, 14
    PUSHBUTTON      "&Help", pshHelp, 182, 45, 50, 14
END


REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 44, 230, 94
STYLE WS_BORDER | WS_CAPTION | DS_MODALFRAME | WS_POPUP | WS_SYSMENU |
      DS_3DLOOK
CAPTION "Replace"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Fi&nd what:", -1, 4, 9, 48, 8
    EDITTEXT        edt1, 54, 7, 114, 12, WS_GROUP | WS_TABSTOP | ES_AUTOHSCROLL

    LTEXT           "Re&place with:", -1, 4, 26, 48, 8
    EDITTEXT        edt2, 54, 24, 114, 12, WS_GROUP | WS_TABSTOP | ES_AUTOHSCROLL

    AUTOCHECKBOX    "Match &whole word only", chx1, 5, 46, 104, 12, WS_GROUP
    AUTOCHECKBOX    "Match &case", chx2, 5, 62, 59, 12

    DEFPUSHBUTTON   "&Find Next", IDOK, 174, 4, 50, 14, WS_GROUP
    PUSHBUTTON      "&Replace", psh1, 174, 21, 50, 14
    PUSHBUTTON      "Replace &All", psh2, 174, 38, 50, 14
    PUSHBUTTON      "Cancel", IDCANCEL, 174, 55, 50, 14
    PUSHBUTTON      "&Help", pshHelp, 174, 75, 50, 14
END


Modify it, include it in your resource file, compile the rc file, include the resulting pbr file in your application and fill the FINDREPLACE structure with a pointer to that template.

Paul Breen

#2
Hey, thanks, but . . .
I' ll try to figure this out later, but only 15 min left of intenet. . .
how do I set a pointer to the pbr resource?
It has to be one of the find sturcture fields, right?
the wifi is out, and the mean libraians log you off here after 50 min.
Happy new year :D

postscript:

Anybody out there doing scintilla with pb?

should I post questions to the SED forum or here?

José Roca

Quote
It has to be one of the find sturcture fields, right?

According to the M$ documentation you have to add FR_ENABLETEMPLATEHANDLE to the Flags member of the FINDREPLACE structure, and hInstance to the handle to a module that contains a dialog box template named by the lpTemplateName member.

Quote
how do I set a pointer to the pbr resource?

Using the MAKEINTRESOURCE macro or function:


FUNCTION MAKEINTRESOURCE (BYVAL wInteger AS WORD) AS DWORD
   FUNCTION = MAK(DWORD, wInteger, 0)
END FUNCTION


As it uses a WORD value, add an identifier before the dialog name, e.g.


#define FINDDLGORD 10


Steve Hutchesson

Paul,

I can give you the code to do this if you are interested, two RC dialogs and the dialog functions as basic code. This is a bit overkill as its for a rich text editor but it will certainly find and replace words if thats what you are after.

Paul Breen

Quote from: Steve Hutchesson on December 31, 2009, 06:56:04 AM
Paul,

I can give you the code to do this if you are interested, two RC dialogs and the dialog functions as basic code. This is a bit overkill as its for a rich text editor but it will certainly find and replace words if thats what you are after.

Yeah, thanks, I would apprecite it. Just got back online, school has started. In the meantime I wrote a dialog that searces forward, but you could say it is not feature-rich. I am using richtext so I can show results to the user in color, underlined, or whatever. Would you post a download on this topic?
Paul Breen