Mac OS X Programming讀書筆記5 - Controls
Chapter 5 Controls
1 Command Signatures and Control IDs
1. 可以將Command和Control聯絡起來,但是當你收到事件的時候,你並不知道當時是哪個Control被按下了。事實上,你也不需要關心,因為Command本來被設計成代表命令,至於是點選Button還是選擇選單都沒有關係
2. 當你需要知道Control究竟發生了什麼事情的時候,你需要給Control分配一個Control ID,包括:
a. Signature:一個4個Char的標記,一般來說應該是程式的Creator Code,也就是Application本身的Signature。大部分情況下,單一程式的所有Control ID的Signature都是一樣的
b. ID:一個整數,真正的獨立在此程式中標記該Control的ID
2 Buttons
1. Bevel Button
2. ImageWell
3 Radio Buttons
系統負責維護Radio Button的狀態,不需要自己程式設計處理。
1: ControlHandle numBeepsRadioButtonGroup; 2: ControlID numBeepsControlID = { kControlSignature, kRadioGroupControlID };
3: GetControlByID( window, &numBeepsControlID, &numBeepsRadioButtonGroup );
SInt32 numBeepsValue; 4: numBeepsValue = GetControl32BitValue( numBeepsRadioButtonGroup ); |
1. 宣告一個Control的Handle
2. 宣告Control的Control ID,也就是這個Radio Button Group的ID
3. 通過Control ID獲得Control的Handle
4. 通過Handle獲得Control的32-bit整數值,表示哪一個Radio Button被按下了
4 Checkboxes
和上面的非常類似,GetControl32BitValue返回0說明沒有Check,1則為Checked
5 Text Input Fields
應該使用GetcontrolData來獲得Text Input Fields所對應的字串:
OSErr GetControlData( ControlRef inControl, ControlPartCode inPart, ResType inTagName, Size inBufferSize, void * inBuffer, Size * outActualSize ); |
1. ControlRef inControl:ControlRef也就是ControlHandle,所以直接傳遞用GetControlByID的返回值即可
2. ControlPartCode inPart:指定訪問Control的哪一部分,部分Control由多個Control組成,由不同的常量代表不同的子控制元件。如果沒有子控制元件,可以傳遞kControlEntireControl代表整個控制元件本身
3. ResType inTagName:資料的型別,對於Text Input Field應該傳遞kControlEditTextCFStringTag
4. Size inBufferSize:緩衝區大小
5. Void *inBuffer:緩衝區本身
6. Size *outActualSize:實際大小
舉例如下:
CFStringRef theString;
GetControlData( stringInTextEdit, kControlEntireControl, kControlEditTextCFStringTag, sizeof( CFStringRef ), &theString, NULL ); |
同樣的,可以用SetControlData來設定Text Input Field的字串:
OSErr SetControlData( ControlRef inControl, ControlPartCode inPart, ResType inTagName, Size inSize, void * inData); |
相關文章
- Mac OS X Programming讀書筆記4 - WindowsMac筆記Windows
- 【讀書筆記】The Swift Programming Language (Swift 4.0.3)筆記Swift
- 【Programming in Lua1-7章】讀書筆記筆記
- FPGA讀書筆記5FPGA筆記
- The art of multipropcessor programming 讀書筆記-硬體基礎2筆記
- Mac OS XMac
- 讀書筆記...筆記
- 讀書筆記筆記
- The art of multipropcessor programming 讀書筆記-3. 自旋鎖與爭用(2)筆記
- 《讀書與做人》讀書筆記筆記
- <轉>oracle效能調整讀書筆記(5)Oracle筆記
- 程式碼整潔之道--讀書筆記(5)筆記
- Cucumber讀書筆記筆記
- 散文讀書筆記筆記
- HTTP 讀書筆記HTTP筆記
- CoreJava讀書筆記-------Java筆記
- flask讀書筆記Flask筆記
- Vue讀書筆記Vue筆記
- MONGODB 讀書筆記MongoDB筆記
- Qt讀書筆記QT筆記
- Node讀書筆記筆記
- SAP讀書筆記筆記
- YII讀書筆記筆記
- iptables 讀書筆記筆記
- Makefile 讀書筆記筆記
- mysql讀書筆記MySql筆記
- 鎖讀書筆記筆記
- dataguard讀書筆記筆記
- 讀書筆記3筆記
- 讀書筆記2筆記
- postgres 讀書筆記筆記
- 讀書筆記5-資料儲存篇筆記
- 18-《ARKit by Tutorials》讀書筆記5:特殊物理效果筆記
- 【讀書筆記】XHTML與HTML5的差異筆記HTML
- 《Effective C++》第5章 實現-讀書筆記C++筆記
- Application=Code+Markup 讀書筆記 5-7APP筆記
- 《程式碼大全2》讀書筆記2(5-6)筆記
- MySQL 8.0 Reference Manual(讀書筆記94節--Replication(5))MySql筆記