問題タブ [tchar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
636 参照

winapi - なぜTTN_NEEDTEXTWではなくTTN_NEEDTEXTAなのですか?

これは私が理解したことがない古い問題です - ここの誰かがたまたまあなたの頭の上から答えを知っているのではないかと思いました...

私たちのソフトウェア (MFC/Win32/MBCS) の一部では、私のコードは受信のみを行います

TTN_NEEDTEXTW

ソフトウェアの他の部分では、MBCS の正しいメッセージを受け取ります

TTN_NEEDTEXTA

私には意味がありません。

私たちのソフトウェアは Unicode でコンパイルできるかどうかは理解しています (マルチバイト文字セットを使用するように設定されています)。そして、各ウィンドウを Unicode で構成できるかどうかは漠然とした記憶がありますが、これは漠然とした記憶であり、具体的なものではありません。

マルチバイトとしてコンパイルされているにもかかわらず、コードの一部の場所でワイド バージョン メッセージが表示される理由を知っている人はいますか?

ノート:

  • このメッセージは絶対に送信していません。おそらく ToolTip コントロールが送信しています。
  • ある場所では間違いなく (W) メッセージだけを受け取り、他の場所では間違いなく (A) メッセージだけを受け取ります。
  • 私は、すべてのコンパイル モジュールが Unicode ではなく MBCS を使用していること、およびビルド ターゲットがすべて Unicode ではなく MBCS を指定していることを確信しています。
  • これは、CMainFrame でホストされているウィンドウとコントロールでのみ発生するようです。つまり、メイン フレームの外側にある Windows は、ナロー バージョンを使用できます (ダイアログ ボックスなど)。
0 投票する
3 に答える
2547 参照

c++ - `cout << argv [0]`は16進値を返しますか?

重複の可能性:
VC++でstd::coutを使用してargv[]値を出力できない

コード:

ご覧のとおり、標準のWin32コンソールアプリケーションです。
紛らわしい部分は、の値がargv[0]として出力されること00035B88です。
これは(AFAIK)コマンドラインオプションなしで実行されているためargv[]、まだ値がないはずです。(またはこれが問題ですか?)

ただし、argv[]はポインタ()として宣言されており、ポインタのアドレスが出力される_TCHAR*と聞きました。coutこれは本当ですか?もしそうなら、どうすればの値を印刷/使用できますargvか?

0 投票する
2 に答える
16868 参照

c++ - 同じ値の2つのTCHARを比較するとfalseになります

アプリケーションパスを確認しようとしていますが、指定されたパスでない場合は移動してください。コードはしっかりしているように感じますが、正しく機能しません。

ファイルが新しいパスにある場合でも、結果はpCheck!=xPathになります。

「新しい場所」メッセージボックスが表示されません。最初の2つのメッセージボックスが表示されるとき、パスは同じです...

0 投票する
2 に答える
851 参照

c++ - Visual StudioでMicrosoftのtchar.hの装飾を無効にする方法は?

デフォルトでは、MicrosoftのVisual Studioはを使用しており、として<tchar.h>定義mainされていint _tmain(int argc, _TCHAR* argv[])ます。これは便利ですが、常にそうとは限りません。

デフォルトの新しいプロジェクトでこれを無効にする方法は?

アップデート

簡単なもので空のプロジェクトを作成したいmain...

0 投票する
1 に答える
88 参照

windows - マクロ内で「条件付き」で_T/TEXTを使用する方法はありますか?

この質問は、Visual C ++に固有のものです(Visual C ++ 2005以降を想定している場合があります)。

元のファイルへの変更を最小限に抑えてWin32でビルドおよび実行するために、unixoidシステム(特にFreeBSD)からプログラムのグルーコードを作成したいと思い.cます。さて、これのほとんどは簡単ですが、今私は問題に遭遇しました。tchar.hヘッダーとTCHAR/を使用しており、元のコードでと呼び出し(を参照)_TCHARのグルーコードを作成する必要があります。使用するコードを作成することに同意しない場合でも、我慢してください。errerrxerr(3)tchar.h

の呼び出しerrerrxはおおよそ2つの形式を取ります。ここで、問題が発生します。

後者は、errno(を使用してstrerror)に格納されているエラーを出力します。

さて、問題は、文字列リテラルと文字列リテラルの両方を取ることができるジェネリックマクロを書く方法はありますNULLか?変数が2番目のパラメーターとして渡されることを気にする必要はありません(そして気にしません) 。リテラル文字列のみです。NULL

もちろん、私の素朴な最初のアプローチは、 (可変個引数マクロを使用して!)fmtとして渡されたものを考慮していませんでした:NULL

今のところ、マクロを使用してこれを実現する方法はわかりません。これは、現時点では想像できないようなコンパイル時と実行時の条件の組み合わせが必要になるためです。ですから、これが考えられるかどうかにかかわらず、信頼できる答えを探しています。

私が今頼っている方法(より良いアプローチがない)は、andと同じようerrerrxconst)を受け入れるラッパー関数を記述し、それをdefinedでコンパイルされchar *た場合に変換することです。これは、呼び出し元が(私のコンテキストでは正しい仮定です)の後に変数引数の文字列を渡すと仮定すると、機能するはずです。それ以外の場合は、MSが呼び出すように、「ANSI」文字列を処理するために、フォーマット文字列内に変換する必要があります。wchar_t *_UNICODE_TCHAR*fmt%s%hs

0 投票する
1 に答える
2327 参照

winapi - 非 MFC、Win32 プロジェクト用の _T("") マクロ

私は Win32 プロジェクトを作成しており、TCHARどこでも使用しようとしています。しかし、これは非 MFC プロジェクトであるため、_T定義していません。

プロジェクトでそれを取得するにはどうすればよいですか?

0 投票する
1 に答える
1964 参照

c - tchar を作成しようとしたときに非ワイド文字列から初期化された int-array

ここで次のように tchar 配列を作成しようとしています: TCHAR c_wText[100] = _T("string here");

しかし、コンパイル時にエラーメッセージが表示されます: int-array initialized from non-wide string

私は何か見落としてますか?

0 投票する
1 に答える
3183 参照

c++ - wstringをTCHARに変換する際の問題

私はプログラミングにかなり慣れていません。ユーザーが日付を入力し、その日付がファイルディレクトリ名に追加され、そのファイルディレクトリが検索されるプログラムを作成しようとしています。

これが私が以下で取り組んでいるものです。私はこれを行うための多くの機能を持っています..私はオンラインで検索し、いくつかの異なる方法で変換を試みましたが、それを理解していません....それで私は(私が知っていることは間違っています) static_cast。

たぶん私は正しく変換を行っていません...基本的にこれはWINAPIハンドラーを使用する関数にそれをスローします。私がそれを機能させることができるかどうかは、まったく別の話です...助けてくれてありがとう!

0 投票する
1 に答える
355 参照

c++ - C++からvb.netへのTCHAR配列は変換を使用します

私はc++プログラマーではないので、このc++コードをvb.netに変換する必要があります。

私は本当に理解していません。私が知っているのは、これがIntからTCHAR配列への変換であるということだけです。

私は疑問に思っていました

うまくいくでしょうか、それとも何かが恋しいでしょうか?

どんな助けでもありがたいです!ありがとう :)

0 投票する
1 に答える
215 参照

c - Visual C++ に存在する vswprintf() のバージョンの検出

_vscwprintf()/ vswprintf()(経由で_vsctprintf()/ ) を使用して、 ed バッファー_vstprintf()に任意の長さの書式設定された文字列を作成するプロジェクトがあります。malloc()

Visual C++ 2008 でプロジェクトを開始したとき、次の_vstprintf()3 つのパラメーターを使用しました。

しかし、Visual C++ 2012 で戻ってきたとき、プロジェクトをしばらく離れた後、MS が関数を変更して 4 つのパラメーターを取るようになっていることがわかりました。

コードを Visual C++ 2008、2010、および 2012 でビルドできるようにしたいと考えています (Linux および Solaris にも移植可能です)。

#ifdef関数の 3 パラメーターまたは 4 パラメーター バージョンで正しくビルドできるように、チェックできるシンボルはありますか?

コンパイルしている Visual C++ のバージョンを示すシンボルがあると思いますが、これは正しい方法ですか? たとえば、新しいコンパイラが古い C ライブラリまたはランタイムでビルドできる可能性、またはその逆の可能性はありますか?

それが違いを生む場合、私のコードは実際にはC++ではなくCを使用しています。