VC++6控件简单用法总结
程序员文章站
2023-09-20 22:21:58
VC++6控件简单用法总结
对话框宏定义:
对话框显示的按钮类型:
#define MB_OK 0x00000000L...
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 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前面