|
外观 |
第九讲 程序外观 (1)注意:实例句柄和对像句柄不同.AfxGetInstanceHandle()\theApp.m_hInstance[因为theApp是在另外的原文件中的变量,所以要声明external theApp]\ AfxGetApp()->m_hInstance可得到实例句柄。想用窗口的全局过程函数 ::DEFWINDOWPROC (2)SDI中窗口的创建过程:现有对象,然后用CREATEWINDW()与资源相关,然后。。。 这里对象类(WNDCLASS)的style(wnd.style)一般就是WC_VREDRAW | HREDRAW而不是资源窗口style(大小,大小窗口)(cs.style); (3)重新注册对像可以在view/mainfram类中PRECREATWINDO中进行,但是VIEW是不能改变图标的,因,不属于它。最简便 用LPCTNSTR AfxRegisterWndClass()返回者即为新注册的类对象名称。 (*)Get\SetClassLong()(ONCREATE才行,即窗口创建完成)和Get\SetWindowLong()(PRECREATWINDOW即窗口创建之前)分别可对WNDCLASS 对像和窗口外观进行修改。 (**)MAKEINTRESOURSE宏可把INT形转换为资源函数对应的名称。如瘵ID转化为LPSTR类型. (**)定时器的应用:SetTimer(n,time,NULL)和WM_TIMER。 (1)工具栏CToolBar几个常用的函数。EnableDocking()用于靠与被靠间。对于窗口的显示:IsWindowVisable(); CFrameWnd::ShowContolBar()控件的显示或隐藏 pcmdui->setcheck()/enable(); (2)CStatusBar::GetPaneText()[indicator中的元素]\SetPaneInfo()[设置Indicator中相对应的PANE的宽度]\CommandToIndex()[把ID变成其PANE在indicator所占的索引]; (3)CTime类.GetCurrentTime()\CString CTime::Format("%h:%s:%m") (4)CStatusBar类。SetPaneInfo()\SetPaneText()\GetItemRect(); 状态栏上的窗口(PANE)就相当于一个子窗口。 (5)对于自定义消息:#define UM_MESSAGE WM_USER+n afx_msg 类型 OnMessage(参数); ON_MESSAGE(UM_MESSAGE,OnMessage) void 返回值类型 类::OnMessage(参数){...) (5)特别地对于CMAINFRAM::SetMessageText(str)对状态栏的在indicator中的0索引窗格设置文本,CMAINFRAME::GetMessageBar()返回状态栏的地址。 (*)可能用得着的一个函数CWND *CWND::GetDescendentWindow(ID)用于获得窗口子控件或子窗口的指针。 | |
|
|
|
|