`
jgsj
  • 浏览: 964671 次
文章分类
社区版块
存档分类
最新评论

我的vc++问题集1

 
阅读更多

1.如何创建提示窗口
1、子类化EDIT控件
class CMyEdit: Public CEdit

2、在此子类中定义一个
CToolTipCtrl m_tooltip;

3、重载函数
void CMyEdit::OnCreate();
void CMyEdit::OnMouseMove(UINT nFlags, CPoint point);
BOOL CMyEdit::PreTranslateMessage(MSG* pMsg);

4、OnCreate中添加初始化代码
int nFontSize = 40;
int nFontBold = 800;
m_tooltip.Create(this,TTS_ALWAYSTIP);

//m_tooltip.SetFont(&fontText);
//将CToolTipCtrl与相应的控件对应起来
m_tooltip.AddTool(this,TTS_ALWAYSTIP);
//设定文字的颜色
m_tooltip.SetTipTextColor(RGB(0,150,20));
//设定提示文字在控件上停留的时间
m_tooltip.SetDelayTime(150);

5、PreTranslateMessage函数中添加代码:
if(m_tooltip.m_hWnd!=NULL)
m_tooltip.RelayEvent(pMsg);

6、OnMouseMove(UINT nFlags, CPoint point)函数中添加代码:
CString strtip;//你想要显示的内容
m_tooltip.UpdateTipText(strtip,this);
2.增加属性页的方法有:
(1) 用CTabCtrl类中的InsertItem方法。
(2)
CPropertySheet sheet("属性页对话框");
CPage1 page1;//CPage1为CPropertyPage派生出来的类
CPage2 page2;//CPage2为CPropertyPage派生出来的类
sheet.AddPage(&page1);
sheet.AddPage(&page2);
sheet.DoModal();
3.设置标题:(这只能在CDocument中)
调用this->SetTitle("标题");函数就行。

4.设置对话框的图标:
调用this->SetIcon(AfxGetApp()->LoadIcon(图标ID),TRUE);

5.在对话框中如何增加状态栏:
在类中定义一个CStatusBar m_StatusBar 变量
在初始化函数中调用m_StatusBar.Create(this)创建状态栏
添加状态栏面板
UINT Indicates[6];
for (int i = 0; i<6;i++)
{
Indicates[i] = 50+i;
}

m_StatusBar.SetIndicators(Indicates,6);

CRect rect;
GetClientRect(rect);

UINT PaneWidth = rect.Width()/6;
设置面板宽度
for(int n = 0;n<6;n++)
{
m_StatusBar.SetPaneInfo(n,50+n*10,SBPS_NORMAL,PaneWidth);
}
设置状态栏面板文本
m_StatusBar.SetPaneText(0,"用户名称");
m_StatusBar.SetPaneText(1,"明日科技");
m_StatusBar.SetPaneText(2,"状态");
m_StatusBar.SetPaneText(4,"日期");
重新定位
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

6.如何把一个BMP图片设置为背景:
CDC* pDC = GetDC();//用于指向当前设备
CDC mDC;
CBitmap bitmap;//用于存储bmp图片
bitmap.LoadBitmap(IDB_BITMAP1);//下载BMP图片
BITMAPINFO bInfo;//定义位图信息
bitmap.GetObject(sizeof(bInfo),&bInfo);获取位图信息

mDC.CreateCompatibleDC(pDC);//创建一个与指定设备兼容的内存设备上下文环境(DC).
mDC.SelectObject(&bitmap);//把位图加载到设备上下文中
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),
&mDC,0,0,bInfo.bmiHeader.biWidth,
bInfo.bmiHeader.biHeight,SRCCOPY);//从源矩形中复制一个位图到目标矩形。

如下代码也能实现同样的功能:
CPaintDC dc(this);
CRect rect;
GetWindowRect(&rect);
CDC memDC;
CBitmap cBitmap;
CBitmap* pOldMemBmp=NULL;
cBitmap.LoadBitmap(IDB_BITMAP1);
memDC.CreateCompatibleDC(&dc);
pOldMemBmp=memDC.SelectObject(&cBitmap);
dc.BitBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);
if(pOldMemBmp)memDC.SelectObject(pOldMemBmp);

7.CAnimateCtrl控件可以播放无声的avi动画

8.如何设置状态栏的最低高度:
调用:m_StatusBar.GetStatusBarCtrl().SetMinHeight(50)函数即可。

9.滚动字幕的实现
在状态栏中实现滚动字幕,可以利用静态文本控件实现。在状态栏中显示一个静态文本控件,
然后每隔一段时间调整静态文本控件的位置,即可实现滚动字幕的效果。
相关的调用函数有:MoveWindow();

10.关于OnCmdMsg函数
这函数是由框架调用的。如果一个类继承CListCtrl类,其中也可以相应OnCmdMsg函数.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics