導航:首頁 > 版本升級 > openfilename頭文件

openfilename頭文件

發布時間:2023-05-13 05:18:53

Ⅰ 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位系統中該參數永遠是NULL

szCmdLine 程序運行時的命令行參數

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 1001

BOOL 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 9069

3.記事本資源文件

#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_)
反正你只要看到/* */和// 就是注釋,沒起任何作用
頭文件的作用在編譯器中都會有說明,或者網路一下都可以歷缺找到,個人建議去編譯去中看

閱讀全文

與openfilename頭文件相關的資料

熱點內容
免費游戲代碼 瀏覽:423
閱讀文件時出錯什麼意思 瀏覽:780
投標文件初評階段的內容 瀏覽:249
企業招聘app哪個靠譜服務好 瀏覽:135
數據中台需要什麼產品 瀏覽:374
資料庫的股票一般是多少 瀏覽:587
db什麼資料庫 瀏覽:677
哪個訂酒店賓館的app便宜 瀏覽:443
java多點登陸 瀏覽:557
win10創意者玩游戲 瀏覽:352
iphone5激活與未激活的區別 瀏覽:337
網路拓撲圖編程 瀏覽:259
電腦微信能接收文件發不了文件是怎麼回事 瀏覽:659
canvastextjs下載 瀏覽:425
立式文件夾板圖片大全 瀏覽:960
密碼生成器源碼 瀏覽:611
為什麼光碟pe無法啟動不了系統文件 瀏覽:372
小米手機根目錄密碼文件是哪個 瀏覽:141
傳奇單機版185版本 瀏覽:611
華師大大數據研究生學費多少錢 瀏覽:658

友情鏈接