| 657 | static const unsigned int CONTEXT_PASTE = 2002; |
| 658 | |
| 659 | void OnCreate(HWND wnd) |
| 660 | { |
| 661 | SetWindowLongPtr(wnd, 0, (WND_PTR_TYPE)(intptr_t)new TextareaData); |
| 662 | |
| 663 | TextareaData *data = GetData(wnd); |
| 664 | memset(data, 0, sizeof(TextareaData)); |
| 665 | |
| 666 | // Create data that is shared between all instances |
| 667 | CreateShared(wnd); |
| 668 | |
| 669 | // Init linear text buffer |
| 670 | data->areaTextSize = 16 * 1024; |
| 671 | data->areaText = new char[data->areaTextSize]; |
| 672 | data->areaTextEx = new char[data->areaTextSize]; |
| 673 | memset(data->areaText, 0, data->areaTextSize); |
| 674 | memset(data->areaTextEx, 0, data->areaTextSize); |
| 675 | |
| 676 | // Create first line of text |
| 677 | data->currLine = data->firstLine = InsertLineAfter(NULL); |
| 678 | data->currLine->data[0].style = 0; |
| 679 | |
| 680 | data->lineCount = 1; |
| 681 | |
| 682 | data->history = new HistoryManager(data); |
| 683 | |
| 684 | data->areaWnd = wnd; |
| 685 | |
| 686 | static int timerID = 1; |
| 687 | SetTimer(wnd, timerID++, 62, AreaCursorUpdate); |
| 688 | |
| 689 | // Create tooltip |
| 690 | data->toolTip = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL, WS_POPUP | TTS_ALWAYSTIP | TTS_NOPREFIX, |
| 691 | CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, wnd, NULL, RichTextarea::instHandle, NULL); |
| 692 | |
| 693 | memset(&data->toolInfo, 0, sizeof(TOOLINFO)); |
| 694 | data->toolInfo.cbSize = sizeof(TOOLINFO); |
| 695 | data->toolInfo.uFlags = TTF_SUBCLASS; |
| 696 | data->toolInfo.hwnd = wnd; |
| 697 | data->toolInfo.hinst = RichTextarea::instHandle; |
| 698 | data->toolInfo.lpszText = "none"; |
| 699 | GetClientRect(wnd, &data->toolInfo.rect); |
| 700 | data->toolInfo.rect.right = data->toolInfo.rect.left + RichTextarea::toolSize; |
| 701 | |
| 702 | SendMessage(data->toolTip, TTM_ADDTOOL, 0, (LPARAM)&data->toolInfo); |
| 703 | } |
| 704 | |
| 705 | void OnDestroy(HWND wnd) |
| 706 | { |
no test coverage detected