先日も関連のスレッドを立てました。これで解決と喜んでいましたが、また、行き詰まってしま
っています。お世話になります。
左クリックすると、リッチエディタコントロールを作成します。
それと同時に、直前に作成されたリッチエディタコントロールの自動拡張通知メッセージ
EN_RESIZEREQUESTを受け取り、そのコントロールをリサイズしたいと思っています。
1.先ず、イベントマスクENM_RESIZEREQUESTをコンパイラが認識しませんでした。
それで、下記のように定義しました。
2.OnRichSize関数には入るのですが、要求サイズ((CRect) prq->rcが全然変更されていま
せん。
どこが悪いのか、全くわからず、ほとほと困っています。
何卒よろしくお願いいたします。
環境 VC6++ MFC Win98Se
#define ENM_RESIZEREQUEST 0x00040000
ON_NOTIFY_RANGE(EN_REQUESTRESIZE, 0, 9, OnRichSize)
public:
int num = 0;
CRichEditCtrl m_rich[10];
void CMyView::OnRichSize(UINT id, NMHDR *pNotifyStruct, LRESULT *result)
{
REQRESIZE *prq;
CRect rect;
prq = (REQRESIZE *)pNotifyStruct;
rect = (CRect) prq->rc;
m_rich[id].SetWindowPos(&wndTop, rect.left, rect.top, rect.right -
rect.left, rect.bottom - rect.top, SWP_SHOWWINDOW);
}
void CMyView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォル
トの処理を呼び出してください
CClientDC dc(this);
CRect rect(0, 0, 0, 0);
long dwEvent;
if(num > 0){
m_rich[num-1].RequestResize();
}
// m_rich[num].Create(ES_AUTOVSCROLL | ES_MULTILINE | ES_WANTRETURN |
WS_CHILD | WS_VISIBLE , rect, this,num );
m_rich[num].SetWindowPos(&wndTop, point.x, point.y, 80, 20,
SWP_SHOWWINDOW);
dwEvent = m_rich[num].GetEventMask();
dwEvent |= ENM_RESIZEREQUEST;
m_rich[num].SetEventMask(dwEvent);
num++;
CView::OnLButtonDown(nFlags, point);
}
試してなくてすみませんが、
1) 検索してみたところ、こんなログが。どうでしょう。
http://search.acty-net.ne.jp/mfc_search/archive/2000-1/msg02359.html
Banさん、早速ありがとうございます。
ENM_RESIZEREQUEST → ENM_REQUESTRESIZE にしたら、認識しました。
オンラインヘルプが間違っているようです。
ただ、以前、自動変更をしません。