Get Control from Window in Carbon

Posted on

This is an example adapted from Xcode Quick Tour Guide.


static OSStatus Convert(WindowRef window)
{
const ControlID kFahrenheit = { 'DEMO', 128 };
const ControlID kCelsius = { 'DEMO', 129 };

ControlRef fahrenheit, celsius;
CFStringRef fahrenheit_text, celsius_text;
double fahrenheit_value, celsius_value;
OSStatus err = noErr;

err = GetControlByID(window, &kFahrenheit, &fahrenheit);
require_noerr_quiet(err, CantGetControl);

err = GetControlByID(window, &kCelsius, &celsius);
require_noerr_quiet(err, CantGetControl);

err = GetControlData(fahrenheit, 0, kControlEditTextCFStringTag,
sizeof(CFStringRef), &fahrenheit_text, NULL);
require_noerr(err, CantGetControlData);

fahrenheit_value = CFStringGetDoubleValue(fahrenheit_text);
celsius_value = (fahrenheit_value - 32.0) * 5.0 / 9.0;

celsius_text = CFStringCreateWithFormat(
NULL, NULL, CFSTR("%g"), celsius_value);

err = SetControlData(celsius, 0, kControlEditTextCFStringTag,
sizeof(CFStringRef), &celsius_text);

CFRelease (celsius_text);
require_noerr (err, CantSetControlData);

DrawOneControl(celsius);

CantSetControlData:
CantGetControlData:
CantGetControl:
return err;
}

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s