DialogWindows 使用技巧文档格式.docx

上传人:b****5 文档编号:15853914 上传时间:2022-11-16 格式:DOCX 页数:24 大小:24.14KB
下载 相关 举报
DialogWindows 使用技巧文档格式.docx_第1页
第1页 / 共24页
DialogWindows 使用技巧文档格式.docx_第2页
第2页 / 共24页
DialogWindows 使用技巧文档格式.docx_第3页
第3页 / 共24页
DialogWindows 使用技巧文档格式.docx_第4页
第4页 / 共24页
DialogWindows 使用技巧文档格式.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

DialogWindows 使用技巧文档格式.docx

《DialogWindows 使用技巧文档格式.docx》由会员分享,可在线阅读,更多相关《DialogWindows 使用技巧文档格式.docx(24页珍藏版)》请在冰豆网上搜索。

DialogWindows 使用技巧文档格式.docx

m_hWnd,GWL_STYLE)|

WS_MINIMIZEBOX|WS_MAXIMIZEBOX);

UpdateWindow();

4.使能对话框右上角关闭按钮

在OnInitDialog中

方法一:

CMenu*menu=GetSystemMenu(FALSE);

menu->

ModifyMenu(SC_CLOSE,MF_BYCOMMAND|MF_GRAYED);

方法二:

EnableMenuItem(SC_CLOSE,MF_BYCOMMAND|MF_GRAYED);

5.当对话框一部分在屏幕外时,显示全部对话框

SendMessage(DM_REPOSITION);

6.改变鼠标外形

添加WM_SETCURSOR消息映射函数

BOOLCTest6Dlg:

:

OnSetCursor(CWnd*pWnd,UINTnHitTest,UINTmessage)

{

SetCursor(AfxGetApp()->

LoadStandardCursor(IDC_HELP));

return0;

}

7.改变对话框背景色和文本颜色

在CTest6App的InitInstance中添加

SetDialogBkColor(RGB(255,0,0),RGB(0,255,0));

8.改变对话框caption上的图标

导入自己的图标资源到工程中,把原来ID为IDR_MAINFRAME的资源删除,把新的图标的ID命名为IDR_MAINFRAME

9.在主对话框显示前,显示一个login对话框

BOOLCTest6App:

InitInstance()

//...

intnResponse;

CLoginDlgloginDlg;

nResponse=loginDlg.DoModal();

if(nResponse==IDOK)

if(nResponse==IDCANCEL)

returnFALSE;

CTest6Dlgdlg;

m_pMainWnd=&

dlg;

intnResponse=dlg.DoModal();

if(nResponse==IDOK)

elseif(nResponse==IDCANCEL)

然后重载CLoginDlg对话框的哦OnOK(),在其中判断条件

voidCLoginDlg:

OnOK()

{

if(条件满足)

CDialog:

OnOK();

else

AfxMessageBox(_T("

invalidpassword!

"

));

}

10.在对话框中添加工具栏

添加以下代码到OnInitDialog中

if(!

m_wndToolBar.Create(this)||!

m_wndToolBar.LoadToolBar(IDR_TOOLBAR1))

TRACE0("

FailedtoCreateDialogToolbar\n"

);

EndDialog(IDCANCEL);

CRectrcClientOld;

//久客户区RECT

CRectrcClientNew;

//加入TOOLBAR后的CLIENTRECT

GetClientRect(rcClientOld);

//

//Calledtorepositionandresizecontrolbarsintheclientareaofawindow

//ThereposQueryFLAGdoesnotreallytrawtheToolbar.Itonlydoesthecalculations.

//AndputsthenewClientRectvaluesinrcClientNewsowecandotherestoftheMath.

//重新计算RECT大小

RepositionBars(AFX_IDW_CONTROLBAR_FIRST,

AFX_IDW_CONTROLBAR_LAST,

0,

reposQuery,

rcClientNew);

//AlloftheChildWindows(Controls)nowneedtobemovedsotheTollbardoesnotcoverthemup.

//所有的子窗口将被移动,以免被TOOLBAR覆盖

//OffesttomoveallchildcontrolsafteraddingTollbar

//计算移动的距离

CPointptOffset(rcClientNew.left-rcClientOld.left,

rcClientNew.top-rcClientOld.top);

CRectrcChild;

CWnd*pwndChild=GetWindow(GW_CHILD);

//得到子窗口

while(pwndChild)//处理所有子窗口

//移动所有子窗口

pwndChild->

GetWindowRect(rcChild);

ScreenToClient(rcChild);

rcChild.OffsetRect(ptOffset);

MoveWindow(rcChild,FALSE);

pwndChild=pwndChild->

GetNextWindow();

CRectrcWindow;

GetWindowRect(rcWindow);

//得到对话框RECT

rcWindow.right+=rcClientOld.Width()-rcClientNew.Width();

//修改对话框尺寸

rcWindow.bottom+=rcClientOld.Height()-rcClientNew.Height();

MoveWindow(rcWindow,FALSE);

//RedrawWindow

RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

11.响应对话框的最大化、最小化、关闭、恢复事件

添加WM_SYSCOMMAND消息映射函数

voidCTest6Dlg:

OnSysCommand(UINTnID,LPARAMlParam)

if((nID&

0xFFF0)==IDM_ABOUTBOX)

CAboutDlgdlgAbout;

dlgAbout.DoModal();

else

if(nID==SC_MAXIMIZE)

最大化"

elseif(nID==SC_MINIMIZE)

最小化"

elseif(nID==SC_CLOSE)

关闭"

OnSysCommand(nID,lParam);

添加WM_SIZE消息映射函数

OnSize(UINTnType,intcx,intcy)

OnSize(nType,cx,cy);

if(nType==SIZE_MAXIMIZED)

elseif(nType==SIZE_MINIMIZED)

}

elseif(nType==SIZE_RESTORED)

恢复"

------------------------------------------------------------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1