Skip to content

Commit 8e01440

Browse files
authored
Merge 4586ca1 into d0757ef
2 parents d0757ef + 4586ca1 commit 8e01440

File tree

7 files changed

+224
-3
lines changed

7 files changed

+224
-3
lines changed

sakura_core/dlg/CDialog.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
#include "StdAfx.h"
2323
#include <algorithm>
2424
#include <memory>
25+
#include <WinUser.h>
26+
2527
#include "dlg/CDialog.h"
2628
#include "CEditApp.h"
2729
#include "env/CShareData.h"
@@ -358,6 +360,11 @@ BOOL CDialog::OnSize( WPARAM wParam, LPARAM lParam )
358360
return FALSE;
359361
}
360362

363+
BOOL CDialog::OnSizing(WPARAM wParam, LPARAM lParam)
364+
{
365+
return FALSE;
366+
}
367+
361368
BOOL CDialog::OnMove( WPARAM wParam, LPARAM lParam )
362369
{
363370
/* ダイアログの位置の記憶 */
@@ -376,6 +383,11 @@ BOOL CDialog::OnMove( WPARAM wParam, LPARAM lParam )
376383
return TRUE;
377384
}
378385

386+
int CDialog::OnNcHitTest(WPARAM wParam, LPARAM lParam)
387+
{
388+
return ::DefWindowProc(m_hWnd, WM_NCHITTEST, wParam, lParam);
389+
}
390+
379391
void CDialog::CreateSizeBox( void )
380392
{
381393
/* サイズボックス */
@@ -408,6 +420,7 @@ INT_PTR CDialog::DispatchEvent( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l
408420
case WM_SIZE:
409421
m_hWnd = hwndDlg;
410422
return OnSize( wParam, lParam );
423+
case WM_SIZING: return OnSizing( wParam, lParam );
411424
case WM_MOVE:
412425
m_hWnd = hwndDlg;
413426
return OnMove( wParam, lParam );
@@ -420,6 +433,10 @@ INT_PTR CDialog::DispatchEvent( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l
420433
case WM_CHARTOITEM: return OnCharToItem( wParam, lParam );
421434
case WM_HELP: return OnPopupHelp( wParam, lParam ); //@@@ 2002.01.18 add
422435
case WM_CONTEXTMENU:return OnContextMenu( wParam, lParam ); //@@@ 2002.01.18 add
436+
case WM_NCHITTEST:
437+
m_hWnd = hwndDlg;
438+
SetWindowLongPtr(m_hWnd, DWLP_MSGRESULT, OnNcHitTest(wParam, lParam));
439+
return TRUE;
423440
}
424441
return FALSE;
425442
}

sakura_core/dlg/CDialog.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,10 @@ class CDialog{
9090
virtual BOOL OnDestroy( void );
9191
virtual BOOL OnNotify(NMHDR* pNMHDR){return FALSE;}
9292
BOOL OnSize();
93-
virtual BOOL OnSize( WPARAM wParam, LPARAM lParam );
93+
virtual BOOL OnSize(WPARAM wParam, LPARAM lParam);
94+
virtual BOOL OnSizing( WPARAM wParam, LPARAM lParam );
9495
virtual BOOL OnMove( WPARAM wParam, LPARAM lParam );
96+
virtual int OnNcHitTest(WPARAM wParam, LPARAM lParam);
9597
virtual BOOL OnDrawItem( WPARAM wParam, LPARAM lParam ){return TRUE;}
9698
virtual BOOL OnTimer( WPARAM wParam ){return TRUE;}
9799
virtual BOOL OnKeyDown( WPARAM wParam, LPARAM lParam ){return TRUE;}

sakura_core/dlg/CDlgFind.cpp

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,15 @@ const DWORD p_helpids[] = { //11800
4949
0, 0
5050
}; //@@@ 2002.01.07 add end MIK
5151

52+
static const SAnchorList anchorList[] = {
53+
IDC_BUTTON_SEARCHPREV, ANCHOR_RIGHT,
54+
IDC_BUTTON_SEARCHNEXT, ANCHOR_RIGHT,
55+
IDC_BUTTON_SETMARK, ANCHOR_RIGHT,
56+
IDCANCEL, ANCHOR_RIGHT,
57+
IDC_BUTTON_HELP, ANCHOR_RIGHT,
58+
IDC_COMBO_TEXT, ANCHOR_LEFT_RIGHT,
59+
};
60+
5261
CDlgFind::CDlgFind()
5362
{
5463
m_sSearchOption.Reset();
@@ -101,6 +110,21 @@ BOOL CDlgFind::OnInitDialog( HWND hwnd, WPARAM wParam, LPARAM lParam )
101110
HFONT hFontOld = (HFONT)::SendMessageAny( GetItemHwnd( IDC_COMBO_TEXT ), WM_GETFONT, 0, 0 );
102111
HFONT hFont = SetMainFont( GetItemHwnd( IDC_COMBO_TEXT ) );
103112
m_cFontText.SetFont( hFontOld, hFont, GetItemHwnd( IDC_COMBO_TEXT ) );
113+
114+
RECT rc;
115+
::GetClientRect(hwnd, &rc);
116+
m_ptDefaultSizeClient.x = rc.right;
117+
m_ptDefaultSizeClient.y = rc.bottom;
118+
119+
::GetWindowRect(hwnd, &rc);
120+
m_ptDefaultSizeScreen.x = rc.right - rc.left;
121+
m_ptDefaultSizeScreen.y = rc.bottom - rc.top;
122+
123+
m_rcItems.resize(_countof(anchorList));
124+
for (int i = 0; i < _countof(anchorList); i++) {
125+
GetItemClientRect(anchorList[i].id, m_rcItems[i]);
126+
}
127+
104128
return bRet;
105129
}
106130

@@ -397,6 +421,75 @@ BOOL CDlgFind::OnActivate( WPARAM wParam, LPARAM lParam )
397421
return CDialog::OnActivate(wParam, lParam);
398422
}
399423

424+
BOOL CDlgFind::OnSize(WPARAM wParam, LPARAM lParam)
425+
{
426+
CDialog::OnSize(wParam, lParam);
427+
428+
POINT ptNew;
429+
ptNew.x = LOWORD(lParam);
430+
ptNew.y = HIWORD(lParam);
431+
432+
for (int i = 0; i < _countof(anchorList); i++) {
433+
ResizeItem(GetItemHwnd(anchorList[i].id), m_ptDefaultSizeClient, ptNew, m_rcItems[i], anchorList[i].anchor);
434+
}
435+
return TRUE;
436+
}
437+
438+
BOOL CDlgFind::OnSizing(WPARAM wParam, LPARAM lParam)
439+
{
440+
RECT& rc = *(RECT*)lParam;
441+
442+
switch (wParam) {
443+
case WMSZ_BOTTOMRIGHT:
444+
case WMSZ_RIGHT:
445+
case WMSZ_TOPRIGHT:
446+
if (rc.right - rc.left < m_ptDefaultSizeScreen.x) {
447+
rc.right = rc.left + m_ptDefaultSizeScreen.x;
448+
}
449+
break;
450+
case WMSZ_BOTTOMLEFT:
451+
case WMSZ_LEFT:
452+
case WMSZ_TOPLEFT:
453+
if (rc.right - rc.left < m_ptDefaultSizeScreen.x) {
454+
rc.left = rc.right - m_ptDefaultSizeScreen.x;
455+
}
456+
break;
457+
}
458+
459+
switch (wParam) {
460+
case WMSZ_BOTTOM:
461+
case WMSZ_BOTTOMLEFT:
462+
case WMSZ_BOTTOMRIGHT:
463+
rc.bottom = rc.top + m_ptDefaultSizeScreen.y;
464+
break;
465+
case WMSZ_TOP:
466+
case WMSZ_TOPLEFT:
467+
case WMSZ_TOPRIGHT:
468+
rc.top = rc.bottom - m_ptDefaultSizeScreen.y;
469+
break;
470+
}
471+
472+
return TRUE;
473+
}
474+
475+
int CDlgFind::OnNcHitTest(WPARAM wParam, LPARAM lParam)
476+
{
477+
int ret = CDialog::OnNcHitTest(wParam, lParam);
478+
switch (ret) {
479+
case HTTOPLEFT:
480+
case HTBOTTOMLEFT:
481+
return HTLEFT;
482+
case HTTOPRIGHT:
483+
case HTBOTTOMRIGHT:
484+
return HTRIGHT;
485+
case HTBOTTOM:
486+
case HTTOP:
487+
return HTBORDER;
488+
default:
489+
return ret;
490+
}
491+
}
492+
400493
//@@@ 2002.01.18 add start
401494
LPVOID CDlgFind::GetHelpIdTable(void)
402495
{

sakura_core/dlg/CDlgFind.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,15 @@ class CDlgFind final : public CDialog
5959
BOOL OnDestroy() override;
6060
BOOL OnBnClicked(int wID) override;
6161
BOOL OnActivate( WPARAM wParam, LPARAM lParam ) override; // 2009.11.29 ryoji
62+
BOOL OnSize( WPARAM wParam, LPARAM lParam ) override;
63+
BOOL OnSizing(WPARAM wParam, LPARAM lParam) override;
64+
int OnNcHitTest(WPARAM wParam, LPARAM lParam) override;
6265

6366
// BOOL OnKeyDown( WPARAM wParam, LPARAM lParam ) override;
6467
LPVOID GetHelpIdTable(void) override; //@@@ 2002.01.18 add
68+
69+
POINT m_ptDefaultSizeScreen;
70+
POINT m_ptDefaultSizeClient;
71+
std::vector<RECT> m_rcItems;
6572
};
6673
#endif /* SAKURA_CDLGFIND_AF260AA4_6075_4B87_9F03_2CEEDAD64094_H_ */

sakura_core/dlg/CDlgReplace.cpp

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,18 @@ const DWORD p_helpids[] = { //11900
5959
0, 0
6060
}; //@@@ 2002.01.07 add end MIK
6161

62+
static const SAnchorList anchorList[] = {
63+
IDC_BUTTON_SEARCHPREV, ANCHOR_RIGHT,
64+
IDC_BUTTON_SEARCHNEXT, ANCHOR_RIGHT,
65+
IDC_BUTTON_SETMARK, ANCHOR_RIGHT,
66+
IDC_BUTTON_REPALCE, ANCHOR_RIGHT,
67+
IDC_BUTTON_REPALCEALL, ANCHOR_RIGHT,
68+
IDCANCEL, ANCHOR_RIGHT,
69+
IDC_BUTTON_HELP, ANCHOR_RIGHT,
70+
IDC_COMBO_TEXT, ANCHOR_LEFT_RIGHT,
71+
IDC_COMBO_TEXT2, ANCHOR_LEFT_RIGHT,
72+
};
73+
6274
CDlgReplace::CDlgReplace()
6375
{
6476
m_sSearchOption.Reset(); // 検索オプション
@@ -363,6 +375,20 @@ BOOL CDlgReplace::OnInitDialog( HWND hwndDlg, WPARAM wParam, LPARAM lParam )
363375
hFont = SetMainFont( GetItemHwnd( IDC_COMBO_TEXT2 ) );
364376
m_cFontText2.SetFont( hFontOld, hFont, GetItemHwnd( IDC_COMBO_TEXT2 ) );
365377

378+
RECT rc;
379+
::GetClientRect(hwndDlg, &rc);
380+
m_ptDefaultSizeClient.x = rc.right;
381+
m_ptDefaultSizeClient.y = rc.bottom;
382+
383+
::GetWindowRect(hwndDlg, &rc);
384+
m_ptDefaultSizeScreen.x = rc.right - rc.left;
385+
m_ptDefaultSizeScreen.y = rc.bottom - rc.top;
386+
387+
m_rcItems.resize(_countof(anchorList));
388+
for (int i = 0; i < _countof(anchorList); i++) {
389+
GetItemClientRect(anchorList[i].id, m_rcItems[i]);
390+
}
391+
366392
return bRet;
367393
}
368394

@@ -607,6 +633,75 @@ BOOL CDlgReplace::OnActivate( WPARAM wParam, LPARAM lParam )
607633
return CDialog::OnActivate(wParam, lParam);
608634
}
609635

