突然发现每天晚上把当天遇到的问题记录下来是一个很好的习惯。
◆PropertySheet中去掉下方默认的按钮的方式,以及重新绘制按钮添加响应函数的代码:
GetDlgItem(IDOK)->ShowWindow(SW_HIDE);
GetDlgItem(IDCANCEL)->ShowWindow(SW_HIDE);
GetDlgItem(ID_APPLY_NOW)->ShowWindow(SW_HIDE);
GetDlgItem(IDHELP)->ShowWindow(SW_HIDE);
//SetDlgItemText(IDHELP,"退出");
/* CRect btnRect;
GetDlgItem(IDCANCEL)->GetWindowRect(&btnRect);
//获取窗体尺寸
CRect wdnRect;
GetWindowRect(&wdnRect);
//调整窗体大小
::SetWindowPos(this->m_hWnd, HWND_TOP, 0,0,wdnRect.Width(),wdnRect.Height() - btnRect.Height(), SWP_NOMOVE | SWP_NOZORDER);
*/
CButton *m_applyBtn = new CButton();
CRect rect, tabrect;
int width;
//Get button sizes and positions
GetDlgItem(IDOK)->GetWindowRect(rect);
GetTabControl()->GetWindowRect(tabrect);
ScreenToClient(rect);
ScreenToClient(tabrect);
//New button -> width, height and Y-coordiate of IDOK
// -> X-coordinate of tab control
width = rect.Width();
rect.left = tabrect.left+200; rect.right = tabrect.left + width+280;
//Create new "Add" button and set standard font
m_applyBtn->Create("应用",BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE|WS_TABSTOP, rect, this, IDC_BUTTON_APPLY);
m_applyBtn->SetFont(GetFont());
◆将控件多个控件编组方便组操作的代码:
CIPAddressCtrl m_IP[10];
void CServerIP::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CServerIP)
//}}AFX_DATA_MAP
DDX_Control(pDX, IDC_IP1, m_IP[0]);
DDX_Control(pDX, IDC_IP9, m_IP[8]);
DDX_Control(pDX, IDC_IP8, m_IP[7]);
DDX_Control(pDX, IDC_IP7, m_IP[6]);
DDX_Control(pDX, IDC_IP6, m_IP[5]);
DDX_Control(pDX, IDC_IP5, m_IP[4]);
DDX_Control(pDX, IDC_IP4, m_IP[3]);
DDX_Control(pDX, IDC_IP3, m_IP[2]);
DDX_Control(pDX, IDC_IP2, m_IP[1]);
DDX_Control(pDX, IDC_IP10, m_IP[9]);
}
想要操作控件时轮询数组即可。
◆CIPAddressCtrl类的使用(IP地址与CString的互相转化):
//将CString 型IP地址在IPAddressCtrl中显示
CString strIP="192.168.0.10";
DWORD dwIP;
dwIP = inet_addr(strIP);
unsigned char *pIP = (unsigned char*)&dwIP;
m_ipAddr.SetAddress(*pIP, *(pIP+1), *(pIP+2), *(pIP+3));
//将IPAddressCtrl中的IP地址获得并转换成CString型
unsigned char *pIP;
CString strIP;
DWORD dwIP;
m_ipAddr.GetAddress(dwIP);
pIP = (unsigned char*)&dwIP;
strIP.Format("%u.%u.%u.%u",*(pIP+3), *(pIP+2), *(pIP+1), *pIP);
BYTE nf1,nf2,nf3,nf4;
pIP->GetAddress(nf1,nf2,nf3,nf4);
CString str;
str.Format("%d.%d.%d.%d",nf1,nf2,nf3,nf4);//这里的nf得到的值是IP值了.
MessageBox(str);
◆CComboBox的注意:
在使用CComboBox时必须进行初始化,如果不进行初始化,系统会报错。
在使用CComboBox的页面,必须先激活否则还是会报错。
SetActivePage,激活属性页。
◆CStdioFile类进行读写文件:
CStdioFile myFile;
if (myFile.Open(CLIENTPATH, CFile::modeCreate|CFile::modeWrite) == FALSE)
{
return;
}
sprintf(buf,"%s\r\n","20");
myFile.WriteString(buf);
读文件是ReadString
◆通过索引名查询索引所在表:
select user_ind_columns.column_position from user_ind_columns where user_ind_columns.index_name = "索引名";