C・C++・C#
- FindWindow API で NULLが戻る
多くのアプリケーションでは正しく Handle が戻るが Windowsタスクマネージャーやブラウザなどは FindWindow でNULLが戻る。 但し、Google Cromeブラウザのみは正しく取得可能 ブラウザに1つのウィンドしか出ていない時でもNG GetWindowText でソフトタイトル取得 FindWindow のパラメータには、それを利用 MoveWindow で定位置に各ソフトを配置したい。 Win10, VC++
- ベストアンサー
- feasiblemethod
- C・C++・C#
- 回答数2
- C++BuilderでSenderを使うには
複数の同種のオブジェクトに対する処理を共通化させるためにはSenderを使えばよい、という話がありますが、 どうすれば良いのか分かりませんので質問します。 次のようなサンプルプログラムを作りました。 Form上に複数のパネルを配置し、パネルをクリックしたらそのパネルのCaptionに、 グローバル変数のtxt(char txt[100];)を表示する、という処理です。 対象となる全てのパネルのOnClickイベントに、Panel1Click関数を指定し、次のように記述しました。 void __fastcall TForm1::Panel1Click(TObject *Sender){ TPanel *pnl; pnl = TPanel(Sender); // (1) pnl->Caption = txt; } このソースでは(1)がコンパイルエラーとなります。 Captionにtxtを表示する、という処理を共通化させるにはどうすれば良いでしょうか?
- Color構造体で型の代わりに式が必要の意味
Color構造体でビルド時、Color 構造体で型の代わりに式が必要というエラー(c2275)が出ます。対処法がわからず困っています。助けてください using nameplase ..Drawing class.. { ..Paint(..) { Color col = Color.FromArg(40,40,40); } } }
- C言語 バッファについて。
すみません。C言語を記述する際、バッファはどのように使われているのでしょうか?また、バッファがないとどうなるのでしょうか?なるべく簡単に教えて頂けると幸いです。
- C言語 共通ヘッダ作成の学習に関する事
共通ヘッダー作成の学習をしています。 共通ヘッダ <getputch.h> #ifndef __GETPUTCH #define __GETPUTCH #if defined(_MSC_VER) || (__TURBOC__) || (LSI_C) /* MS-Windows / MS-DOS系 */ #include <conio.h> #static void init_getputch(void) {} #static void term_getputch(void) {} #else /* Cursesライブラリが提供されるUNIX/Linux/macOS */ #include <curses.h> #include <stdio.h> #include <string.h> #undef getch #undef putchar #undef puts #undef printf #undef scanf static void init_getputch(void) { initscr(); refresh(); } static void term_getputch(void) { endwin(); } static int putch(int ch) { int result = addch(ch) == OK ? ch : EOF; refresh(); return result; } static int __putchar(int ch) { return putch(ch); } static int __printf(const char *format, ...) { int count; va_list ap; static char __buf[4096]; va_start(ap, format); vsprintf(__buf, format, ap); va_end(ap); count = printw("%s", __buf) == OK ? strlen(__buf) : EOF; refresh(); return count; } static int __puts(const char *s) { int count = printw("%s\n", s) == OK ? strlen(s) + 1 : EOF; refresh(); return count; } static int __getch(void) { int ch; cbreak(); noecho(); ch = getch(); nocbreak(); echo(); return ch; } #define getch __getch #define putchar __putchar #define printf __printf #define puts __puts #define scanf __scanw #endif #endif 私が使用しているOSはWindows10、 エディタ Visual Studio Code1.89.1 です。 コンパイルしたら<curses.h>のファイルが見つからない旨の エラーメッセージが出ます。 説明では、 _MSC_VER、__TURBOC__、LSI_Cは、それぞれVisualC++、 Borland C++(Turbo C++)、LSI Cの処理系で、処理系識別のために 独自に定義されているマクロです。 上記以外のMS-Windows用の処理系をお使いであれば、その処理系で 独自に定義されているマクロを追加する必要があります。 という事です。 もしかしたら、マクロを追加しないといけないのかもしれませんが 調べ方が分かりません。 どうしたら良いのでしょうか。ご指南を頂きたく投稿しました。
- 締切済み
- t-tanaka102
- C・C++・C#
- 回答数5
- C++をこれから学ぶ価値はありますか?
私はCとJavaとC#とKotlinとPythonのプログラミングができます。 Windows3.0がリリースされたころ、独学でボーランドのC++を学んだのですが、昔のことで詳しいことは忘れてしまいました。 質問の本題ですが、今後C++を使う仕事は残るのでしょうか? というか、現在C++は何を開発するのに使われているのでしょうか? OS自体やデバイスドライバ、コンパイラやVMは、ネイティブで高速に動くよう、Cで開発されていると聞きます。 アプリケーションはマルチプラットフォームで動くようJVMで動作するJavaが主流だったものが、Kotlinに移行していると聞きます。 C#もPythonもVM上で動くようになっています。 これらを考えるとCは高速で動作するプログラム向けでもマルチプラットフォーム向けでもなく、中途半端な気がします。 またC#のコードの方がC++よりもCに似ていて、取っ付きやすいようにも思います。ボーランドのC++ではiostreamなど使っていなかったような気がしますが。 【Cのコード】 #include <stdio.h> int main() { printf("Hello world!\n"); return 0; } 【C#のコード】 using System; namespace Example { class Program { static void Main() { Console.WriteLine("Hello world!"); } } } 【C++のコード】 #include <iostream> int main() { std::cout << "Hello world!" << std::endl; }
- C++入門書を紹介してください
次のようなC++の入門書を教えてください。 ・高校生でも理解できる丁寧な説明 ・Cの知識がなくてもわかる ・オブジェクト指向についてわかりやすく説明している ・C++そのものの機能をあまねく説明している ・ライブラリは使い方の簡単な説明で十分 カーニハンとリッチーが書いたCの入門書のようなもので、大学の教科書よりは読みやすいものを探しています。 どうかよろしくお願い致します。
- プログラミングで何を作るべきか迷った場合
windowsアプリで何かを作りたいのですが、作りたいものに迷った場合どうしたらよろしいでしょうか?
- 締切済み
- saya100111
- C・C++・C#
- 回答数4
- unityについての質問(地形)
unityでオープンワールドゲームを作ろうと思っています。mapの端にはこのような仕掛けをしたいのですがどうすればいいですか? ・マップの端に着くと進んでもずっと同じ景色が続く ・マップの中心に向かって進むと一瞬で元居た場所(端から先に進む前の場所)に戻る わかりにくい場合はgoogleで博麗大結界と調べてください。大体その仕組みをまねしてます。
- 締切済み
- youtuberninarit
- C・C++・C#
- 回答数1
- 配列を用いたリストでは使用されない領域が発生する?
応用情報技術者試験に絡んだ質問です。 まずは問題をご覧ください: 問題 リストには,配列で実現する場合とポインタで実現する場合とがある。リストを配列で実現した場合の特徴として,適切なものはどれか。ここで,配列を用いたリストは配列に要素を連続して格納することによってリストを構成し,ポインタを用いたリストは要素と次の要素へのポインタを用いることによってリストを構成するものとする。 正解の選択肢はこれ↓: リストにある実際の要素数にかかわらず,リストに入れられる要素の最大個数に対応した領域を確保し,実際には使用されない領域が発生する可能性がある。 解説: 配列で実現するリストの特徴です。配列を用いる場合は最大の要素数を格納できるだけのメモリ領域をあらかじめ確保する必要があります。1,000要素分確保しても実際の格納数が10要素程度だとすると、残りの990要素分のメモリ領域が無駄になってしまいます。 ・・・これって正しいですか? mallocで動的にメモリを確保して配列を作り、後にreallocで要素数を増やすことで無駄のない運用ができるはずです。自分はそれを知っていたので、この選択肢を選びませんでした。「可能性がある」で逃げてますが、それを言うなら、無駄なく使える可能性もあるわけで…。この問題、納得いかないです。 まずはmallocとreallocで動的に確保できることへの回答をお願いします。それから、この問題の妥当性についてお願いします。
- Visual Studio2022について
Visual Studio 2017で作ったProgram(ソリューション)を2022で開こうとするとエラーが出ます。また、2022で新たに作成したProgramを2022で開こうとしても同じエラー(HRESULT FAIL)が出ます。 2017では何の問題もなく開けたのですが、ご存じの方いらっしゃいましたらアドバイスお願いいたします。
- C++ デスクトップアプリケーションで作る電子印鑑
C#で透過画像を扱おうとしたら、全然うまくいかなかったので、C++で作ることにしました。(↓この質問でいただいた提案でC++で作っております) https://okwave.jp/qa/q10234511.html やりたいこと: ボタンクリックで画像をコピー 透過画像を扱いたくベクター形式で図形描画 ビットマップ:ラスター変換後、白背景 メタファイル:透過背景 ラジオボタンで選択式。 VS2022でプロジェクトを作成し、Win デスクトップアプリケーションを選んで生成されたコードをそのまま使用しています。 で、今、基本的な図形描画(ベクター形式)とボタンでのクリップボードにコピーまでやりました。 しかし、C#で起きた問題と似たことが起こっています。 問題:透過画像をメタファイルでクリップボードにコピーして、Adobe PDFに貼り付けができない。 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_COMMAND: { ※これの中に入っています。Copilotのコード内容カスタムしているだけなので、デフォルトのコードを全部理解できているわけではありません。「動けばいいや」くらいです。 Copilot(ChatGPTもGeminiも凝りました)の力を借りて、↓ここまでできましたが、肝心の貼り付けができません。ラジオボタンのif文の中ですので、抜粋しています。DrawContentはただの円の枠(DrawEllipseで描画)です。 // 描画内容をメタファイルに保存 HDC hdc = GetDC(hWnd); RECT rect; GetClientRect(hWnd, &rect); Metafile metafile(hdc); Graphics graphics(&metafile); // 描画内容を関数で行う DrawContent(graphics); // メタファイルのハンドルを取得 HENHMETAFILE hEmf = metafile.GetHENHMETAFILE(); // メタファイルをクリップボードにコピー OpenClipboard(hWnd); EmptyClipboard(); SetClipboardData(CF_ENHMETAFILE, hEmf); CloseClipboard(); // リソースを解放 ReleaseDC(hWnd, hdc); クリップボードの画像を解析すると、 EnhancedMetafile MetafilePict 2種類あり、クリップボードへのコピー自体はできているようですが、Office系にも貼り付けができません。 ビットマップにすると問題なく動いております。 正直なところ、WPFで作りたいところ(ベクター画像がキレイ)なんですが… 知見をお持ちの方、よろしくお願いいたします…
- 締切済み
- mathcube12
- C・C++・C#
- 回答数1
- 【NVIDIA Developer CUDA To
【NVIDIA Developer CUDA Toolkit】エヌベディアのCUDAはIDEですか?プログラマーのコーディングを助ける開発環境エディタなのでしょうか? ライバルのIntelにはIDEがないのでしょうか? AI開発はエヌベディアがインテルより優勢なのはハードウェアだけでなくソフトウエアも提供しているからだそうです。 CUDAは何ですか?
- ベストアンサー
- note11pro5G5
- C・C++・C#
- 回答数1
- C#(Windows Form)で作る電子印鑑
C#で電子印鑑を作っています。 前提として、私はプログラマーではありません。過去に大学の講義でCを受けており、コードの理解はできます。趣味程度でVisualStudio 2022とAIチャットを駆使して作っています。Framework 4.8.1 ChatGPTで限界を感じたので、ここで質問させていただきます。 ※ひたすらChatGPTで質問した後なので、補足がくどい場合があります。ご承知おきください。 ※質問内のコードが有効な方法かは知りません。普通はやらないコードも使ってるかもしれません。藁にも縋る思いです。すでにpng・メタファイル・ChatGPT・Geminiと格闘し続けて3週間以上です 一通りコードを書き終え、白背景で印影をAdobe ReaderのPDF(以下、単純に「PDF」と書きます)にCtrl+Vで貼り付けるところまで実装できました。BMP形式なので割とすんなりでした。もともとある画像を読み込んでいるのではなく、描画はすべてDrawLineやDrawEllipseで実施しています。 この白背景は、ラジオボタンで背景透過画像と切り替えできるようにしています。背景透過画像が肝心です。 今、実装できていないのが、この背景透過画像をPDFにCtrl+Vで貼り付ける動作です。 PDFに背景透過画像を貼り付けるコードにできますでしょうか?拡張メタファイル形式でコピーできれば貼り付けられると思うのですが… 下にも書きますが、Office系には背景透過画像の貼り付けが成功しています。 今のコードが以下です。if文内なので、usingでくくってます。ボタンクリックでクリップボードコピーです。 名前空間 using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Drawing.Text; using System.Globalization; using System.IO; using System.Linq; using System.Security.Cryptography.X509Certificates; using System.Windows.Forms; using System.Runtime.InteropServices; if文分岐内 using (Bitmap bmp = new Bitmap(diameter, diameter, PixelFormat.Format32bppArgb)){ using(Graphics g = Graphics.FromImage(bmp)) { g.Clear(Color.Transparent); DrawGraphics(g, h, x, y); (DrawGraphicsメソッドですべての描画を実施) } bmp.Save(ms, ImageFormat.Png); System.Windows.Forms.IDataObject dataObject = new DataObject(); dataObject.SetData("png", true, ms); Clipboard.SetDataObject(dataObject, true); bmp.Dispose(); ms.Dispose(); } } 透過画像なので、ImageFormatsやSetDataは"png"で指定しています。このまま実行すると、Office系のソフトには正常に透過画像が貼り付けられますが、貼り付け先がPDFだと貼り付けができません。ただし、Office系に貼り付けたあとの背景透過画像をそのままCtrl+Cでコピーし、PDFにCtrl+Vするとなぜか正常に貼り付けられます。Office系でコピーした時点で拡張メタファイルか何かに変換されているのでしょう… そもそも最初のbmpの時点で透過情報消えるやないか、と思っていましたが、Bitmapクラスは透過情報が保持できる?ようです。 そのため、C#のコード内でOffice系に貼り付け後のコピーの動作(おそらくpng→emf変換)を実装しようとしたのですが、 ImageFormats.Emf/SetData("emf")や、 ChatGPTにて ①png→メタファイル ②png→バイト列→メタファイル ③png→bmp→メタファイル(bmpの時点で透過情報が死ぬので不採用ですが、ChatGPTから提案され続けました。) など、すべて不発に終わりました。 ImageFormats.Emf/SetData("emf")、これに関しては、 コード内のbmp.Save(ms, ImageFormat.Emf);これの時点で、すでに変換に失敗しているようです。wmfにしてもダメでした(デバッグ開始でボタンを押すとnullが返ってくる) ラスター画像なので描画自体は少し汚いですが、WPFだと拡張メタファイルやクリップボードをうまく扱えませんでした… コピーの様子をみるためにWPFは途中まで書きましたが、メタファイルの扱いがうまくいきませんでした。私の知識がないだけかもしれませんが、有力な情報もヒットしません… その他情報必要な場合は追加しますので、よろしくお願いいたします。 アプリケーションの使用先OSはWin10/11です。
- ベストアンサー
- mathcube12
- C・C++・C#
- 回答数2