I would like to created a carbon application and use UTF-8 encoded
strings for it's controls (if necessary I can also first convert to
UTF-16 and then send the string to Carbon.
Here is compilable application that I used to test this (which won't
show the UTF-8 Chars):
{
controldemo.pas
*****************************************************************************
* *
* This demonstration program is public domain, which means no copyright, *
* but also no warranty! *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
This application will create a window with two buttons in it
When you click the button 'Hello Button',
it will show or hide (alternating with each click) a text on the window
When you click the button 'Show Dialog', it will show a modal message dialog
Author: Felipe Monteiro de Carvalho
Contributors: Ingemar Ragnemalm
}
program controldemo;
{ Functions to easely generate carbon structures }
function GetQDRect(Left, Top, Width, Height: Integer): FPCMacOSAll.Rect;
begin
result.Left := Left;
result.Top := Top;
result.Right := Left + Width;
result.Bottom := Top + Height;
end;
{ Shows a message box }
procedure DoShowMessage(ATitle, AMsg: string);
var
outItemHit: SInt16;
err: OSErr;
begin
err := StandardAlert(kAlertNoteAlert, ATitle, AMsg, nil, outItemHit);
end;
{ Event handling routines }
{ Here we alternate the visibility status of the static text
with each button click }
function ButtonHelloPressed: OSStatus;
begin
result := 0;
showTextFlag := not showTextFlag;
if showTextFlag then HIViewSetVisible(staticText, True)
else HIViewSetVisible(staticText, False);
end;
function ButtonMessagePressed: OSStatus;
begin
result := 0;
DoShowMessage('Standard message dialog', 'This dialog is modal');
end;
{ Message handling function }
function WindowCommandHandler(nextHandler: EventHandlerCallRef;
theEvent: EventRef; userDataPtr: UnivPtr): OSStatus;
var
status: OSStatus;
ignoreresult: OSStatus;
aCommand: HICommand;
begin
status := eventNotHandledErr;
if aCommand.commandID = FOUR_CHAR_CODE(kButtonHello) then status :=
ButtonHelloPressed()
else if aCommand.commandID = FOUR_CHAR_CODE(kButtonMessage) then
status := ButtonMessagePressed();
result := status;
end;
{ Initialization and finalization routines }
procedure Initialize;
var
status, ignoreResult: OSStatus;
cmdEvent: EventTypeSpec;
eventHandler: EventHandlerUPP;
fontStyle: ControlFontStyleRec;
begin
status := CreateNewWindow(kDocumentWindowClass,
(kWindowStandardDocumentAttributes or kWindowStandardHandlerAttribute
or kWindowCompositingAttribute),
GetQDRect(100, 100, 350, 350), mainWindow);
if (status <> noErr) or (mainWindow = nil) then
begin
DoShowMessage('Error', 'CreateNewWindow failed');
Exit;
end;
{ Closes all windows, so they have time to save any user data (none in
this case) }
procedure Finalize;
begin
DoCloseWindow(mainWindow);
end;
{ Main program section }
begin
Initialize();
RunApplicationEventLoop();
Finalize();
end.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Carbon-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/carbon-dev/email@hidden
This email sent to email@hidden