四。对于CEdit,CList 等类,可以在资源视图中直接拖放到窗口中。也可以在代码中动态添加,动态加的要调用Create()函数,
再MoveWindow()或是SetWindowPos()函数,再用ShowWindow()来显示或不显示,或是EnableWindow()使其可编译或是变灰.
五。对于做TAB页时,要求TAB页的Dialogue属性为:Style ->child, Border -> none,如果属性Style不是child,则窗体不会在TAB
中,而是弹在外面。
六。combox控件中,如果是用movewindow或setwindowpos时,height要大,表示点击时的下拉框最大长度。小了的时候则表现为没有下拉框。
七。控件的tab顺序与调用的movewindow或setwindowpos顺序有关(在资源中也可以用ctrl-d调整,但是动态创建的不行),movewindow
与调用顺序相同,而setwindowpos则与顺序相反(即逆序)
八。combox下拉框控件中,在窗体的OnSize()函数中,要用movewindow函数进行动态调整,如下:
m_cmbTemp.movewindow(rcCtl.left,rcCtl.top, rcCtl.width(), nCmbDropheight, False)
//其中nCmbDropheight决定下拉框的下拉条的长度(不是宽度),如果设置小了,下拉条显示不出来
九。皮肤文件可以对窗体做限制,如果窗体标题栏显示不完整,也可能是皮肤文件的原因。。。
十。CString 转换到BSTR的函数:allocSysString()
十一。在CEDIT中换行要用\r\n,而不是\n.
十二。用hhc.exe编成.chm文件时,链接的.txt文件出现乱.码,可能是换行符用的是\n, 试下\r\n,也许是这个问题。
十三。下拉框中,最好不要用index来判断,而是用windowtext得到的值来判断和设置。
十四。windows 下截获win+d键的方法:
BOOL CMydilog::PreTranslateMessage(MSG* pMsg)
{
if (pMsg-> message == WM_KEYDOWN)
{
switch (pMsg-> wParam)
{
case VK_ESCAPE:
SetFocus ();
return TRUE;
case 'D ':
if(::GetKeyState(VK_LWIN) < 0 )
MessageBox( "hello ");
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
if(::GetKeyState(VK_LWIN) < 0 )
{
qDebug()<<"WM_KEYDOWN == msg->message: ::GetKeyState(VK_LWIN):TRUE 234234";
if(::GetKeyState('D') < 0 )
{
qDebug()<<"WM_KEYDOWN == msg->message: ::GetKeyState('D') < 0";
}
return TRUE;
}
/*
* 函数名: CString2Char
* 参数1: CString str 待转换字符串
* 参数2: char ch[] 转换后将要储存的位置
* 将Unicode下的CString转换为char*
*/
void CString2Char(CString str, char ch[])
{
int i;
char *tmpch;
int wLen = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);//得到Char的长度
tmpch = new char[wLen + 1]; //分配变量的地址大小
WideCharToMultiByte(CP_ACP, 0, str, -1, tmpch, wLen, NULL, NULL); //将CString转换成char*
for(i = 0; tmpch[i] != '\0'; i++) ch[i] = tmpch[i];
ch[i] = '\0';
}
将CString转换为int 的函数为:
如果你准备使用Unicode 字符,你应该用_ttoi()
MFCGridCtrl控件的使用:
1.将该控件涉及的.cpp(6个)和.h(8个)文件加入工程
2.从工具箱中拖入Custom Control,右击该控件属性,将Class项设置为MFCGridCtrl
3.在工程头文件中,#include "GridCtrl.h",且定义变量CGridCtrl m_ctrlGrid;
4.在工程定义文件中,在DoDataExchange函数,添加DDX_GridControl(pDX, IDC_CUSTOM1, m_ctrlGrid);(假设控件ID为IDC_CUSTOM1)
5.在需要用到表格控件的地方使用即可。譬如:m_ctrlGrid.SetRowCount(10);
m_ctrlGrid.SetColumnCount(3);
Cstring.tokenize 和AfxExactSubstring的区别:前者在遇到多个连续的分隔符时会忽略,后者会分隔成空字符串