Ⅰ QT :QString 的getOpenFileName 方法打开文件时路径时 汉字部分显示乱码
fileName=fileDialog->selectedFiles()[0];code = QTextCodec:: codecForName("gb18030");std::string strbuffer;strbuffer = code->fromUnicode(fileName).data();同时要加上头文件#include <QTextCodec>。qt中有自带的中文字符编码方式。
Ⅱ c++出学者的提问
程序解析: 1、windows.h是每一个Windows程序都需要的头文件。 2、WinMain函数是所有Windows C程序的入口,类似于DOS C中的main函数。 3、MessageBox是一个Win32 API函数(API,Application Programming Interface 应用程序接口),其作用是弹出一个对话框,显示消息的内容。该函数的第一个参数是用来指定父窗口句柄,即对话框所在的窗口句柄。第二个参数是用来显示消息的内容(你可以修改成你想显示的内歼樱容)。第三个参数是 对话框标的标题,如本例的“我的第一个Windows程序”,第四个参数是指定对话框中显示的按钮,试一试,将MB_OK修改成MB_OKCANCEL,运行一下程序会出现什么结果,再试一试修改成MB_RETRYCANCEL 二、Windows 程序简介 (1)Windows C程序的组成: 1.C程序源文件,扩展名为.c或.cpp 2.头文件,扩展名为.h 3.资源文件,扩展名为.rc (2)源程序的组成结构 Windows C程序有相对固定的基本结构,一般有入口函数WinMain和窗口函数。 1、WinMain函数 是所有Windows C程序的入口,类似于DOS C的main函数,其功能是完成一系列的定义和初始化工作,并产生消息循环。消息循环是整个程序运行的核心。 WinMain函数有三个基本的组成部分:函数说明、初始化和消息循环 a、WinMain函数的说明:int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)参数说明:hInstance 应用程序当前实例句柄hPrevInstance 前一个实例句柄,在32位系统中该参数永远是NULLszCmdLine 程序运行时的命令行参数iCmdShow 程序运行时的显示方式,如最大化、最小化、隐藏显示等。 b、初始化初始化包括窗口类的定义、念友注册、创建窗口实例和显示窗口四部分。这是固定格式,所有的Windows程序基本一样,记住即可,具体参见下面的程序实例的注释。 2、窗口函数 窗口函数定义了Windows C程序对接受到的不同消息的响应,其中包含了应用程序对各种可能接收到的消息的处理过程,是消息处理分支控制语句的集合。通常窗口函数是有一个或多个switch语句组成。每一条case语句对应一种消息,当应用程序接收到一个消息时,就会执行相应case 语句下的程序模块来完成相应的功能。 窗口函数说明:LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)参数仔改槐说明:hwnd 窗口句柄message 代表所处理消息的消息值wParam 消息的附加参数,是message的进一步信息lParam 消息的附加参数,是message的进一步信息 一般用法:LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ … switch (message) { case 常数1: … case 常数2: …… case WM_DESTROY: PostQuitMessage (0) ; //在消息队列中插入一条“退出”消息 return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam);//执行默认的消息处理 } 窗口函数的主体是消息处理语句,该语句是有一系列case语句组成。我们学习者自需要根据窗口可能收到的消息在case语句中编写相应的处理程序即可。1.记事本主程序#include <windows.h>#include "sample.h"static char g_szClassName[] = "MyWindowClass";static HINSTANCE g_hInst = NULL;#define IDC_MAIN_TEXT 1001BOOL LoadFile(HWND hEdit, LPSTR pszFileName){ HANDLE hFile; BOOL bSuccess = FALSE; hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0); if(hFile != INVALID_HANDLE_VALUE) { DWORD dwFileSize; dwFileSize = GetFileSize(hFile, NULL); if(dwFileSize != 0xFFFFFFFF) { LPSTR pszFileText; pszFileText = (LPSTR)GlobalAlloc(GPTR, dwFileSize + 1); if(pszFileText != NULL) { DWORD dwRead; if(ReadFile(hFile, pszFileText, dwFileSize, &dwRead, NULL)) { pszFileText[dwFileSize] = 0; if(SetWindowText(hEdit, pszFileText)) bSuccess = TRUE; } GlobalFree(pszFileText); } } CloseHandle(hFile); } return bSuccess;}BOOL SaveFile(HWND hEdit, LPSTR pszFileName){ HANDLE hFile; BOOL bSuccess = FALSE; hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if(hFile != INVALID_HANDLE_VALUE) { DWORD dwTextLength; dwTextLength = GetWindowTextLength(hEdit); if(dwTextLength > 0) { LPSTR pszText; pszText = (LPSTR)GlobalAlloc(GPTR, dwTextLength + 1); if(pszText != NULL) { if(GetWindowText(hEdit, pszText, dwTextLength + 1)) { DWORD dwWritten; if(WriteFile(hFile, pszText, dwTextLength, &dwWritten, NULL)) bSuccess = TRUE; } GlobalFree(pszText); } } CloseHandle(hFile); } return bSuccess;}BOOL DoFileOpenSave(HWND hwnd, BOOL bSave){ OPENFILENAME ofn; char szFileName[MAX_PATH]; ZeroMemory(&ofn, sizeof(ofn)); szFileName[0] = 0; ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hwnd; ofn.lpstrFilter = "文本文件 (*.txt)\0*.txt\0所有文件 (*.*)\0*.*\0\0"; ofn.lpstrFile = szFileName; ofn.nMaxFile = MAX_PATH; ofn.lpstrDefExt = "txt"; if(bSave) { ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT; if(GetSaveFileName(&ofn)) { if(!SaveFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName)) { MessageBox(hwnd, "保存文件失败.", "错误信息", MB_OK | MB_ICONEXCLAMATION); return FALSE; } } } else { ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; if(GetOpenFileName(&ofn)) { if(!LoadFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName)) { MessageBox(hwnd, "打开文件失败.", "错误信息", MB_OK | MB_ICONEXCLAMATION); return FALSE; } } } return TRUE;}LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam){ switch(Message) { case WM_CREATE: CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_MAIN_TEXT, g_hInst, NULL); SendDlgItemMessage(hwnd, IDC_MAIN_TEXT, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0)); break; case WM_SIZE: if(wParam != SIZE_MINIMIZED) MoveWindow(GetDlgItem(hwnd, IDC_MAIN_TEXT), 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE); break; case WM_SETFOCUS: SetFocus(GetDlgItem(hwnd, IDC_MAIN_TEXT)); break; case WM_COMMAND: switch(LOWORD(wParam)) { case CM_FILE_OPEN: DoFileOpenSave(hwnd, FALSE); break; case CM_FILE_SAVEAS: DoFileOpenSave(hwnd, TRUE); break; case CM_FILE_EXIT: PostMessage(hwnd, WM_CLOSE, 0, 0); break; case CM_ABOUT: MessageBox (NULL, "一个Windows C 记事本程序" , "关于…", 0); } break; case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, Message, wParam, lParam); } return 0;}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ WNDCLASSEX WndClass; HWND hwnd; MSG Msg; g_hInst = hInstance; WndClass.cbSize = sizeof(WNDCLASSEX); WndClass.style = 0; WndClass.lpfnWndProc = WndProc; WndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; WndClass.hInstance = g_hInst; WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); WndClass.lpszMenuName = "MAINMENU"; WndClass.lpszClassName = g_szClassName; WndClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if(!RegisterClassEx(&WndClass)) { MessageBox(0, "注册窗口失败", "错误信息", MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL); return 0; } hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, g_szClassName, "一个记事本程序", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, g_hInst, NULL); if(hwnd == NULL) { MessageBox(0, "创建窗口失败", "错误信息", MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL); return 0; } ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); while(GetMessage(&Msg, NULL, 0, 0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return Msg.wParam;} 2.记事本头文件 sample.h#define CM_FILE_SAVEAS 9072#define CM_FILE_EXIT 9071#define CM_FILE_OPEN 9070#define CM_ABOUT 90693.记事本资源文件#include "sample.h"A ICON MOVEABLE PURE LOADONCALL DISCARDABLE "sample.ico"MAINMENU MENU { POPUP "文件(&F)" { MENUITEM "打开(&O)…", CM_FILE_OPEN MENUITEM "另存为(&S)…", CM_FILE_SAVEAS MENUITEM SEPARATOR MENUITEM "关闭", CM_FILE_EXIT } POPUP "帮助(&H)" { MENUITEM "关于(&A)", CM_ABOUT }} 一点经验 所有Windows 程序的基本结构都与上面的实例相同或相近(说明:有的程序是将窗口类和窗机窗口封装成函数后调用,其实质是一样的),记住一个例子,编写其他程序时,在其上面修改即可。 一点建议:由于Windows 编程精大博深,初学者想把什么都搞明白是不可能的,要学会一点“不求甚解” ,这里说的“不求甚解”并不是指不认真学习。初学者最怕钻牛角尖:一个问题不明白,就在那里卡住,非解决它不可——这种方法是不可取的。 首先,它会严重打击你的自信心,使你丧失继续学习下去的兴趣; 其次,这样浪费了许多时间。因此学习时要给自己留一些“不懂”的余地。例如第一遍读书时要允许自己似懂非懂,用规定的时间(例如两个星期)把它看完,然后开始第二遍学习。开始时许多不明白的东西,下次就容易理解多了。
Ⅲ VC++菜鸟问题 拖拽文件到文本框获取文件路径简单问题
//DLG.cpp:#include"drag.h"#include"fileedit.h"//添加这一行#include"DLG.h"//要添加在这一行之前
在两个对话框类的cpp文件中,包含自定义类的头文件,注意要保证在对话框类头文件之前。
//dragDlg.cpp:#include"stdafx.h"#include"drag.h"#include"fileedit.h"//同理#include"dragDlg.h"
Ⅳ Visual C++中GetOpenFileName与CFileDialog函数的区别
GetOpenFileName是一个弊卜Windows api函数,CFileDialog是MFC中的一个类,封亩绝装了迅卜姿对前者的调用
Ⅳ OPENFILENAME 的用法
不知道你现在是学到哪滑高里,我就详细点解答吧。首先,OPENFILENAME在头文件是没有的,所以只有自己创建。openFileName(char* pathName,char* textContent){ CFile file(pathName,CFile::modeRead); //以只读方式打开 file.Read(textContent,file.GetLenght()); //读取 textContent[file.GetLenght()]='\0'; //腊让数读取的文本内容后加0有利于后面的输轮首出 file.Close(); //关闭文件} int main(){char a[]="C:\test.txt";char* outPut;openFileName(a,outPut);cout<<outPut;}以上用的是CFile类,也可以用文件流的FILE类,代码差不多
Ⅵ C++ 读别人的程序,制作了下面的头文件,包含在主程序当中,但是我读不懂啊,好多不认识,求大神给解释!
前三行注释,没用#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_就是这个(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)没有定义的话,下面定义一下#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000这一段的意思是如果_MSC_VER > 1000这个条件满足就执行#pragma once#pragma once的作用防止头文件重复包肢祥辩含 #define WIN32_LEAN_AND_MEAN// Exclude rarely-used stuff from Windows headers// Windows Header Files:#include <windows.h> #include <process.h> /* _getpid() */ #include <shellapi.h> /* ShellExecute() */这一段要用到的是window系统内的函数,所以先声明,后面的几个.h文件是调用的是window系统中的函数宴枣 // C RunTime Header Files#include <stdlib.h>#include <malloc.h>#include <memory.h>#include <tchar.h>#include <stdio.h> /* sprintf() */#include <oledlg.h> /* OPENFILENAME */这一段类似,是用到C语言中(编译器中)的函数,下面的.h是调用那些函数// Local Header Files// TODO: reference additional headers your program requires here//{{AFX_INSERT_LOCATION}}// Microsoft Visual C++ will insert additional declarations immediately before the previous line.这一段也是没用的东西,注释 最后就是定义结束了#endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)反正你只要看到/* */和// 就是注释,没起任何作用头文件的作用在编译器中都会有说明,或者网络一下都可以历缺找到,个人建议去编译去中看