首页 > 程序开发 > 软件开发 > C++ >

VC++6控件简单用法总结

2016-08-01

VC++6控件简单用法总结 对话框宏定义: 对话框显示的按钮类型: define MB_OK 0x00000000L 确定 define MB_OKCANCEL 0x00

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前面

相关文章
最新文章
热点推荐