1.改变标题栏
void CMy1111Doc::SetTitle(LPCTSTR lpszTitle)
{
// TODO: Add your specialized code here and/or call the base class
CDocument::SetTitle("MyTitle");
}
用class wazid 在文档类加这个函数,在SetTitle里写你要的标题,你的标题前半部分就改了,然后改后半部分,可以在Resource管理器下,找到String Table项,在里面点第一行,把第一个斜杠n前的内容该成你想要的,就把后半部分改了,至于该图标,跟更简单了,只要把Icon下的那个IDR_MAINFRAME的哪个图标换成你想要的,就可以了.
2.在VIEW中输出文本实现自动换行(用DrawText而非TextOut)
如果用textout你最好自己算好长度然后自己换行写.但是你可以作用DrawText并设置FORMAT为DT_WORDBREAK;
XXXX::OnDraw(....)
{
....
CRect m_rect;
GetClentRect(&m_rect);
pDC->DrawText("XXXXXXXX...",&m_rect,DT_LEFT|DT_WORDBREAK);
.....
}
这样如果字串长度超过了m_rect的范围,会自动换行。
3.单选按钮设为选中状态为:SetCheck(1),非选中状态为:SetCheck(0)
在创建一组单选按钮时,如果几个单选按钮的ID号相同,那么点击任何一个按钮的消息都是第一个按钮的处理消息.然后在第一个按钮的消息处理函数中判断哪个按钮点击了,用button.GetCheck()来查看哪个按钮被点击了.
4.设置VIEW中文字的背景透明
SetbkMode(Canvas.Handle, Transparent); //设置文字背景透明
5.HDC 和 PDC 转换
通过pDC获得hdc: HDC hdc=pDC->GetSafeHdc();
通过hdc获得pDC: CDC *pDC=new CDC; pDC->Attach(hdc);
6.加载套接字
在VC程序中加载套接字时,首先在AFXSTD.H中加入afxsock.h,然后继承CSOCKET类,在C***APP的INISTINSTANCE()中加入AfxSocketInit(),哪一步都不能缺,否则就不能通信
if (!AfxSocketInit())
{
AfxMessageBox("inet failed!");
return FALSE;
}
7.不显示菜单
去掉菜单,在CMainFrame::PreCreateWindow中加入
if(cs.hMenu!=NULL)
{
::DestroyMenu(cs.hMenu); // delete menu if loaded
cs.hMenu = NULL; // no menu for this window
}
8.某个类试图不显示
Q:vc的WORKSPACE中某个类无法显示?
A:还有个更简单的解决方法:随便改一下那个类的头文件,然后改回去,保存即可
9.加载数据库
VC添加ODBC数据库时在AFXSTD.H中包含以下头文件:
#include <odbcinst.h>//ODBC数据库API头文件
#include <afxdb.h>
10.打开RES失败
VC++中打开RES文件时失败,提示这个文件已在另一个编辑器中打开?
方案:已经解决了,将opt文件,和ncb文件删除,重新打开就可以了,哈哈
11.在VIEW中动态创建按钮
1).在VIEW.H中添加 CButton m_myButton;
2).在VIEW中添加WM_CREATE响应函数,C***View::OnCreate()并在其中添加:
m_myButton.Create(_T("抢答"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(200,325,400,355), this, ID_BUTTON);//ID_BUTTON是该按钮的ID,提前定义,或者直接数字也可
3).m_myButton.ShowWindow(SW_SHOW);//SW_HIDE
4). afx_msg void OnMyButton(); ON_BN_CLICKED(ID_BUTTON, OnMyButton)
5).添加相应函数:
void CCompClientView::OnMyButton()
{
*******
}
===============================================================================================