636+
BOOL CDlgReplace::OnSize(WPARAM wParam, LPARAM lParam)
637+
{
638+
CDialog::OnSize(wParam, lParam);
639+
640+
POINT ptNew;
641+
ptNew.x = LOWORD(lParam);
642+
ptNew.y = HIWORD(lParam);
643+
644+
for (int i = 0; i < _countof(anchorList); i++) {
645+
ResizeItem(GetItemHwnd(anchorList[i].id), m_ptDefaultSizeClient, ptNew, m_rcItems[i], anchorList[i].anchor);
646+
}
647+
return TRUE;
648+
}
649+
650+
BOOL CDlgReplace::OnSizing(WPARAM wParam, LPARAM lParam)
651+
{
652+
RECT& rc = *(RECT*)lParam;
653+
654+
switch (wParam) {
655+
case WMSZ_BOTTOMRIGHT:
656+
case WMSZ_RIGHT:
657+
case WMSZ_TOPRIGHT:
658+
if (rc.right - rc.left < m_ptDefaultSizeScreen.x) {
659+
rc.right = rc.left + m_ptDefaultSizeScreen.x;
660+
}
661+
break;
662+
case WMSZ_BOTTOMLEFT:
663+
case WMSZ_LEFT:
664+
case WMSZ_TOPLEFT:
665+
if (rc.right - rc.left < m_ptDefaultSizeScreen.x) {
666+
rc.left = rc.right - m_ptDefaultSizeScreen.x;
667+
}
668+
break;
669+
}
670+
671+
switch (wParam) {
672+
case WMSZ_BOTTOM:
673+
case WMSZ_BOTTOMLEFT:
674+
case WMSZ_BOTTOMRIGHT:
675+
rc.bottom = rc.top + m_ptDefaultSizeScreen.y;
676+
break;
677+
case WMSZ_TOP:
678+
case WMSZ_TOPLEFT:
679+
case WMSZ_TOPRIGHT:
680+
rc.top = rc.bottom - m_ptDefaultSizeScreen.y;
681+
break;
682+
}
683+
684+
return TRUE;
685+
}
686+
687+
int CDlgReplace::OnNcHitTest(WPARAM wParam, LPARAM lParam)
688+
{
689+
int ret = CDialog::OnNcHitTest(wParam, lParam);
690+
switch (ret) {
691+
case HTTOPLEFT:
692+
case HTBOTTOMLEFT:
693+
return HTLEFT;
694+
case HTTOPRIGHT:
695+
case HTBOTTOMRIGHT:
696+
return HTRIGHT;
697+
case HTBOTTOM:
698+
case HTTOP:
699+
return HTBORDER;
700+
default:
701+
return ret;
702+
}
703+
}
704+
610705
//@@@ 2002.01.18 add start
611706
LPVOID CDlgReplace::GetHelpIdTable(void)
612707
{

sakura_core/dlg/CDlgReplace.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,17 @@ class CDlgReplace final : public CDialog
7373
BOOL OnDestroy() override;
7474
BOOL OnBnClicked(int wID) override;
7575
BOOL OnActivate( WPARAM wParam, LPARAM lParam ) override; // 2009.11.29 ryoji
76+
BOOL OnSize(WPARAM wParam, LPARAM lParam) override;
77+
BOOL OnSizing(WPARAM wParam, LPARAM lParam) override;
78+
int OnNcHitTest(WPARAM wParam, LPARAM lParam) override;
7679
LPVOID GetHelpIdTable(void) override; //@@@ 2002.01.18 add
7780

7881
void SetData( void ) override; /* ダイアログデータの設定 */
7982
void SetCombosList( void ); /* 検索文字列/置換後文字列リストの設定 */
8083
int GetData( void ) override; /* ダイアログデータの取得 */
84+
85+
POINT m_ptDefaultSizeScreen;
86+
POINT m_ptDefaultSizeClient;
87+
std::vector<RECT> m_rcItems;
8188
};
8289
#endif /* SAKURA_CDLGREPLACE_37D62C07_5DAB_4CAC_A8B2_83C75329F8B7_H_ */

sakura_core/sakura_rc.rc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ END
6262
//
6363

6464
IDD_FIND DIALOGEX 30, 0, 284, 93
65-
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
65+
STYLE DS_SETFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
6666
EXSTYLE WS_EX_CONTEXTHELP
6767
CAPTION "検索"
6868
FONT 9, "MS Pゴシック", 0, 0, 0x1
@@ -240,7 +240,7 @@ BEGIN
240240
END
241241

242242
IDD_REPLACE DIALOGEX 30, 0, 298, 149
243-
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
243+
STYLE DS_SETFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
244244
EXSTYLE WS_EX_CONTEXTHELP
245245
CAPTION "置換"
246246
FONT 9, "MS Pゴシック", 0, 0, 0x1

0 commit comments

Comments
 (0)