From 66cb770a982a2502456d10d73838df2b7239fd89 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 4 Mar 2013 07:23:42 +0000 Subject: new subclassing functions applied to all plugins git-svn-id: http://svn.miranda-ng.org/main/trunk@3880 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/IcqOscarJ/src/changeinfo/editlist.cpp | 298 +++++++++++----------- protocols/IcqOscarJ/src/changeinfo/editstring.cpp | 74 +++--- protocols/IcqOscarJ/src/icq_xstatus.cpp | 12 +- 3 files changed, 182 insertions(+), 202 deletions(-) (limited to 'protocols/IcqOscarJ/src') diff --git a/protocols/IcqOscarJ/src/changeinfo/editlist.cpp b/protocols/IcqOscarJ/src/changeinfo/editlist.cpp index f2a1470fd3..acaa15d861 100644 --- a/protocols/IcqOscarJ/src/changeinfo/editlist.cpp +++ b/protocols/IcqOscarJ/src/changeinfo/editlist.cpp @@ -31,171 +31,167 @@ static ChangeInfoData *dataListEdit = NULL; static HWND hwndListEdit = NULL; static BOOL (WINAPI *MyAnimateWindow)(HWND,DWORD,DWORD); -static WNDPROC OldListEditProc; static LRESULT CALLBACK ListEditSubclassProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { - switch(msg) - { - case WM_LBUTTONUP: - CallWindowProc(OldListEditProc, hwnd, msg, wParam, lParam); - { - POINT pt; - - pt.x = (short)LOWORD(lParam); - pt.y = (short)HIWORD(lParam); - ClientToScreen(hwnd, &pt); - if (SendMessage(hwnd, WM_NCHITTEST, 0, MAKELPARAM(pt.x, pt.y)) == HTVSCROLL) break; - } - { - int i = SendMessage(hwnd, LB_GETCURSEL, 0, 0); - - if (dataListEdit) - dataListEdit->EndListEdit(i != LB_ERR); - } - return 0; - - case WM_CHAR: - if (wParam != '\r') break; - { - int i = SendMessage(hwnd, LB_GETCURSEL, 0, 0); - - if (dataListEdit) - dataListEdit->EndListEdit(i != LB_ERR); - } - return 0; - case WM_KILLFOCUS: - if (dataListEdit) - dataListEdit->EndListEdit(1); - return 0; - } - return CallWindowProc(OldListEditProc, hwnd, msg, wParam, lParam); + switch(msg) { + case WM_LBUTTONUP: + mir_callNextSubclass(hwnd, ListEditSubclassProc, msg, wParam, lParam); + { + POINT pt; + + pt.x = (short)LOWORD(lParam); + pt.y = (short)HIWORD(lParam); + ClientToScreen(hwnd, &pt); + if (SendMessage(hwnd, WM_NCHITTEST, 0, MAKELPARAM(pt.x, pt.y)) == HTVSCROLL) break; + } + { + int i = SendMessage(hwnd, LB_GETCURSEL, 0, 0); + + if (dataListEdit) + dataListEdit->EndListEdit(i != LB_ERR); + } + return 0; + + case WM_CHAR: + if (wParam != '\r') break; + { + int i = SendMessage(hwnd, LB_GETCURSEL, 0, 0); + + if (dataListEdit) + dataListEdit->EndListEdit(i != LB_ERR); + } + return 0; + case WM_KILLFOCUS: + if (dataListEdit) + dataListEdit->EndListEdit(1); + return 0; + } + return mir_callNextSubclass(hwnd, ListEditSubclassProc, msg, wParam, lParam); } - void ChangeInfoData::BeginListEdit(int iItem, RECT *rc, int iSetting, WORD wVKey) { - int j,n; - POINT pt; - int itemHeight; - char str[MAX_PATH]; - - if (dataListEdit) - dataListEdit->EndListEdit(0); - - pt.x=pt.y=0; - ClientToScreen(hwndList,&pt); - OffsetRect(rc,pt.x,pt.y); - InflateRect(rc,-2,-2); - rc->left-=2; - iEditItem = iItem; - ListView_RedrawItems(hwndList, iEditItem, iEditItem); - UpdateWindow(hwndList); - - dataListEdit = this; - hwndListEdit = CreateWindowEx(WS_EX_TOOLWINDOW|WS_EX_TOPMOST, _T("LISTBOX"), _T(""), WS_POPUP|WS_BORDER|WS_VSCROLL, rc->left, rc->bottom, rc->right - rc->left, 150, NULL, NULL, hInst, NULL); - SendMessage(hwndListEdit, WM_SETFONT, (WPARAM)hListFont, 0); - itemHeight = SendMessage(hwndListEdit, LB_GETITEMHEIGHT, 0, 0); - - FieldNamesItem *list = (FieldNamesItem*)setting[iSetting].pList; - - if (list == countryField) - { // some country codes were changed leaving old details uknown, convert it for the user - if (settingData[iSetting].value == 420) settingData[iSetting].value = 42; // conversion of obsolete codes (OMG!) - else if (settingData[iSetting].value == 421) settingData[iSetting].value = 4201; - else if (settingData[iSetting].value == 102) settingData[iSetting].value = 1201; - } - - n = ListBoxAddStringUtf(hwndListEdit, "Unspecified"); - for (j=0; ; j++) - if (!list[j].text) - { - SendMessage(hwndListEdit, LB_SETITEMDATA, n, j); - if ((settingData[iSetting].value == 0 && list[j].code == 0) - || (setting[iSetting].dbType != DBVT_ASCIIZ && settingData[iSetting].value == list[j].code)) - SendMessage(hwndListEdit, LB_SETCURSEL, n, 0); - break; - } - - for (j=0; list[j].text; j++) - { - n = ListBoxAddStringUtf(hwndListEdit, list[j].text); - SendMessage(hwndListEdit, LB_SETITEMDATA, n, j); - if ((setting[iSetting].dbType == DBVT_ASCIIZ && (!strcmpnull((char*)settingData[iSetting].value, list[j].text)) - || (setting[iSetting].dbType == DBVT_ASCIIZ && (!strcmpnull((char*)settingData[iSetting].value, ICQTranslateUtfStatic(list[j].text, str, MAX_PATH)))) - || ((char*)settingData[iSetting].value == NULL && list[j].code == 0)) - || (setting[iSetting].dbType != DBVT_ASCIIZ && settingData[iSetting].value == list[j].code)) - SendMessage(hwndListEdit, LB_SETCURSEL, n, 0); - } - SendMessage(hwndListEdit, LB_SETTOPINDEX, SendMessage(hwndListEdit, LB_GETCURSEL, 0, 0) - 3, 0); - int listCount = SendMessage(hwndListEdit, LB_GETCOUNT, 0, 0); - if (itemHeight * listCount < 150) - SetWindowPos(hwndListEdit, 0, 0, 0, rc->right - rc->left, itemHeight * listCount + GetSystemMetrics(SM_CYBORDER) * 2, SWP_NOZORDER|SWP_NOMOVE); - OldListEditProc = (WNDPROC)SetWindowLongPtr(hwndListEdit, GWLP_WNDPROC, (LONG_PTR)ListEditSubclassProc); - if (MyAnimateWindow = (BOOL (WINAPI*)(HWND,DWORD,DWORD))GetProcAddress(GetModuleHandleA("user32"), "AnimateWindow")) - { - BOOL enabled; - - SystemParametersInfo(SPI_GETCOMBOBOXANIMATION, 0, &enabled, FALSE); - if (enabled) MyAnimateWindow(hwndListEdit, 200, AW_SLIDE|AW_ACTIVATE|AW_VER_POSITIVE); - } - ShowWindow(hwndListEdit, SW_SHOW); - SetFocus(hwndListEdit); - if (wVKey) - PostMessage(hwndListEdit, WM_KEYDOWN, wVKey, 0); + int j,n; + POINT pt; + int itemHeight; + char str[MAX_PATH]; + + if (dataListEdit) + dataListEdit->EndListEdit(0); + + pt.x=pt.y=0; + ClientToScreen(hwndList,&pt); + OffsetRect(rc,pt.x,pt.y); + InflateRect(rc,-2,-2); + rc->left-=2; + iEditItem = iItem; + ListView_RedrawItems(hwndList, iEditItem, iEditItem); + UpdateWindow(hwndList); + + dataListEdit = this; + hwndListEdit = CreateWindowEx(WS_EX_TOOLWINDOW|WS_EX_TOPMOST, _T("LISTBOX"), _T(""), WS_POPUP|WS_BORDER|WS_VSCROLL, rc->left, rc->bottom, rc->right - rc->left, 150, NULL, NULL, hInst, NULL); + SendMessage(hwndListEdit, WM_SETFONT, (WPARAM)hListFont, 0); + itemHeight = SendMessage(hwndListEdit, LB_GETITEMHEIGHT, 0, 0); + + FieldNamesItem *list = (FieldNamesItem*)setting[iSetting].pList; + + if (list == countryField) + { // some country codes were changed leaving old details uknown, convert it for the user + if (settingData[iSetting].value == 420) settingData[iSetting].value = 42; // conversion of obsolete codes (OMG!) + else if (settingData[iSetting].value == 421) settingData[iSetting].value = 4201; + else if (settingData[iSetting].value == 102) settingData[iSetting].value = 1201; + } + + n = ListBoxAddStringUtf(hwndListEdit, "Unspecified"); + for (j=0; ; j++) + if (!list[j].text) + { + SendMessage(hwndListEdit, LB_SETITEMDATA, n, j); + if ((settingData[iSetting].value == 0 && list[j].code == 0) + || (setting[iSetting].dbType != DBVT_ASCIIZ && settingData[iSetting].value == list[j].code)) + SendMessage(hwndListEdit, LB_SETCURSEL, n, 0); + break; + } + + for (j=0; list[j].text; j++) + { + n = ListBoxAddStringUtf(hwndListEdit, list[j].text); + SendMessage(hwndListEdit, LB_SETITEMDATA, n, j); + if ((setting[iSetting].dbType == DBVT_ASCIIZ && (!strcmpnull((char*)settingData[iSetting].value, list[j].text)) + || (setting[iSetting].dbType == DBVT_ASCIIZ && (!strcmpnull((char*)settingData[iSetting].value, ICQTranslateUtfStatic(list[j].text, str, MAX_PATH)))) + || ((char*)settingData[iSetting].value == NULL && list[j].code == 0)) + || (setting[iSetting].dbType != DBVT_ASCIIZ && settingData[iSetting].value == list[j].code)) + SendMessage(hwndListEdit, LB_SETCURSEL, n, 0); + } + SendMessage(hwndListEdit, LB_SETTOPINDEX, SendMessage(hwndListEdit, LB_GETCURSEL, 0, 0) - 3, 0); + int listCount = SendMessage(hwndListEdit, LB_GETCOUNT, 0, 0); + if (itemHeight * listCount < 150) + SetWindowPos(hwndListEdit, 0, 0, 0, rc->right - rc->left, itemHeight * listCount + GetSystemMetrics(SM_CYBORDER) * 2, SWP_NOZORDER|SWP_NOMOVE); + mir_subclassWindow(hwndListEdit, ListEditSubclassProc); + if (MyAnimateWindow = (BOOL (WINAPI*)(HWND,DWORD,DWORD))GetProcAddress(GetModuleHandleA("user32"), "AnimateWindow")) + { + BOOL enabled; + + SystemParametersInfo(SPI_GETCOMBOBOXANIMATION, 0, &enabled, FALSE); + if (enabled) MyAnimateWindow(hwndListEdit, 200, AW_SLIDE|AW_ACTIVATE|AW_VER_POSITIVE); + } + ShowWindow(hwndListEdit, SW_SHOW); + SetFocus(hwndListEdit); + if (wVKey) + PostMessage(hwndListEdit, WM_KEYDOWN, wVKey, 0); } - void ChangeInfoData::EndListEdit(int save) { - if (hwndListEdit == NULL || iEditItem == -1 || this != dataListEdit) return; - if (save) - { - int iItem = SendMessage(hwndListEdit, LB_GETCURSEL, 0, 0); - int i = SendMessage(hwndListEdit, LB_GETITEMDATA, iItem, 0); - - if (setting[iEditItem].dbType == DBVT_ASCIIZ) - { - char *szNewValue = (((FieldNamesItem*)setting[iEditItem].pList)[i].text); - if (((FieldNamesItem*)setting[iEditItem].pList)[i].code || setting[iEditItem].displayType & LIF_ZEROISVALID) - { - settingData[iEditItem].changed = strcmpnull(szNewValue, (char*)settingData[iEditItem].value); - SAFE_FREE((void**)&settingData[iEditItem].value); - settingData[iEditItem].value = (LPARAM)null_strdup(szNewValue); - } - else - { - settingData[iEditItem].changed = (char*)settingData[iEditItem].value!=NULL; - SAFE_FREE((void**)&settingData[iEditItem].value); - } - } - else - { - settingData[iEditItem].changed = ((FieldNamesItem*)setting[iEditItem].pList)[i].code != settingData[iEditItem].value; - settingData[iEditItem].value = ((FieldNamesItem*)setting[iEditItem].pList)[i].code; - } - if (settingData[iEditItem].changed) - { - char buf[MAX_PATH]; - TCHAR tbuf[MAX_PATH]; - - if (utf8_to_tchar_static(ICQTranslateUtfStatic(((FieldNamesItem*)setting[iEditItem].pList)[i].text, buf, SIZEOF(buf)), tbuf, SIZEOF(buf))) - ListView_SetItemText(hwndList, iEditItem, 1, tbuf); - - EnableDlgItem(GetParent(hwndList), IDC_SAVE, TRUE); - - } - } - ListView_RedrawItems(hwndList, iEditItem, iEditItem); - iEditItem = -1; - dataListEdit = NULL; - DestroyWindow(hwndListEdit); - hwndListEdit = NULL; + if (hwndListEdit == NULL || iEditItem == -1 || this != dataListEdit) return; + if (save) + { + int iItem = SendMessage(hwndListEdit, LB_GETCURSEL, 0, 0); + int i = SendMessage(hwndListEdit, LB_GETITEMDATA, iItem, 0); + + if (setting[iEditItem].dbType == DBVT_ASCIIZ) + { + char *szNewValue = (((FieldNamesItem*)setting[iEditItem].pList)[i].text); + if (((FieldNamesItem*)setting[iEditItem].pList)[i].code || setting[iEditItem].displayType & LIF_ZEROISVALID) + { + settingData[iEditItem].changed = strcmpnull(szNewValue, (char*)settingData[iEditItem].value); + SAFE_FREE((void**)&settingData[iEditItem].value); + settingData[iEditItem].value = (LPARAM)null_strdup(szNewValue); + } + else + { + settingData[iEditItem].changed = (char*)settingData[iEditItem].value!=NULL; + SAFE_FREE((void**)&settingData[iEditItem].value); + } + } + else + { + settingData[iEditItem].changed = ((FieldNamesItem*)setting[iEditItem].pList)[i].code != settingData[iEditItem].value; + settingData[iEditItem].value = ((FieldNamesItem*)setting[iEditItem].pList)[i].code; + } + if (settingData[iEditItem].changed) + { + char buf[MAX_PATH]; + TCHAR tbuf[MAX_PATH]; + + if (utf8_to_tchar_static(ICQTranslateUtfStatic(((FieldNamesItem*)setting[iEditItem].pList)[i].text, buf, SIZEOF(buf)), tbuf, SIZEOF(buf))) + ListView_SetItemText(hwndList, iEditItem, 1, tbuf); + + EnableDlgItem(GetParent(hwndList), IDC_SAVE, TRUE); + + } + } + ListView_RedrawItems(hwndList, iEditItem, iEditItem); + iEditItem = -1; + dataListEdit = NULL; + DestroyWindow(hwndListEdit); + hwndListEdit = NULL; } int IsListEditWindow(HWND hwnd) { - if (hwnd == hwndListEdit) return 1; - return 0; + if (hwnd == hwndListEdit) return 1; + return 0; } diff --git a/protocols/IcqOscarJ/src/changeinfo/editstring.cpp b/protocols/IcqOscarJ/src/changeinfo/editstring.cpp index 288351e8d3..9987ce5223 100644 --- a/protocols/IcqOscarJ/src/changeinfo/editstring.cpp +++ b/protocols/IcqOscarJ/src/changeinfo/editstring.cpp @@ -29,7 +29,6 @@ static ChangeInfoData *dataStringEdit = NULL; -static WNDPROC OldStringEditProc, OldExpandButtonProc; static HWND hwndEdit = NULL, hwndExpandButton = NULL, hwndUpDown = NULL; static const char escapes[]={'a','\a', @@ -143,42 +142,38 @@ char *BinaryToEscapes(char *str) static LRESULT CALLBACK StringEditSubclassProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { - switch(msg) - { + switch(msg) { case WM_KEYDOWN: if (wParam==VK_ESCAPE) { - if (dataStringEdit) - dataStringEdit->EndStringEdit(0); + if (dataStringEdit) + dataStringEdit->EndStringEdit(0); return 0; } if (wParam==VK_RETURN) { if (GetWindowLongPtr(hwnd, GWL_STYLE) & ES_MULTILINE && !(GetKeyState(VK_CONTROL) & 0x8000)) break; - if (dataStringEdit) - dataStringEdit->EndStringEdit(1); + if (dataStringEdit) + dataStringEdit->EndStringEdit(1); return 0; } break; case WM_GETDLGCODE: - return DLGC_WANTALLKEYS|CallWindowProc(OldStringEditProc, hwnd, msg, wParam, lParam); + return DLGC_WANTALLKEYS | mir_callNextSubclass(hwnd, StringEditSubclassProc, msg, wParam, lParam); case WM_KILLFOCUS: if ((HWND)wParam == hwndExpandButton) break; - if (dataStringEdit) - dataStringEdit->EndStringEdit(1); + if (dataStringEdit) + dataStringEdit->EndStringEdit(1); return 0; } - return CallWindowProc(OldStringEditProc, hwnd, msg, wParam, lParam); + return mir_callNextSubclass(hwnd, StringEditSubclassProc, msg, wParam, lParam); } - - static LRESULT CALLBACK ExpandButtonSubclassProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { - switch(msg) - { + switch(msg) { case WM_LBUTTONUP: if(GetCapture()==hwnd) { @@ -197,7 +192,7 @@ static LRESULT CALLBACK ExpandButtonSubclassProc(HWND hwnd,UINT msg,WPARAM wPara EscapesToMultiline(text,&selStart,&selEnd); hwndEdit=CreateWindowExA(WS_EX_TOOLWINDOW,"EDIT","",WS_POPUP|WS_BORDER|WS_VISIBLE|ES_WANTRETURN|ES_AUTOVSCROLL|WS_VSCROLL|ES_MULTILINE,rcStart.left,rcStart.top,rcStart.right-rcStart.left,rcStart.bottom-rcStart.top,NULL,NULL,hInst,NULL); SetWindowTextUcs(hwndEdit, text); - OldStringEditProc=(WNDPROC)SetWindowLongPtr(hwndEdit,GWLP_WNDPROC,(LONG_PTR)StringEditSubclassProc); + mir_subclassWindow(hwndEdit, StringEditSubclassProc); SendMessage(hwndEdit,WM_SETFONT,(WPARAM)dataStringEdit->hListFont,0); SendMessage(hwndEdit,EM_SETSEL,selStart,selEnd); SetFocus(hwndEdit); @@ -228,10 +223,9 @@ static LRESULT CALLBACK ExpandButtonSubclassProc(HWND hwnd,UINT msg,WPARAM wPara } break; } - return CallWindowProc(OldExpandButtonProc,hwnd,msg,wParam,lParam); + return mir_callNextSubclass(hwnd, ExpandButtonSubclassProc, msg, wParam, lParam); } - void ChangeInfoData::BeginStringEdit(int iItem, RECT *rc, int i, WORD wVKey) { char *szValue; @@ -255,21 +249,21 @@ void ChangeInfoData::BeginStringEdit(int iItem, RECT *rc, int i, WORD wVKey) } else szValue = ""; - iEditItem = iItem; + iEditItem = iItem; if ((setting[i].displayType & LIM_TYPE)==LI_LONGSTRING) { rc->right-=rc->bottom-rc->top; hwndExpandButton=CreateWindowA("BUTTON","",WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON|BS_ICON,rc->right,rc->top,rc->bottom-rc->top,rc->bottom-rc->top,hwndList,NULL,hInst,NULL); SendMessage(hwndExpandButton,BM_SETIMAGE,IMAGE_ICON,(LPARAM)LoadImage(hInst,MAKEINTRESOURCE(IDI_EXPANDSTRINGEDIT),IMAGE_ICON,0,0,LR_SHARED)); - OldExpandButtonProc=(WNDPROC)SetWindowLongPtr(hwndExpandButton,GWLP_WNDPROC,(LONG_PTR)ExpandButtonSubclassProc); + mir_subclassWindow(hwndExpandButton, ExpandButtonSubclassProc); } - dataStringEdit = this; + dataStringEdit = this; hwndEdit = CreateWindow(_T("EDIT"),_T(""),WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL|((setting[i].displayType&LIM_TYPE)==LI_NUMBER?ES_NUMBER:0)|(setting[i].displayType&LIF_PASSWORD?ES_PASSWORD:0),rc->left,rc->top,rc->right-rc->left,rc->bottom-rc->top,hwndList,NULL,hInst,NULL); SetWindowTextUtf(hwndEdit, szValue); if (alloced) SAFE_FREE(&szValue); - OldStringEditProc=(WNDPROC)SetWindowLongPtr(hwndEdit,GWLP_WNDPROC,(LONG_PTR)StringEditSubclassProc); + mir_subclassWindow(hwndEdit, StringEditSubclassProc); SendMessage(hwndEdit,WM_SETFONT,(WPARAM)hListFont,0); if ((setting[i].displayType & LIM_TYPE) == LI_NUMBER) { @@ -289,12 +283,12 @@ void ChangeInfoData::BeginStringEdit(int iItem, RECT *rc, int i, WORD wVKey) PostMessage(hwndEdit,WM_KEYDOWN,wVKey,0); } - void ChangeInfoData::EndStringEdit(int save) { - if (hwndEdit == NULL || iEditItem == -1 || this != dataStringEdit) return; - if (save) - { + if (hwndEdit == NULL || iEditItem == -1 || this != dataStringEdit) + return; + + if (save) { char *text = (char*)SAFE_MALLOC(GetWindowTextLength(hwndEdit)+1); GetWindowTextA(hwndEdit,(char*)text,GetWindowTextLength(hwndEdit)+1); @@ -313,10 +307,8 @@ void ChangeInfoData::EndStringEdit(int save) settingData[iEditItem].value = newValue; SAFE_FREE(&text); } - else - { - if (!(setting[iEditItem].displayType & LIF_PASSWORD)) - { + else { + if (!(setting[iEditItem].displayType & LIF_PASSWORD)) { SAFE_FREE(&text); text = GetWindowTextUtf(hwndEdit); EscapesToBinary(text); @@ -327,27 +319,27 @@ void ChangeInfoData::EndStringEdit(int save) SAFE_FREE((void**)&settingData[iEditItem].value); if (strlennull(text)) settingData[iEditItem].value = (LPARAM)text; - else - { + else { settingData[iEditItem].value = 0; SAFE_FREE(&text); } settingData[iEditItem].changed = 1; } } - if (settingData[iEditItem].changed) - { - TCHAR tbuf[MAX_PATH]; - GetWindowText(hwndEdit, tbuf, SIZEOF(tbuf)); - ListView_SetItemText(hwndList, iEditItem, 1, tbuf); + if (settingData[iEditItem].changed) { + TCHAR tbuf[MAX_PATH]; + + GetWindowText(hwndEdit, tbuf, SIZEOF(tbuf)); + ListView_SetItemText(hwndList, iEditItem, 1, tbuf); - EnableDlgItem(hwndDlg, IDC_SAVE, TRUE); - } + EnableDlgItem(hwndDlg, IDC_SAVE, TRUE); + } } + ListView_RedrawItems(hwndList, iEditItem, iEditItem); iEditItem = -1; - dataStringEdit = NULL; + dataStringEdit = NULL; DestroyWindow(hwndEdit); hwndEdit = NULL; if (hwndExpandButton) DestroyWindow(hwndExpandButton); @@ -356,8 +348,6 @@ void ChangeInfoData::EndStringEdit(int save) hwndUpDown = NULL; } - - int IsStringEditWindow(HWND hwnd) { if (hwnd == hwndEdit) return 1; diff --git a/protocols/IcqOscarJ/src/icq_xstatus.cpp b/protocols/IcqOscarJ/src/icq_xstatus.cpp index c434321763..5dc8cbcda1 100644 --- a/protocols/IcqOscarJ/src/icq_xstatus.cpp +++ b/protocols/IcqOscarJ/src/icq_xstatus.cpp @@ -542,8 +542,6 @@ void CIcqProto::updateServerCustomStatus(int fullUpdate) SAFE_FREE(&szStatusNote); } -static WNDPROC OldMessageEditProc; - static LRESULT CALLBACK MessageEditSubclassProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch(msg) { @@ -575,7 +573,7 @@ static LRESULT CALLBACK MessageEditSubclassProc(HWND hwnd,UINT msg,WPARAM wParam } break; } - return CallWindowProc(OldMessageEditProc,hwnd,msg,wParam,lParam); + return mir_callNextSubclass(hwnd, MessageEditSubclassProc, msg, wParam, lParam); } struct SetXStatusData @@ -641,12 +639,12 @@ static INT_PTR CALLBACK SetXStatusDlgProc(HWND hwndDlg,UINT message,WPARAM wPara if (!init->bAction) { // set our xStatus dat->bXStatus = init->bXStatus; SendDlgItemMessage(hwndDlg, IDC_XMSG, EM_LIMITTEXT, 1024, 0); - OldMessageEditProc = (WNDPROC)SetWindowLongPtr(GetDlgItem(hwndDlg,IDC_XMSG),GWLP_WNDPROC,(LONG_PTR)MessageEditSubclassProc); + mir_subclassWindow( GetDlgItem(hwndDlg,IDC_XMSG), MessageEditSubclassProc); SetDlgItemTextUtf(hwndDlg, IDC_XMSG, init->szXStatusMsg); if (dat->ppro->m_bXStatusEnabled) { // custom status enabled, prepare title edit SendDlgItemMessage(hwndDlg, IDC_XTITLE, EM_LIMITTEXT, 256, 0); - OldMessageEditProc = (WNDPROC)SetWindowLongPtr(GetDlgItem(hwndDlg,IDC_XTITLE),GWLP_WNDPROC,(LONG_PTR)MessageEditSubclassProc); + mir_subclassWindow( GetDlgItem(hwndDlg,IDC_XTITLE), MessageEditSubclassProc); SetDlgItemTextUtf(hwndDlg, IDC_XTITLE, init->szXStatusName); } else { // only moods enabled, hide title, resize message edit control @@ -763,10 +761,6 @@ static INT_PTR CALLBACK SetXStatusDlgProc(HWND hwndDlg,UINT message,WPARAM wPara } } dat->ppro->updateServerCustomStatus(TRUE); - - SetWindowLongPtr(GetDlgItem(hwndDlg,IDC_XMSG),GWLP_WNDPROC,(LONG_PTR)OldMessageEditProc); - if (dat->ppro->m_bXStatusEnabled) - SetWindowLongPtr(GetDlgItem(hwndDlg,IDC_XTITLE),GWLP_WNDPROC,(LONG_PTR)OldMessageEditProc); } if (dat->hEvent) UnhookEvent(dat->hEvent); SAFE_FREE(&dat->okButtonFormat); -- cgit v1.2.3