VC++6控件简单用法总结
对话框宏定义:
对话框显示的按钮类型:
#define MB_OK 0x00000000L 确定
#define MB_OKCANCEL 0x00000001L 确定|取消
#define MB_ABORTRETRYIGNORE 0x00000002L 中止|重试|忽略
#define MB_YESNOCANCEL 0x00000003L 是|否|取消
#define MB_YESNO 0x00000004L 是|否
#define MB_RETRYCANCEL 0x00000005L 重试|取消
对话框显示的图标类型:
#define MB_ICONHAND 0x00000010L 一把叉
#define MB_ICONQUESTION 0x00000020L 一个问号
#define MB_ICONEXCLAMATION 0x00000030L 一个感叹号
#define MB_ICONASTERISK 0x00000040L 一个反向感叹号,像i
MessageBox返回值:
#define IDOK 1 确定
#define IDCANCEL 2 取消
#define IDABORT 3 中止
#define IDRETRY 4 重试
#define IDIGNORE 5 忽略
#define IDYES 6 是
#define IDNO 7 否
打开文件对话框和保存文件对话框
需要导入的头文件#include
OPENFILENAME ofn;
char szFile[MAX_PATH];
ZeroMemory(&ofn, sizeof(ofn));//memset给结构体清零
//ZeroMemory是memset取0的特值
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = TEXT('\0');
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = TEXT("All\0*.*\0txt\0*.txt\0");
ofn.nFilterIndex = 1;//打开文件过滤器默认显示 1是all,2是txt
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.hwndOwner = hwnd;//指定父窗口
ofn.Flags = OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;//风格选择
if(GetOpenFileName(&ofn))
{
//写打开文件、读取文件内容的操作
FILE * fp= fopen(szFile, "r");
char line[256];
fgets(line, sizeof(line), fp);
fclose(fp);
SetDlgItemText(hwnd, IDC_RICHEDIT1, TEXT(line));
MessageBox(NULL, szFile, "", MB_OK);
}
要想同时打开多个文件,需要在风格选择加入OFN_ALLOWMULTISELECT
保存文件对话框用GetSaveFileName来实现,大体相同
如果需要保存文件覆盖提示怎么办?看看OFN有选项吗?OFN_OVERWRITEPROMPT
获取设置文本框
//获取IDC_EDIT1的文本值,放入到字符串edit1中,放入sizeof这么个大小
GetDlgItemText(hwnd, IDC_EDIT1, edit1, sizeof(edit1));
//设置IDC_RESULT的文本值,设置为字符串edit3
SetDlgItemText(hwnd, IDC_RESULT, edit3);
//将字符串str以%s的形式输出到edit。 其他形式的也可以
wsprintf(edit, "%s", str);
//atoi是ASCI码 to INT
int i1=atoi(edit1);
//itoa是INT 转换为 ACSI
itoa(int, str, 10); 10为进制
定时器控件
UINT_PTR SetTimer(
HWND hWnd, // 窗口句柄
UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器
UINT nElapse, // 时间间隔,单位为毫秒
TIMERPROC lpTimerFunc // 回调函数
);
SetTimer返回值:类型:UINT_PTR
如果函数成功,hWnd参数为0,则返回新建立的时钟编号,可以把这个时钟编号传递给KillTimer来销毁时钟.
如果函数成功,hWnd参数为非0,则返回一个非零的整数,可以把这个非零的整数传递给KillTimer来销毁时钟.
如果函数失败,返回值是零
回调函数:
void CALLBACK mytimerpro(HWND hwnd, UINT message, UINT ITimerID, DWORD dwTimer){
SYSTEMTIME stLocal;
GetLocalTime(&stLocal);
TCHAR strTime[256];
wsprintf(strTime, "%d年%d月%d日 %d:%d:%d", stLocal.wYear,stLocal.wMonth,stLocal.wDay,stLocal.wHour,stLocal.wMinute, stLocal.wSecond);
SetDlgItemText(hwnd, IDC_EDITSYSTIME, strTime);
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
SetTimer(hwnd, 0, 1000, mytimerpro);
return TRUE;
}
获取本地系统时间
//设置一个SYSTEMTIME结构体的变量
SYSTEMTIME stLocal;
//得到当前本地时间给结构体变量
GetLocalTime(&stLocal);
然后结构体变量+.的方式可以获得本地时间的时分秒
wsprintf(strTime, "%d年%d月%d日 %d:%d:%d", stLocal.wYear,stLocal.wMonth,stLocal.wDay,stLocal.wHour,stLocal.wMinute, stLocal.wSecond);
SetDlgItemText(hwnd, IDC_EDITSYSTIME, strTime);
音乐播放器
#include .h>
Mcisendstring播放音乐,配合GetOpenFileName实现播放器
mciSendString("play c:/1.mp3", "", 0, NULL);
mciSendString更多用法(暂停、继续、录音、播放进度控制)
GetShortPathName 这是处理长文件路径的
TCHAR shortPath[MAX_PATH];
TCHAR cmd[MAX_PATH+8];
GetShortPathName("F:\\Music\\丑八怪 - 薛之谦.mp3",shortPath,sizeof(shortPath));
wsprintf(cmd, "play %s", shortPath);
mciSendString(cmd, "", 0, NULL);
CheckBox复选框
获取复选框按钮是否选中:
LRESULT Button_GetCheck(HWND hwndCtl);
返回值:BST_CHECKED BST_UNCHECKED (int类型的宏)
设置复选按钮是否选中:
LRESULT Button_SetCheck(HWND hwndCtl, int check);
int check就是返回值的那两个宏。复选框有三种状态,一般只用两种
ComboBox组合框
HWND hwndcombo1 = GetDlgItem(hwnd, IDC_COMB1);//获得组合框句柄
ComboBox_AddString(hwndcombo1, TEXT("重庆市"));//往组合框里添加内容
确定目前选项的索引:
int ComboBox_GetCurSel(
HWND hwndCtl
);//Cur:Current Sel:Selection
返回值是当前项的编号,从0开始。如果没有项目被选中,那么函数返回值为CB_ERR
删除项:
int ComboBox_DeleteString(HWND hwndCtl, int index);
删除编号为index的选项
取得有多少项:
int ComboBox_GetCount(HWND hwndCtl);
选定某一项:
int ComboBox_SetCurSel(HWND hwndCtl, int index);
讲index设定为-1则取消所有选择
得到某一项的值:
TCHAR str[256];
ComboBox_GetLBText(hwndCombo1, 1, str);
取得编号为1的选项值放入str
让ComboBox只能选择,不能填写!把ComboBox的属性“下移”改为“下拉列表”
ListBox列表框
添加项:
如果采用LBS_SORT样式,那么填入内容最简单的方法是
int ListBox_AddString(HWND hwndCtl, LPCSTR lpsz);
lpsz为要添加的内容
如果没采用LSB_SORT样式,那么可以用ListBox_InsertString()指定一个索引值,将字符串插入
int ListBox_InsertString(HWND hwndCtl, int index, LPCSTR lpsz);
删除项:
int ListBox_DeleteString(HWND hwndCtl, int index);
取得有多少项:
int ListBox_GetCount(HWND hwndCtl);
选定某一项:
int ListBox_SetCurSel(HWND hwndCtl, int index);
将iParam设定为-1则取消所有选择
确定目前选项的索引:
int ListBox_GetCurSel(HWND hwndCtl, hwndCtl);
如果没有项目被选中,那么从呼叫中传回的iIndex的值为LB_ERR
将某项目复制到文字缓冲区中:
int ListBox_GetText(HWND hwndCtl, int index, LPCTSTR lpszBuffer);
RichEdit
RichEdit控件比较高级,
在使用前需要先调用 LoadLibrary("riched32.dll");这句话放在Main.cpp里DialogBox前面