スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
過去スレ、関連リンクは
>>2-5 くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(
http://msdn.microsoft.com/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
4 :
デフォルトの名無しさん :2007/09/08(土) 21:45:02
∩___∩ | ノ ヽ/⌒) あばばばばばばばばばば /⌒) (゚) (゚) | .| / / ( _●_) ミ/ ∩―−、 .( ヽ |∪| / / (゚) 、_ `ヽ \ ヽノ / / ( ● (゚) |つ おちんちんびろ〜〜〜ん / / | (入__,,ノ ミ あばあばばばば | / 、 (_/ ノ | /\ \ \___ ノ゙ ─――、 | / ) ) /\ _ ヽ ∪ ( \ (⌒0 /\ ヽ (_ノ \,,_) `ヽノ / 、 )O ( </ / > ( 〈 (,,__(,,_ノ
○| ̄|_ あー!下手こいたー! 〃〃 ○/\〃 ノ <〃〃 ♪ズンチャ!♪ズンチャ! ♪ズンチャ!♪ズンチャ! 〇∧〃 / > < \ でもそんなの関係ねぇ! そんなの関係ねぇ! 〇/ /| /> はい!オッパッピー!!
>>9 それに対する回答は
「お前には作れない。既にあるものをググレカス。」
でもおk?
流れにワロタ
自作ポエムでも売るのかなぁ
ちょっと面白いと思ってしまったorz 質問マダー
19 :
◆XcB18Bks.Y :2007/09/09(日) 00:46:31
画面がパワーセーブモードや電力停止モードになっているかどうかを知る方法はありますか? ぐぐってみたところではSystemParametersInfoを使う方法が出てきたものの,これは使えないみたいで, 実際に手元の環境(XP Home)で試したところ,いずれもTrueがかえってきました.
そばつゆを吹いた
Delphiへたれぐらまのサッカー好きでゲーマーな学会員 まで読んだ
23 :
● :2007/09/09(日) 02:46:33
質 問 は ま だ か
Win32APIってVistaの次のOSでも使われるの?
うん、MSDN読め
26 :
デフォルトの名無しさん :2007/09/09(日) 03:28:14
質問というか、雑学なんだけど、MD5とかSHA−1とかの暗号技術ってさ、著作権料とか使用料とかかからないのかな?
掛かる掛からない以前に、お前には使う資格がない
>>26 とりあえず今は掛かってないが、使用したモジュールのライセンスによっては痛い目見るかも名
>>27 メッセージダイジェスト取扱技士の資格はどこで取ればいいですか?
ここで取れます。
私が試験官です。
アルゴリズム自体ではライセンス取れないんじゃなかったっけ?
>>28 のいうようにモジュールとしてならできるけど
>>33 特許が取られてるアルゴリズムは特許使用料を払ったりしないといけないかもね
GIFのことかー!
Linuxだとお金はらわなくていい。 ふしぎ!
37 :
デフォルトの名無しさん :2007/09/09(日) 18:53:24
CreateProcessで質問があります。 本に掲載されたまま一字一句同じように打ち込んでも 第二引数を指定すると確実に暴走します。 STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); ZeroMemory(&pi, sizeof(pi)); si.cb = sizeof(si); CreateProcess(NULL, TEXT("notepad"), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); 第一引数だと問題なくうごくのですが、何が原因か教えてください。 使用しているOSはVIStaで 飼っている犬は雑種です。 よろしくお願いします。
ふざけんなボケ
ネタなら埋まる前のスレ使ってくれ ネタじゃないならπが識別子に使えることを教えてくれてありがとう
ついでに BOOL CreateProcess( LPCTSTR lpApplicationName, // 実行可能モジュールの名前 LPTSTR lpCommandLine, // コマンドラインの文字列 Windows NT/2000:このパラメータで const 文字列(リテラル;文字列定数)を指定すると、この関数の Unicode 版である CreateProcessW 関数は失敗します。
>>39 &piが文字実体参照とみなされてπと表示されただけだろ。
本当は実体参照は、π というように最後にはセミコロンを付けないといけないのだが、
なくても勝手に実体参照として解釈してしまう糞ブラウザが広まったせいで…
>>42 のおかげで
>>38 ,39,41が怒ってる意味がやっとわかった。
>>40 はAdvanced Windowsにも注意書きがあったね。
俺が読んだ版では、「将来のOSでLPCTSTRに変更されるだろう」と書いてあったけど
Vistaでは落ちるようになったのか…。
Vistaじゃなくても落ちるがな
よくわかったな
>>42 専ブラだったからわからんかった
πなんて使えないんだから誰でも分かる
49 :
37 :2007/09/09(日) 20:56:11
>>40 ありがとうございます。
文字列定数であたえるのを変更したら動きました。
昼間からずっと悩んでました。
感謝してます。
> 本に掲載されたまま一字一句同じように どこの腐れ書籍かさらしageてよし
どうせ37が文字セットの初歩的説明を見逃してるだけ
52 :
デフォルトの名無しさん :2007/09/10(月) 09:21:45
エクスプローラと同じコンテキストメニューを開くにはどうすればいいのでしょうか?
shellapi
なんでここの人はMFC使わないの?馬鹿なの?
まだMFCとか言ってんの?馬鹿なの?
覚え立てで嬉しくなってるか、MFCでしか作れないんだろ。
どうせならWTLで
59 :
52 :2007/09/10(月) 13:19:32
>>53 FolderItem.InvokeVerbでコンテキストメニューの項目を実行できることなどは
わかったのですが、コンテキストメニュー全体を開く方法がわかりません。
もうちょっと情報をいただけないでしょうか?
MFCって「マクドナルドフライドチキン」の略だろ
62 :
52 :2007/09/10(月) 14:18:31
そんなに自分を卑下したらいけない
64 :
デフォルトの名無しさん :2007/09/10(月) 18:59:50
キーボードの入力判定について質問します。現在GetASyncKeyStateを用いて キーボードの入力判定を行っているのですが、別ウインドウがアクティブの場合 でも、キー入力を拾ってしまいます。 例えば、自身のプログラムと同時にメモ帳を起動してあるとき、メモ帳への入力 を拾ってしまう。 自身のウインドウがアクティブの場合のみキー入力の判定をしたいのですが、 GetASyncKeyStateでは出来ないのでしょうか。マイクロソフトのサイトでは、 GetASyncKeyStateの説明に 「他のスレッド( またはプロセス)のウィンドウがキーボードフォーカスを 備えている場合は、0 が返ります」とあったので出来るとおもったのですが…。 WM_KEYDOWNなどのメッセージ処理やDirectInputであれば可能なことは解っているのですが、 できれば使用したくありません。 わがままですみませんが教えてください。
GetForegroundWindow で自分のウィンドウがアクティブかどうか調べれば済むのでは
66 :
デフォルトの名無しさん :2007/09/10(月) 20:23:37
65さん 上手くいきました。ありがとうございました。
VC5で使える最後のSDKってどこかで手に入ります?
EnumWindowで質問があります。ム板で追い出されてしまいました... 諸先輩方よろしくお願いします。 ○やりたいこと ・PHP+Cで、PHPから外部exeを起動して任意のWindowのPrintScreen取得。 外部exeは常駐ではなく、PHPで指定されたときのみ実行。 ○質問 : @PHPからEnumWindowを使用した外部exeを起動すると、外部exe内のEnumWindowが期待通りに動かず、 意味のわからないハンドルを取得してしまいます。 ソースが学校のためうろ覚えですが、取得ハンドルのタイトルを見る限り、"Zend Timeout Window"とか"SENS"とか、 "○○WindowSocket?"のようなものが5つくらい取得されていて、Windowsアプリのハンドルは取れませんでした。 これは何でしょうか?回避方法を教えてください。 APHPで任意のWindow画面の画像キャプチャする方法があれば、ヒントを教えて下さい。 ○プログラム内容 : ・Cプログラム コンソールからWindow画像を取得するexeを作成しました。 起動時にWindowタイトルの一部を入力すると、その画像を取得します。不一致はデスクトップ画面を取得します。 EnumWindowでハンドル取得 -> Bmp作成 -> BitBlt -> ファイル保存の流れです。 コンソールからは正しく動作しています。 ・PHPプログラム 簡単な入力Formのみ。ボタンを押すと上記exeをsystem命令で起動しています。 ○環境 ・Windows 2000, Pen4 2G, MEM 512M ・Apache2.2.4, PHP 5.2.4 + zend debugger, VC6, eclipse + PDT
69 :
68 :2007/09/10(月) 22:58:59
>>68 ム板で追い出されたのではなくマ板でした。失礼しました。
Win32APIのスレッドですが、できればPHPの方もアドバイスお願いします。
宿題は宿題スレへ
PHP用のモジュールを作ればいいだけの話。
>>69 禿しくスレ違い。PHP板で聞いた方がいい。
全部一つのexeでやってしまえば解決
百個のexeでやってしまえば解決
>>68 Apacheがサービスとして動いているなら、
EnumWindowがうまく動いていないように見えるのは、
デスクトップが異なっているため。
ウィンドウステーションとかでググれば色々わかると思う。
サービスのプロパティで、
「デスクトップとの対話をサービスに許可」にチェックを入れれば、
そのプログラムはお前が思っていたとおりに動くようになるかもしれない。
ただし、セキュリティ上の問題があるかもしれないので、慎重にやれ。
一応API関係なんじゃないの PHPがサービスとして起動していて目的の窓と別セッションになっているとか
77 :
68 :2007/09/10(月) 23:27:30
>>75 どうもです。ウィンドウステーション知りませんでした。
プロセスが異なるぐらいは想像していたのですが、
検索キーワードがまったく思いつきませんでした。
ありがとうございます。セキュリティーは何とかなりそうです(多分)。
78 :
68 :2007/09/10(月) 23:49:22
多少和んだ
>>80 なんで?
キンタマみたいなのができそうだから?
どして殺すの( ゚д゚)
( ゚д゚ )なぜ殺した
84 :
68 :2007/09/11(火) 00:41:41
あはっwwwすでに殺されてるしwwwwwww ウイルス作る技術も度胸もありません。へたれなんでwwwwwwwwww セキュリティー絡みの監視ソフト作成してて、画面の定期的なスナップが必要だったのです。 皆様どうもです!
VC++6で生成したサンプルプログラムが 2005Expressでコンパイルできない(´・ω・`)
ありがち
>>86 がバカだからVC++6で生成したサンプルプログラムが
2005Expressでコンパイルできない(´・ω・`)
フリーソフトのLinkOpenとかでやっている、 「エクスプローラ上のファイルのアイコンを選択状態(シングルクリックした状態)にする」 のってどうやるんでしょうか。いわゆるシェルAPIを使うだと思うのですが、 扱ったことがなく見当がつきません。よろしくお願いします。
explorer C:\Windows,/select
おお! 今はもう時間が無いのでとりあえずですが 「ファイル名を指定して実行」で期待した振る舞いになるのを確認しました ありがとうございます
SJISベースのアプリ(のGUIなコントローラ)にUNICODEのファイル名を突っ込むと 当然変換時に欠落した文字がでてファイル操作等に失敗する可能性が出てきますが そういうのをなるべく小手先で対処する方法はないですか? 1. Unicodeなテキストをメモリ上にロード 2. 1.のメモリデータをSJISなAPIやコントローラ(ListBox等)に突っ込む 3. 2.のデータを取り出してファイル操作 <- ここでエラー 例えば1.2.の間でファイル名がSJISに変換不可と判明したら8.3形式にするといったことをやれば出来るのかなと漠然と考えていますが・・・
それでいいんじゃね
ハードリンクを作るとか
>>92 ファイル名だけ対応しているソフトは結構あるが;
パス名に対応していないソフトが多いですね。
ぜひ、がんばって対応してください。
UTF-8 に対応したソフトも増えてきたので、内部で UTF-8 でやったどうですか?
やったどう
殺した後に姦淫してやる
( ゚д゚ )なぜ犯した
復活させるため
100 :
デフォルトの名無しさん :2007/09/11(火) 21:31:18
そこに穴があるからさ!
特定のコントロールに文字を送りたいんだけどどうしたらいい?
そんな簡単な事も分からんのか死ね
103 :
デフォルトの名無しさん :2007/09/11(火) 22:50:40
おまえにはふたつあるが おれにはひとつしかないじゃないか しかもぼうがひとつおおいし… ありゃ2か… ありゃりゃ3か…orz
どんな風に渡すかにもよる 単純にSetWindowTextで済むなら楽だが
ゴメ 特定のコントロールに対してVBAのSendkeysの様に文字を送りたかったんだ。 sendkeyじゃ誰かが触ってアクティブフォームが変わったら送り先が変わってしまうので、 送り先を指定してkeyを送りたい。
ウィンドウ指定してWM_KEYDOWNでいいんじゃねーの
107 :
デフォルトの名無しさん :2007/09/12(水) 00:51:33
初歩的な質問で申し訳ないのですが、タイトルバーの横にあるMINBUTTONやCLOSE BUTTONって、 どうやってメッセージを捕まえるのでしょうか?ご教授よろしくお願いします。
>>107 GetMessage
WM_SIZE
WM_CLOSE
WM_SYSCOMMAND
>>108 >>109 ご教授ありがとうございます。
WM_SYSCOMMANDで欲しいメッセージを捕まえることができそうです。
ありがとうございました。
作ってるアプリの機能がかなり増えてきて コールバック関数がものすごく肥大化してきました。 これはやむを得ないことなんですかね?
いいえ
どうすりゃええのん
例えばウィンドウプロシージャなら、 メッセージクラッカみたいに――あるいはそれを使って―― メッセージ毎に関数を分割するという手がある。
茸っぽい 茸は文学ではない
メッセージクラッカですか そういうのがあるんですね ありがとうございました
デバイスコンテキストに対して、特定の座標の色の取得・設定はGetPixel, SetPixel(V)を使うしか方法はないですか? 速度が遅いので、他の方法を使いたいのですが。(TextOutとかはどうやって描いてるんだろう…
>>118 ありがとうございます。
一旦CreateDIBSectionで作ったビットマップにBitBltしてコピーし、
そこで直接データを読み書きして、その後、元のデバイスコンテキストへBitBltして戻す、という方法が思いつきました。
早速書いてみます。
現在、汎用的な関数として、 GetLastErrorからFormatMessage, MessageBoxへの連携処理を考えています。 ここのGetLastErrorで返されるエラー値なんですけど、 この値からメッセージの分類(クリティカル・警告・情報...etc)とか 判別できるものでしょうか? できるのであれば、その手法を教えていただけませんか? ちなみに、皆さんはどうしています?
思想を改める必要がある GetLastErrorはあくまで補助的なものであって、本来やりたかった処理が失敗したことを通知することが最優先。 FormatMessageで得られるエラー原因は追加で表示してユーザーの参考にさせる程度が関の山。
HRESULTはビット毎に意味があるけど、GetLastErrorはビット29以外は 見た覚えがないな。
123 :
120 :2007/09/12(水) 14:57:04
>>121 なるほど、割り切って内容だけを表示させることに勤めます。
>>122 HRESULTの資料を見て、
>>120 を考えてみたんですが、
ダメそうです。
お騒がせしました。
124 :
デフォルトの名無しさん :2007/09/12(水) 21:25:05
hMenu = LoadMenu(NULL, _T("IDR_MENU")); SetMenu(hWnd, hMenu); MENUITEMINFO menuItemInfo; ZeroMemory(&menuItemInfo, sizeof(menuItemInfo)); menuItemInfo.cbSize = sizeof(menuItemInfo); menuItemInfo.fMask = MIIM_TYPE; menuItemInfo.fType = MFT_STRING; menuItemInfo.dwItemData = TEXT("追加された"); //InsertMenu(hMenu, 15, MF_BYCOMMAND, 16, _T("追加された")); InsertMenuItem(hMenu, 15, FALSE, &menuItemInfo); DrawMenuBar(hWnd); 「追加された」が追加されず、セパレータになるんですが、どうしてですか? InsertMenu の方だとちゃんと追加されます。 WinXP SP2 VC++2005
dwItemData = TEXT("追加された"); は dwTypeData = TEXT("追加された"); じゃないかな ぱっとみだから間違ってたらすまんこ
126 :
124 :2007/09/12(水) 21:41:50
>>125 ありがとうございました。
全然、気づかなかったです。名前が似てるから・・・
無事に、追加されました。
とある人力検索にて Q:Web2.0が遺した物って何ですか? A:DoCoMo2.0です
あるソフトのウィンドウ(syslistview32)にコンテキストメニュー を表示しようと思い、 PostMessage(hWnd, OS.WM_KEYDOWN, VK_APP, 0); PostMessage(hWnd, OS.WM_KEYUP, VK_APP, 0); を実行しましたが何も反応がありませんでした。 別のソフトであればコンテキストメニューが表示されます。 やり方が間違っているのでしょうか? ちなみに右クリックした瞬間(押し下げた瞬間)にメニューが 出るソフトと、クリックし終わった瞬間(押し上げた瞬間)に 出るソフトの両方があるんですね。
単純にそのソフトがそのキーを拾ってないだけじゃないの
WM_CONTEXTMENUを送ったらどうだろう?
spyを使おうぜ
>>130 できました!!
WM_CONTEXTMENUはコンテキストメニューが開くときに
自動的に送信されているんだと誤解してました
>>131 spyってwinspectorのことですか?
ウザイからどっか行って
どうしてもわからんので教えてください! libpngとlibjpegを使っているのですが 片方ずつ使う分には問題ないのですが両方のlibを使おうとすると LINK:2005エラーが出てしまいます。最初ランタイムが違うのかと libの方を確認してビルドし直したりしたんですがどうやらそういう問題 ではなさそうです。何か解決法はあるのでしょか? 呼び出し方はこんな感じです。 #ifdef _DEBUG #pragma comment(lib, "libjpegd.lib") #pragma comment(lib, "libpngd.lib") #else #pragma comment(lib, "libjpeg.lib") #pragma comment(lib, "libpng.lib") #endif
135 :
134 :2007/09/13(木) 17:03:16
Σ(・∀・ )勘違いでしたすみません解決しました><
プログラムを動かしてるOSにないAPIを使ったらどんなことが起こるのでしょうか。 例えばWin9xでW系APIや、Win2000でuxthemeのAPIなどです。 その関数が実行されないだけとか、何かエラーが発生する、そもそも起動できないとか。 試す環境がないので聞いてみました。
爆発する
>>136 スタティックリンクならエントリポイントが見つからないとかなる
動的リンクなら実行されないかエラーになる
9xのW版APIはエントリポイントだけあるはず。 そして稀にMessageBoxWやTextOutWなど機能するものがある。
141 :
デフォルトの名無しさん :2007/09/13(木) 22:55:24
dllからアタッチしたプロセスIDやウインドウハンドルとか取得するには何を使えばいいんですか。 ヒントください。
あたっちすれっどなんとかとか
>>140 忘れてけどそういえばそうだった 単純に失敗を返すだけの実装になってるんだった
で、たいていRegisterClassで失敗して無言でWinMainを終える、と
プログラミングWindowsで、RegisterCassExが失敗したら MessageBoxで9x非対応というメッセージを表示して終了するコードを見て、 なるほどと思った。
145 :
141 :2007/09/13(木) 23:19:59
>>142 ありがとん
DWORD GetCurrentThreadId(VOID);を見つけました。
>>140 MSLU使えば強制ANSI変換で一応動くはずだしな
>>146 つい先日、MSLUの浮動小数点のバグではまった。
だがすぐに抜け出した。
そしてまたはまった。
なんかエロい話だな
151 :
デフォルトの名無しさん :2007/09/14(金) 02:56:13
出して、入れて、出して、入れて、これがプログラムの基本です。
SNEG?
挿入が先だ。POPは後だ
朝からinserterだのpush_backだのと
Oh,Yes!Come on Fuck me!!
156 :
デフォルトの名無しさん :2007/09/14(金) 07:10:43
Yes,pussy
Shell_NotifyIcon の uTimeout が10秒より短くしても無視される件、 突破する方法しりませんか? 3秒がいいんだけど。
The system minimum and maximum timeout values are currently set at 10 seconds and 30 seconds, respectively.
通知アイコン専用スレッド作っちゃえ。 Shell_NotifyIconがタイムアウトするのは、 別の重い処理が走っているという事だから、 焦らず待ってもいい気はするけどね。
shit
161 :
157 :2007/09/14(金) 18:13:00
>>158 それは読んだ。レジストリとかで変更できるのかな。
まさかシステムのDLLにハードコードされてるのか??
>>159 szInfoにNULLを渡すと消せるみたいなので、自分でタイマ制御するかな。。。
162 :
デフォルトの名無しさん :2007/09/14(金) 20:32:52
もしスレ違いだったらすみません。 ウィンドウを複数表示させて(子ウィンドウなど)、 ひとつのウィンドウをドラッグして移動させたら、 他のウィンドウも一緒に移動するようなことってできないんですかね? グループ化のようなことです。
>>162 ハンドル保持してるんなら
WM_MOVEとかで設定したら?
WM_MOVING
素朴な疑問です。 皆さんにとってTCHAR型は現役ですか? typedef std::basic_string<TCHAR> tstring; とか #ifdef UNICODE とか、 もうそんな時代じゃないのでしょうか? コード量を増やし、可読性を下げる、ゴミ虫のような存在でしかないのでしょうか?
TCHARで思い出したけど。 Win32APIのワイド文字はあくまでWCHARであり、wchar_tは違うよね。
俺はTCHARを現役にさせている。
使わないけど目の前にWindows 98マシンを置いている影響かも。
しかし、#ifdef UNICODEはメインのコード中には出現させない。
比較的ライブラリ的な部分で吸収するようにしている。
>>167 そうかもしれないけど、
でもきっとみんなごっちゃに扱っているよ。
少なくとも俺はそう。
俺も現役だな。 文字列は LPCTSTR とか _T() で囲ってたりする。 ただ tstring も使ってはいるんだけれど、 サロゲートペアの問題により TCHAR* 変数を ++ した所で次の文字を指す保証は無いと知って、 CharNext() を利用する CString の方が安全という事を最近知った。
VC2005でプロジェクト作ってまずするのは、「マルチバイト文字セットを使用する」
はい、
>>166 はゴミ虫のような存在でしかありません。
> TCHAR* 変数を ++ した所で次の文字を指す保証は無いと知って、 どうして?
ごめんサロゲートペアって書いてあるな
>サロゲートペアの問題により
漏れはTCHAR撲滅 STLでstd::string使うようにした コードはUTF-8 API呼ぶときだけWCHARにして渡してる 戻り値も変換してから使う 無駄なこと考えなくて済むようになったので プログラミングに専念出来るようになった
std::stringにUTF-8を突っ込むとな?
かぶった...orz
181 :
169 :2007/09/15(土) 02:44:40
182 :
デフォルトの名無しさん :2007/09/15(土) 02:52:03
質問です。 VB6 でファイルのプロパティ(バージョンや製品名など)を取得するのに GetFileVersionInfo等を使っています。 ロケールIDをVerQueryValueで取得できたので、言語名をGetLocaleInfo(ロケールID, LOCALE_SENGCOUNTRY)で 取得すると、"Japan"という英語の文字列が返ってきました。 しかしシェルの「ファイルのプロパティ」で表示されるのは「日本語」や 「英語(米国)」など日本語の文字列です。 これを取得するにはどうしたらいいんでしょうか?
ジャパーン♪
FAR PASCALとかNEARって書いてあるコードをたまに 見かけますが どういう意味があるんですか?
16ビットの名残
_stdcallとか_cdeclって書いてあるコードをたまに 見かけますが どういう意味があるんですか?
聞く前にドキュメント嫁
ググれ
ドキュメントなんてないし ぐぐってもでないからきいてるんだよ わかんないなら書き込むなよ
すいません 調べたらなんとなくわかりました スレ汚しすまそ
>>182 MSDNよく読めや、ボケが。
と言いたいところだが、これに関してはwinnls.hを直接読んだ方が遥かに手っ取り早い。
たぶん、必要なフラグは LOCALE_SNATIVELANGNAME だと思う。
193 :
デフォルトの名無しさん :2007/09/15(土) 11:14:18
クイズの答えをEditコントロールに入力し、 その文字列を取得し、比較し正解か不正解か というものを作りたいんですが、文字列を取得する方法を教えてください。 一応調べたら、GetWindowTextではできないってことはわかったんですが・・。
次の質問をどうぞ
195 :
193 :2007/09/15(土) 11:37:50
すみません。自己解決しました☆GetWindowTextでできました。
おめでとう☆
197 :
デフォルトの名無しさん :2007/09/15(土) 15:42:58
以前、マウスカーソルの移動とキーの自動入力を行うプログラムを作る必要があり、 その時は、調べて解決したのですが、今調べるとどうしても見つかりません。 たしか、APIをコールした後、開放しないと入力を受付けなくなるタイプと、 入力を受付けるタイプ(たしか、こちらは非推奨だったような)の二つがあったと思います。 そのような、マウスカーソルの移動とキーの入力を行う APIの名前をご存知のかたがいらっしゃったら教えてください。
チートしたいから教えて下さいってはっきり言えや
チートしたいから教えてください!
ISAPIでのメールスロットについて悩んでおります。 まず、メールスロットのサンプルプログラムを作りました。 HANDLE hSndSlot = CreateFile(SLOTNAME, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ) ; この通りにCreateFileしますと問題なくハンドル作成できます。 次にISAPIのDLLの中で全く同じCreateFileの一文を書いたのですが、 ERROR_ACCESS_DENIEDのエラーになってしまいます。 (CreateMailSlot無しですと、ISAPI-DLLの中でもERROR_FILE_NOT_FOUNDが返ってきます) ISAPI-DLL内でCreateFile()に失敗する原因としてどのようなものが挙げられるでしょうか。 二時間以上悩んでおりますが全く抜け出せません・・・
セキュリティー上危なくない?
すみません。 OleLoadPictureを使ってjpegを読み込みたいのですが、 読み込んだ直後にIPicture::get_Height、 get_Widthでサイズを取得すると、 実際の画像の大きさよりかなり大きな値になりました。 例えば113 は 2990に、640は16933になります。 OleLoadPictureの戻り値は正常です。 何か原因でしょうか?
>>203 なるほど。おかげ様で正常にピクセル単位に変換できました。
ありがとうございました。
205 :
デフォルトの名無しさん :2007/09/16(日) 00:50:29
>>192 回線切ってwinnls.h を読んできました。なんとかなりそうです。
SENGCOUNTRY って、English Country のことですね。
そこら辺に落ちてたサンプルの作者が分かってなかったみたいです。
人のせいにします。
ありがとうございました。
このスレの人たちはMFC使ってない人が多いのかな? 個人的にはMFCきらいなんでWin32そのまま使ってます
MFCは別スレなんだから、ここは使ってない人が多いのは当たり前。
208 :
デフォルトの名無しさん :2007/09/16(日) 01:10:04
>>205 一応追伸
俺が求めていたのはLOCALE_SLANGUAGE(localized name of language)
だったようです。では。
209 :
200 :2007/09/16(日) 08:46:51
もう5時間試行錯誤しているのに さっぱり進めないッスorz
>>209 ISAPI全然しらんけど
MSDNライブラリの「Reading from a Mailslot」っての読んだ?
213 :
デフォルトの名無しさん :2007/09/16(日) 09:27:23
SHFileOperation でフォルダ・ファイルのコピー等の操作をしています Explorerでは、出てくるダイログが最前面表示でしっかり出てきますが、 Flagの設定等でそれと同じようにできるでしょうか、教えてください。
できます
>>209 正直IIS全然詳しくないけど、ISAPIってNetworkServiceで動作するんじゃないの?
メールスロットの作成元がよく判らないけど、
既定では作成ユーザかSystem位しかアクセスできないような気がする。
216 :
デフォルトの名無しさん :2007/09/16(日) 09:41:25
bool(BOOL)は扱いが楽だが、たまに情報量が少なくて戻り値型を変えてほしいと思うケースがある
HRESULTにしろってか
>>214 ところで、Flag引数のバリエーションにはヘルプによると
fFlags
FOF_ALLOWUNDO
FOF_CONFIRMMOUSE
FOF_FILESONLY
FOF_MULTIDESTFILES
FOF_NOCONFIRMATION
FOF_NOCONFIRMMKDIR
FOF_NO_CONNECTED_ELEMENTS
FOF_NOCOPYSECURITYATTRIBS
FOF_NOERRORUI
FOF_NORECURSION
FOF_NORECURSEREPARSE
FOF_RENAMEONCOLLISION
FOF_SILENT
FOF_SIMPLEPROGRESS
FOF_WANTMAPPINGHANDLE
FOF_WANTNUKEWARNING
とありましたが、これ以外にもありますでしょうか?該当の内容のFlagが
見つけられずにいます、よろしければご教示のほどよろしく!
ヘッダ眺めれ
hwnd
>>220-221 hwnd ではゼロポインタを指定しています。これを別のものに設定すると
可能になるでしょうか。
じつはWin32APIはほとんどこれしか使っていない.NETユーザーなもので
この辺のことがよくわかりません。すみませんが、よろしくお願いします。
>>222 C言語暦1ヶ月のわて思うに
hwndをゼロポインタにしてるから、SHFileOperationがいじけたんじゃね!
ゼロ以外のhwndにしなきゃ駄目なんじゃない。とにかくゼロ以外の、たとえば
1とか2とかに変更して試してみたらいいんじゃね。オーナーウインドウが何か知らないけど、
出来ればオーナーウインドウのHWNDが指定できると申し分ないと思うんだけど。
>>223 あなたのいるプロジェクトは危険だというのが
その文章からヒシヒシと伝わってくる
上達にするようにがんばれ。超がんばれ。
オーナーを指定すれば、必ずその上にウインドウが来ると言うだけの話。
>>224 わてはプロジェクトにいないづら。学校に居て教室で講義子守唄にzzzz
間違ってC言語の授業とってしまった,orz。
Cは一々型を指定しなきゃならないから鬱陶しいなり。
動的言語が主流の時代にC言語を教えてる学校だから、やっぱ危ないよなわての学校
何でここにおんねんw
その主張は重々わかるんだが、それでもソフトウェアする上で避けられないのがCなんだよなあ。 Java, C#マンセーな俺だがそれでもC使えないヤツはだめだと思う。
>>227 宿題スレ行くつもりが、スレタイよくを見ずにクリックしたらココが現れたなり
これ何かの縁づら。
はいw雑談スレになりましたw
>>226 学校の授業はそれくらい保守的なのが相場。
東大ってことしからpython教えてなかったか?
234 :
222 :2007/09/16(日) 17:28:32
>>223 どうもです。確かな縁で教えていただくことができました。助かりました!!
>>225 あーそうだったんですか、、やっとわかりました。うまくできているのですね!!
みなさんどうもありがとうございました!!
Windows画像とFAXビューアの高速版を自分で作ろうとしていたら、 FindFirstFile、FindNextFileでは、エクスプローラで表示されている順番で ファイル名を取得することができませんでした。 例えば、更新日時でソートしてあるフォルダでは更新日時順に画像を表示したいです。 適切なAPIがあれば教えて下さいませ。
RegQueryValueEx
IShellFolder, IShellFolder2
>>236 >>237 そのキーワードで検索して色々と知ることができました。
後は自分で調べていきたいと思います。
どうもありがとうございました。
239 :
200 :2007/09/16(日) 21:53:54
IISの権限の問題でした。 admin権限で動かしてみたところ成功いたしました。 レスくださったかたありがとうございました。
InsertMenuItemでMENUITEMINFOを指定しますが、メニューの 文字色を変えるにはどのようにしたらいいのでしょうか? fTypeをMFT_STRINGにすると色を指定できないようですし
MFT_OWNERDRAW を指定して自分で描く
>>241 こんな時間に即レスthx
トライしてみます
243 :
デフォルトの名無しさん :2007/09/17(月) 10:15:08
VC についてるspy++なんですが、アプリ起動の際に、メッセージ横取りを禁止させる関数ってあるんすかね?
244 :
デフォルトの名無しさん :2007/09/17(月) 10:16:04
無い
245 :
243 :2007/09/17(月) 10:20:28
関数といったのが、まずかったか・・・方法でもいいんですけど・・・ 凄い人が集まってそうなので聞いてみたんですが、アプリ解析対策とかしないんですか?
逆に聞きたいのだが、>243からどうやったら>245の意味を読み取れると思うのだ?
フックを禁止する方法が無いんじゃね kernel32に手出ししてみるとか?
248 :
244 :2007/09/17(月) 10:24:19
メッセージ見られるとやばいようなら最初からCUIにするよ
故意か天然かしらんけど、煽り口調になってるぞ。 煽ってもなにも出ないばかりか、袋にされるだけさ。
rootkitみたいなものを作って叩かれたいマゾなんだね。
チートしたい人とチートされたくない人って似た質問するんだよね
敵を知り己を知ればなんとやら
メッセージレベルでクラック対策しようってのがそもそも間違ってる
そういえばそんなフィルタドライバのソースがどっかに転がってたな 読もう読もうと思っててそのままURLもとろも失くしてしまったが
もとろも! orz
,-、 ,.-、 ./:::::\ /::::::ヽ /::::::::::::;ゝ--──-- 、._/::::::::::::::| /,.-‐''"´ \:::::::::::| / ヽ、::::| / ヽ l \ l .| ● / | l , , , ● l にゃんだばかやろー ` 、 (_人__丿 、、、 / `ー 、__ / /`'''ー‐‐──‐‐‐┬'''""´ ./ ___ l __ l ./ / |/ | `ー-< / ./ ./ `ー‐--{___/ゝ、,ノ
フックされても問題ないように パラメータを暗号化すれば医院で内科医
259 :
デフォルトの名無しさん :2007/09/17(月) 13:53:37
文字列テーブルの文字を使うのに 文字配列用意してそこにコピーしないとだめっていうのは 面倒ですねぇ・・・。 文字配列の大きさの問題(文字列が入りきらない可能性)もあるし。 無駄に大きな配列用意するのもどうかなってかんじ。
よくわからんが、必要なサイズぴったしに malloc すればいいんでないの?
ListBoxとか使うときに 自分で持ってる構造体があるのに API用にもうひとつ作ってコピーしないといけない理不尽 のことを言ってるのかな?
>>261 >API用にもうひとつ作ってコピーしないといけない理不尽
コピーした領域をOSに渡す形なら、OS側は任意の時点で領域解放できる。
・アプリが持っている領域を、直接OSに渡した場合、その領域を解放するタイミングを知るスマートな方法はあるか?
(OS側の処理が先に終わった場合、アプリに、その領域を解放してよいか問い合わせるのか?
それとも、解放要求をアプリに対して発行するのか?
どちらも本末転倒でしょ?)
263 :
262 :2007/09/17(月) 17:08:04
ニワトリが先か、タマゴが先か論争に発展してきますた。
Javaや.NETはもう一度コピーしてるんだからまだマシ
そもそも
>>259 はLoadStringの話に見えるのは気のせいか?
269 :
デフォルトの名無しさん :2007/09/17(月) 21:25:47
そうなんです。 LoadString で文字列を取り出すとき 文字列の長さを気にせずに柔軟に取り出せる良い方法ないのかなぁと悩んでます。 いろいろ調べて MFC か ATL 使えばいけるのはわかったんですが Windows プログラミングの勉強はじめたばかりで 両方ともよくわかってないんで とりあえず MFC も ATL も使わないで出来る方法ないのかなぁと悩んでたんですけど 三日ぐらいあれこれ考えたんですけど コレといったのが見つからないんでもう悩むのやめます。
それならLoadResourceとかを使えばいいんだよ。 俺もやった。リソース内ではUTF-16LEのくせに、 なぜか9xがLoadResourceWを実装していないというケチさのおかげで。
NULLを含まない格納した文字数が返るのだから nBufferMaxの値-1 が返ってきたときはたぶんバッファを増やさないといけないと判断できると思う 最初 260 とかでスタックにとって、それで足りなそうな場合だけ動的に 260*2 。 それでもだめなら 260*2 *2 。それでにだめなら 260*(ry って感じか?
俺はめんどくさいからそんな仕様にしない
ネットで勉強してウィンドウとメニューバーまでは作れるようになったけどあと がまったくわかりません(´・ω・`) フリーソースのを見て勉強するのがいいってよくみるけど読んでみてもチンブンカンブン 需要はあるはずなのになんでWin32APIの書籍ってこんなに少ないんだろ… どこかいいサイトか本ありませんか?
>>271 そーいやリソース文字列は、最大65536バイトまでだったけ?
>>273 知識つけたきゃテンプレの猫とかAPI入門嫁
アドバイスしとくと、どこまで覚えるかより何をしたいかが重要だったりする
それと人のソースはあくまで一例と捉える
>>275-276 d 猫ってAPIのもあったのね。HPは見づらいから今度探して買ってくる
283 :
262 :2007/09/18(火) 02:02:37
>>279 猫は「apiの使い方の外枠をつかむ」目的に限定した方がいいです。 コードは問題ありすぎ……。
(コーディングに関しては、オライリーの牛本を参照してください。)
ページが見づらいのは「書籍を買ってくれ」って事なのかね?
みんな死ななくていいよ
286 :
デフォルトの名無しさん :2007/09/18(火) 04:08:18
ツールバーのちらつき対策で質問があります。 ウィンドウサイズを変更するとツールバーがちらついて困ってます。 メインウィンドウは仮想画面化してるのですが、ツールバー部分はHDCがなくてちらついてしまってます。 書き換えタイミングを0.1秒単位にづらすとかはやりましたが軽減できてもちらつき自体をなくす事はできませんでした。 どういった解決方法があるでしょうか?ご教授お願いします。
子ウィンドウをクリッピング領域からはずす
背面消去をなくす
289 :
286 :2007/09/18(火) 04:30:28
>>287 すみません。クリッピング領域から外すということは書き換えないってことでしょうか。。
今のサイズ変更部分はこうなってます。
case WM_SIZE:
MoveWindow(hTool, 0, 0, LOWORD(lParam), 50, TRUE);
break;
出来ればもう少し詳しくお願いできないでしょうか・・・orz
ツールバー作成時に WS_CLIPCHILDRENとWS_CLIPSIBLINGSを追加 試してない
291 :
290 :2007/09/18(火) 04:34:01
ごめん超勘違いしてた 俺のは忘れろ
>>286 うろ覚えだが
メインウィンドウのクラスのスタイルから、CS_HREDRAW、CS_VREDRAWをはずすか、
またはメインウィンドウのWM_ERASEBKGNDで何もしないように対処すればよいと思われ
293 :
286 :2007/09/18(火) 10:33:24
>>292 既にそれは、やってしまってるんです。。
それでもちらつくんですよね。。
今も悩んでいて、面倒臭いですが一つ一つのボタンにハンドルを持たせればクリアできるのはないかと考え、
プログラム作成中です。
気になるのなら自前で描くしかない
ちらつくのは所詮描画の問題なので、普通に考えれば メインウィンドウの背景(WM_ERASEBKGND)、メインウィンドウの描画(WM_PAINT)、 ツールバーの背景、ツールバー自身の描画 のいずれかで無駄な背景初期化を行っているくらいしかないと思うのだが メインウィンドウの仮想画面化とかツールバー部分のHDCって何? あとボタンにハンドルに持たせるとかも意味が分からない ツールバーの描画で何か特別なことやってる?
296 :
286 :2007/09/18(火) 11:13:46
>>295 ツールバーにHDCみたいなのあればメモリ上にメモリDC取ってちらつき対策できないかと考えてました。
ハンドルというかボタン一つ一つにHWND型で持たせてクリアしようかと。。ツールバーの場合、ツールバーのHWND
単体でサイズ変更してるため、ちらついてるんじゃないかと考えています。
>>296 ツールバーはOS標準のコントロールなんだから単体で対処可能なちらつき対処くらいやってるだろ
そんなことに力をそそぐくらいなら、
>>292 あたりもう一度見直したほうがいいのでは?
スタイル設定したつもりが反映されていないとか
メッセージハンドラを定義してみたけど名前が違ってたりして呼び出されてないとか
実はメインウィンドウの子のビューがツールバーと重なっていて、ビューの背景消去が問題だとか
標準コントロールはちらつき対策なんて元から考えていないが、 対処くらいやっているだろうとか考えられてしまうそのおめでたい頭がうらやましい。
そもそもツールバーってちらついたっけ? VC2005+MFC+WinXPSP2だと、ToolBarのみとReBar+ToolBarの構成で作れるが、 どちらもちらつきは発生しなかったぞ。 昔のMFC自前実装の奴(ペイントとか)はちらつくけど。
>>298 いや言い方はよくなかったもしれないけど、そんな高度なことを議論する
つもりはなくて、普通メインウィンドウのリサイズで気になるほどちらついたり
はしないんじゃないのってことを言ったつもりだった
そうでないと、ツールバーを使う人は全員描画のカスタイズをしないといけなく
なるけど、自分でもそんなコードは書いたことがないし、それで特に気になったこともない
>>286 の気にしているのがどの程度なのかは知らないので断言はできないけど
ちらつく理由を考え、それがあってるか検証し、 それを元に対策を考える。
>>299 言われるまで気づかなかったが、最近の標準コントロールはちらつかないな。
Explorerのウィンドウをムキになってリサイズしてみたが悔しいほどちらつかないw
ツールバーよりウィンドウの幅が狭くなったときに出る>>のマークだけがちらついてる。
チラリズム
WM_SIZE時、TOOLBARにWM_SIZEを送る クライアント部分は子ウィンドウにしてToolbarと重ねない
専門用語でフリッカーと言うんだよ
>case WM_SIZE: >MoveWindow(hTool, 0, 0, LOWORD(lParam), 50, TRUE); >break; なんかこの辺が間違ってる気が
308 :
286 :2007/09/18(火) 19:24:40
>>306 サイズ変更時に書き換えなさいって命令なので、その部分をカットすればちらつきませんが、
その場合、サイズ変更時ツールバーが変になってしまうので・・・。
検証の結果、ボタン一つ一つにHWNDを持たせるか、
>>294 さんの言うようにオーナードローで描くか。
現在は、この2択です。もっと簡単にできないか、考えて見ますね。
MoveWindow の最後の引数ってなんだっけ。
∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ <こいつ最高にアホ 彡、 |∪| / / __ ヽノ / (___) /
∩_
〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつ最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
>>313 >>308 最後の引数には気付いている。
おかしいのは最後の引数ではない。
そもそもツールバーをAPIで作ったときにMoveWindowなんて書いた記憶が無い件
そもそもメインウィンドウは仮想画面化してるとか ツールバー部分はHDCがないとか言う不思議君だから リサイズでMoveWindowくらいするだろう
検証もせずに批判ばかりする奴より、検証しようと努力してる奴の方が俺は好感を持つ。
318 :
182 :2007/09/18(火) 23:51:20
すみません GetLocaleInfo() でファイルの言語を取得できるようになったんですが、 .net で作ったexeの場合、自分で取得すると「日本語」が返ってくるんですが 「ファイルのプロパティ」だと「ニュートラル言語」になってるんですが、 どうすりゃ取れるんでしょうか。
>>319 MoveWindowはダメとかSendMessageとか命令の問題じゃない気がするが・・・
試しに俺が検証してみた。
* ツールバーを作成する */
hTool = CreateWindowEx(
WS_EX_TOOLWINDOW, TOOLBARCLASSNAME, NULL,
WS_CHILD | WS_VISIBLE | WS_THICKFRAME,
0,0,0,0,
hWnd, (HMENU)IDR_TOOLBAR, hInst, NULL);
ボタン略。
>case WM_SIZE:
>SendMessage(hTool, WM_SIZE, wParam, lParam);
>break;
ちらついてるじゃねーか。orz
>>320 俺も今試してみたが(WinXP SP2)、特にちらつきはないぞ?
//ツールバー作成部分(ボタンは2個)
hToolBar = CreateToolbarEx(hWnd, WS_CHILD | WS_VISIBLE, ID_TOOLBAR, 2,
hInst, IDB_TOOLBAR, tbb, 2, 0, 0, 16, 15, sizeof(TBBUTTON));
//他は省略
ベースはVC2005のWin32アプリのウィザード生成物で、ツールバー処理追加以外に以下を修正
×wcex.style = CS_HREDRAW | CS_VREDRAW;
○wcex.style = 0;
×wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
○wcex.hbrBackground = (HBRUSH)NULL;
なお、WM_SIZEの追加コードは
(a)SendMessage(hToolBar, WM_SIZE, wParam, lParam);
(b)MoveWindow(hToolBar, 0, 0, LOWORD(lParam), 50, TRUE);
の両パターンを試したがどちらも問題はなし
>>321 ちらつきの考え方の違いかな。。
ウィンドウの枠、右部分を(マウス左)ドラッグして左右に振ってみて欲しい。
ツールバーのボタンがちらついてない?
俺もCreateWindowExとCreateToolBarExだと違いがあるのかと思って両方試してみたが
両方ともちらつかないか?俺も気になってきたw
323 :
322 :2007/09/19(水) 02:27:21
補足 ちらつきが分かりやすいように、ラージサイズのアイコン使用中。
ちらしの裏にでも書いてろ低脳
Vista使えばちらつきなんて気にならん
>>322 OSは何?
こちらで試したプログラムでは、メニューの文字はわずかにちらつくが、ツールバーは
それよりずっと安定していて目で認識できる範囲のちらつきはない
ボタンのデザインはグレーの背景に手書きで1、2と書いてあるだけなので
目立ちにくいかもしれないが、少なくともメニューと同じくらいちらついてくれれば確実に分かる
327 :
322 :2007/09/19(水) 02:40:27
>>326 環境 (WinXP SP2)
ボタンのデザインは、既存のBMP。フォルダアイコンのラージサイズを貼り付けてる。
tbBmp.hInst = HINST_COMMCTRL;
tbBmp.nID = IDB_STD_LARGE_COLOR; /* 標準の大サイズのアイコンを使う宣言
ちらつくのはいちいち消して(バックグラウンド塗りつぶし)描くからだよ もともと全部描きなおすタイプならけさんでいい
再度試してみた
背景消去を行わない(ウィンドウクラスの背景ブラシをNULLにするか、WM_ERASEBKGNDを無視)
とした場合でも、クラスのスタイルにCS_HREDRAW | CS_VREDRAW が残っていると、ボタン部分が
かすかにちらつく(メニュー文字のちらつきの半分程度)
>>322 や
>>286 の言ってるちらつきがこれってことはないのか?
WS_CLIPCHILDRENしてるか?
Visual Basic 6.0ってありましたよね? あの言語でIsNumericって関数があったんですけど、 あれをVC++側で実装する場合、 OLE関連の関数群に存在するのでしょうか? もし、存在するなら、その名称を教えていただきたいです。
333 :
182 :2007/09/19(水) 18:06:08
>>318 VerLanguageName() で自己解決しました。
LangID は LocaleID の下位4バイトでした。
帰ります。
>>331 VariantChangeTypeで数値関連の種類に変換できるか試せば、
同じような動作になると思う。
335 :
デフォルトの名無しさん :2007/09/19(水) 21:14:29
Win98からVistaまで動作するプログラムを作ろうと思ってます。 Vistaのフォルダ書き込み権限を取得するために、ConvertStringSidToSidを 使っているんですが、Win98でこのプログラムを動作させようとすると ConvertStringSidToSidがないとエラーになってしまいます。 ConvertStringSidToSidを使いつつ、両方のOSで動作するようにするためには どうすればいいんでしょうか?
>>335 LoadLibrary, GetProcAddress
むり
>>336 ありがとうございます。
試してみます。
> Win98からVistaまで動作するプログラムを作ろうと思ってます ムダな努力だと思うがどうよ? 依頼主からの指示?
98-Me 2000-XP Vista と3種類のリリースに分けて作る方が得
最初にOSのバージョン調べて、それを元に挙動変えるのはだめなん?
98でSIDとかあったっけ
> Win98からVistaまで動作するプログラムを作ろうと思ってます Win16で作れば、Win3.1から動くのが作れます。 冗談はともかく、Win98,Me対応は面倒な筈です。 OSのバージョン依存部分に1枚皮を被せて、呼び分ける必要があります。 OS依存部分を別DLLにして、LoadLibraryするとか。
>>343 > Win16で作れば、Win3.1から動くのが作れます。
残念ながら64bit版Windowsで動きません。
.Netでつくる
Win95って.netインストールできないんじゃなかった?
まだ98つかってる香具師いるのか
買い換えるまでWin98という奴はいるだろ
オレは win98 + winXP。去年から win98 -> vista と思っているが、評判が よくないので、ママ。win98 機は gateway なんだが、keyboard に慣れていて ホレ今も、それと coding にも使っている。hardoff で見つけた 6GB HDD で 動かしていて、元の HDD は後生大事にとってある。時々換装しないといけない が、今年はやってない。フラットケーブルが煎餅みたいに割れそう。
Win98をWebに繋ぐなんて最早犯罪だろ。
352 :
デフォルトの名無しさん :2007/09/20(木) 07:09:11
>>335 もう見てないかもしれんが、俺のプログラムでは同様の事例で
リンカーオプション「/DELAYLOAD」を使っている
見てるよ ずーっと見てる 君を見てる
質問に答えろぉぉぉおおお!
>>355 m9(^Д^)プギャー アホスギ
>>352 せいぜい、WM_PAINT内でii.hScreenを使っていいかどうかを見る
フラグでも用意しておくしかないと思う。
>>352 とりあえず、ダブルバッファがどうとか考える前にメッセージを理解してくれ
359 :
352 :2007/09/20(木) 08:03:57
サンプルがわるかたかな・・・。 hScreenに描画している限り無効領域は発生せず、 WM_Paintは発行されないと思ってたんだけど、その認識が間違ってるのかな。
>>359 fとWindowProcは同じスレッド?
361 :
352 :2007/09/20(木) 08:07:38
>>360 fという関数は、WM_Createで行うとエラーがでる部分を退避させるため
だけに暫定処置として作りました。
ああすまん、WM_CREATE内から呼んでいるね。 ってそれだとWM_CREATE内から呼んでいることに変わりはないだろ。
どう見てもAPI以前のレベルです、本当にありがとうございました。
364 :
352 :2007/09/20(木) 08:31:52
一応、猫でもわかるのサンプルみて作ったつもりなんだけど、 なんで描画されるんだろ。
>>359 ウィンドウ作った時点じゃ、最初から無効領域
366 :
352 :2007/09/20(木) 09:32:48
>>365 なるほど!動作確認の仕方が間違っていたのですね。
おかげさまで問題を解決することができそうです。
ありがとうございました。
重なっている上のウィンドウが移動したり、新しくウィンドウが作られたり、 そのウィンドウがリサイズしたりして、新たに描画しなければならないところが無効領域。 InvaridateRectは、そういった条件にかかわらず無効領域にするAPIだから。
>366 この手のタイプは、「できませんでした。教えてください。」ってまた来るんだよな・・・orz
369 :
デフォルトの名無しさん :2007/09/20(木) 13:29:37
教えて頂きたいのですが、MDIにおいて、 親ウインドウと子ウィンドウの透過率を変えることは可能でしょうか? 親ウィンドウに色のついた透明な子ウィンドウを重ねたいのです。 (一旦メモリデバイスにコピーした後、AlphaBlend()により色を付ける方法は 成功しました。) SetWindowLong(),UpdateLayeredWindow()などが関連してくると思うのですが。
子ウィンドウをレイヤードウィンドウすることはできない
371 :
デフォルトの名無しさん :2007/09/20(木) 13:49:17
>370 やはり、そうでしたか。WS_CHILDとWS_EX_LAYEREDのスタイルを合わせると ウィンドウが作れないんですよね。 ここから推測するに、親ウィンドウ(透過率255)、 子ウィンドウ(透過率127)のようなことも出来ないとなりますね。 現在のAlphaBlend()とUpdateLayeredWindow()を上手く使ってって方法を 取っていきます。
372 :
デフォルトの名無しさん :2007/09/20(木) 20:46:07
GetKeyboardStateで、現在のキーボードの状態を取得しているのですが、 アプリのウィンドウがアクティブでないときにGetKeyboardStateすると、 上手く情報を取得してくれません・・・、解決するにはどうすればよいでしょうか? ウィンドウをアクティブにしたフリをして、GetKeyboardStateを動かすこととか出来ないですかね? キー入力はフックしていて、キーボードでキーが入力されると、 アプリのウィンドウがアクティブでないときでも、 イベントが呼ばれてGetKeyboardStateが走る仕組みです。 動作・開発環境は以下の通りです。 OS : WindowsXP SP2 .net framework 1.1 言語 : C# 宜しくお願い致します。
>GetKeyboardStateで、現在のキーボードの状態を取得しているのですが、 ドキュメントにちゃんと書かれているとおり、 GetKeyboardState は現在のキーボードの状態を取得するAPIではありませんので、 別のやり方、たとえば GetAyuncKeyboardState を使うなどに変えた方が良いでしょう。
>>373 GetAsyncKeyboardState
375 :
デフォルトの名無しさん :2007/09/20(木) 21:05:51
>>373-374 GetAsyncKeyStateですよね?
試してみます。ありがとうございました!
335です。
>>353 さんの方法で出来ました。
ありがとうございました。
WinSock関連での質問です。 TCPによる接続でconnection関数を利用していますが、 対象のホストを見つけられない場合は、 一定時間処理が停止しています。 これの対処法を、皆さんはしていますか? スレッド側に投げて対処? それとも、connectionよりいい関数があるんでしょうか?
非ブロックソケット
380 :
377 :2007/09/21(金) 00:04:40
SHBrowseForFolder() で質問です。 BROWSEINFO.hwndOwner に設定したウィンドウに対してモーダルで ダイアログが開きますが、他にモードレスのウィンドウがあるとき、 それらは無効にならずにフォーカスを奪えてしまいます。 全ウィンドウに対してモーダルで開いて欲しいのです。 しょうがないので SHBrowseForFolder() の前後に 「hwndOwner と同じプロセスの全有効ウィンドウを無効/有効にする」 というのを入れたら希望する動作になったんですが、 なにかオフィシャルな手段は提供されてないんでしょうか。
その、他のウィンドウの構成が間違っている
>>369-371 MSの公式サイトにはUpdateLayeredWindow()の方を使えって書いてある
384 :
デフォルトの名無しさん :2007/09/21(金) 03:15:26
lstrlenWなどの文字列の長さを返すAPIの説明に、 「文字単位の長さ」とありますが、 サロゲートペア文字は2文字と数えるのでしょうか? それとも1文字? もし1文字で数えられてたら、自分のプログラムが大変なことになります・・・・
>>386 MSDNに書いてあるよ。
> The return value specifies the length of the string, in TCHAR
> values. This refers to bytes for ANSI versions of the function
> or WCHAR values for Unicode versions.
サロゲートペアのことは書いてないようだけど
>>388 「WCHARの長さ」って書いてあるやん
早く全面的にUTF32に汁
391 :
デフォルトの名無しさん :2007/09/21(金) 13:39:30
キーボードで入力されたキーコードとシフト状態を元に、文字を作成する関数って ToAscii ToAsciiEx ToUnicode ToUnicodeEx 上記以外に無いのでしょうか?あれば教えていただきたいです。 宜しくお願い致します。
>>381 ShowOwnedPopupsは ? (試してないけど)
386関連。EM_LIMITTEXT/EM_SETLIMITTEXTはどーなってますか
393 :
392 :2007/09/21(金) 15:46:57
ShowOwnedPopupsは忘れてください
DLLを自分で作って使ってみたいと思い挑戦しているのですが どーしてもわからないっす。 VC2005Expressを使用してDll projectでDllをビルド LoadLibraryで読み込む←成功 先にtypedef int (*DLLFUNC)(int, int) ;と宣言しておき DLLFUNC Add ; Add = (DLLFUNC)GetProcAddress(hDll, "Add") ; ↑でNULLが帰ってきて「指定されたプロシージャが見つかりません」って出てます。 DLLのソースは #include <windows.h> int WINAPI DllMain(HINSTANCE hInstance , DWORD fdwReason , PVOID pvReserved) { return TRUE; } __declspec (dllexport) int Add(int nValue1 , int nValue2) { return (nValue1 + nValue2) ; } です。よろしくお願いします。
def作ったほうが確実
そのソースのファイル名は .c か .cpp か。
>>397 では、.c にリネームして試してみるべし。
extern "C"をつけて名前マングルをやめて、かつdefでエクスポートすればいける
誰だマングリなんて作ったの 意味ねーだろ
.cにリネームしたらいけました!
さらに.cppに戻した後
>>399 に書かれていたextern "C"の方法でも
出来ました!有難うございます。
>>400 多重定義とかメンバ関数とか名前空間とか同名の区別に必要。
型安全なリンクにも繋がる。
>400 んじゃオーバーロードとか使うなよ
せめて同一プラットフォームではマングリングは統一して欲しいところ BCCとVC++でオブジェクトリンクできないとかもうね
405 :
381 :2007/09/22(土) 01:54:58
>>382 今はテストプログラムで遊んでいるところなので、たしかにこういう
状況はレアケースだと思います。
たとえば「モーダルダイアログ→その上に[参照...]ボタン」だったら
全然問題ないです。
何を隠そうVB6で書いてるんですが、もしかしてVB特有の現象でしょうか。
C&SDKもMFCも分からないヘタレなもので、
.NETでFolderBrowserDialogクラスで試してみたら、ちゃんと全ウィンドウに
対してモーダルでした。
.NETでSHBrowseForFolder() をP/Invoke するのをこれから試します。
>>392 その関数はちょっと目的とは違う気がします。(試してないけど)
その前にspyしてWindow構成見たほうが早くね
micsoroftがツール提供してるってことは、 spyは合法ってことでおk?
何言ってんだおめぇ
1PはPLAYERだろーが
ごめん 全然うまくないから
>>411 相手にならん
もっと練習してから来い下手糞
ちょっとフォルダ内のファイル一覧を作る処理を書こうとしてるんですが FindFirstFile〜FindNextFile...は遅い!と思いしばらく実験... ひょっとしてコマンドプロンプトでdir〜するより遅いんじゃないか?・・・と調べたらさすがにdirよりは早いようだったorz しかしもっと早くしたいのです、FindFirstFile系より早い関数知ってる人いますか?
IShellFolderのEnumObjectsはもっと遅い
415 :
デフォルトの名無しさん :2007/09/22(土) 06:18:51
こんなスレで質問していないで、早く試行錯誤でバグ回避策を見つける仕事に戻るんだ! 何?やる気がありません?なら辞めろや、他の派遣雇うからw
IShellFolderですか、COMってやつですか? 初めて見るのでよく分からんですが、こいつはこいつで奥が深そうですね
自分で作ればいいのに 能なしは大人しく既存の関数使っとけ
>>417 5万で一秒くらいです、ちっとも遅くない・・・ですか?
そんなに速くしたいならWindowsの外でやれ
1msで50ファイル。どこが不満なんだ‥‥
実際計って以外に早いなと・・・ 他の部分が重いのでしょうね、スレ汚し申し訳なかったです
windowsプログラムのお話 VC++2005EEのスケルトンプログラムのソースが何をやっているのか教えてぽ・・・。
キャッシュが効いてただけと予想
一覧の表示をListViewとかでやってるなら検索中は更新止めるとかしないと笑える程遅くなるぞ。
キャッシュはメモリのコンパクションツール(っていうのかな?)を使えば消えますよね? その状態だと5万ファイルで一分ぐらい、次回実行以降高速化してます・・・ ListViewとかじゃなくvector<string>に入れて後でファイルに保存してます、時間計測は純粋にファイルリスト取得部分のみです 再起動とかしてちゃんと計測し直した方がいいですかねぇ?
うるせーバーカ死ね
キャッシュですねぇ、
>>424 さんの指摘どおりのようです
再起動して実行すると初回が91秒、10回実行して平均とか出してたんですが2回目以降は750msぐらいで安定してます
HDD直に触るのは魅力的ですよね、一度はやりたいです
しかしこれ、それでも使えないほど遅いかと言われればそんなこともない速度でしょうか
どうも昔触って以来FindFirstFile系は遅いと思い込んじゃってたんですかねぇ
くそう
>>423 の言ってるのが「空のプロジェクト」をチェックしないで普通に作った奴なら
単にウィンドウ出してメニューつけて、だけをやってるんだと思う
なんかReadMe.txtってのもプロジェクトに参加してるみたいだし一度目を通されてはどうでしょう
間違ってたらスマソ
>>429 APIの呼び先で予想外のコードが動いている可能性もあるから確認してみるといいよ。
アンチウィルスソフトはよくやってる。
とりあえずカーネルデバッグしてみ。
カーネルデバッグと、初めて聞いたもので調べておりますが カーネルデバッガというものを使うようですね、おすすめなんてありますか?
>>434 さん、折角教えて頂いたばかりですが現在の私の能力ではここまでのようです・・・
かなり便利そうには見えるのですが習得には少しかかりそうです・・・
いろいろとご指摘くださった皆さんありがとうございました、
今回はFindFirstFile〜でとりあえず作り、後は次回の課題とさせていただきます。
>>431 やさしい人ありがとう><
みんなプログラム作る時は空のプロジェクトでやるのかな・・・?
ああ
438 :
デフォルトの名無しさん :2007/09/22(土) 09:48:51
坊主。男は黙って空のプロジェクトで作るもんだぜ?( ゚Д゚)y─┛~~
質問させてください。 BitBltで描写している800*600のビットマップ画像を毎秒20ピクセルぐらい で高速横移動させようとすると、描写がおっつかないのか移動中画像がぶれる のです。(上から下に走査線の波がはしるように画像がゆがみます) ひょっとしてWINAPIではそこまでの描写はできないのでしょうか? DirectXを使えということなのでしょうか。
440 :
439 :2007/09/22(土) 14:24:04
↑すみません、移動値が間違っていました。 一回10ピクセルの移動を、毎秒20回ほどです。
ププ
>>439 DirectXには垂直同期を待つ機能がある
GDIだけではできない
443 :
439 :2007/09/22(土) 14:41:27
>>442 ご回答ありがとうございます。
今まさにGDIに垂直同期させる方法がないか考えているところ
でしたが、できないのですね。。。
DirectXを勉強することにします。
ヒント、感謝します。
"C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*.*" これがOKなのが許せない
VC++2005EEで途中まで文字入力したときのポップアップヘルプが 出なくなっちゃたよぅ・・・><
EEなんて使ってるからだ 大人しくプログラミング引退しなさい
そんなぁ・・・><
と、思ったら僕の勘違いでした・・・ ごめんなさい
>>444 パス名の先頭に\\?\(Cなら\\\\?\\)でもつければ?
>>446 あのピョコってでるのは確かインテリセンスって言うはずだ
プロジェクトのフォルダ内に.ncbって拡張子のファイルがあると思う、表示される情報はこれに保存されてるらしい
で、情報の更新に若干タイムラグが出る事があってポップアップが出ない事がある、これは数秒待てば出るようになるよ
前の行にビルドエラーになる箇所があるとそれ以降インテリセンスも更新されてなかったりするのでこまめにビルドするといいかも
じゃあ、コンパイル成功してもIntelliSense動いてくれないのはなぜなんだぜ? 特にBoostとか使ってるとき、特定の行以降/ブロック内で起こる。
それはC++がキモすぎるかr
いやキモいのはbo
CreateWindowAとかのANSIバージョンのAPIで作ったウィンドウで TextOutWとか使ってもおk?
wchar渡せばおkだと思うが
使ってもおk
jpgやgifを表示させるのにもっとも手っ取り早い方法ってGDI+ですか? GDI+って解説しているところがほとんどなくてよくわからないんだよなぁ・・・
サンクス
ヘッダ読んでMSDNでも引くがいい
OleLoadPictureもアリ
CreateProcessでIEでも呼べば一発
おまえ頭いいな
コロンブスの玉子
まあ雑談がウザイのは同意
>>466 > 466 名前:デフォルトの名無しさん[sage] 投稿日:2007/09/23(日) 04:02:49
>
>>1-466 > 知らないならレスしないで下さい!ウザいだけです!
この範囲指定の場合、スレッド削除依頼を出すべきではないでしょうか?
と、更に雑談を増やしてみる。
while(GetDC(NULL));
自分が描いた画像を表示させたいんですがBMPから読み込む以外に何か方法ありませんか? BMPみたいにビュアーで普通に見れるとかじゃなく、そのアプリを起動するまで 画像が見えないようにしたいんですが
独自フォーマットを定義する 画像データを暗号化する
>>471 ありがとうございます。この2つしかないんですか…
暗号化にでも挑戦してみることにします
リソース使いたいんじゃないのか? LoadResource
800×600+タイトルバー,枠の大きさのウィンドウを作りたいんですがどうすればいいですか? とりあえずこのように書いてみたんですがこれだとタイトルバーも含んで800×600 の大きさでウィンドウが作られてしまう・・・ CreateWindow( APP_NAME,TEXT(__FILE__), WS_OVERLAPPEDWINDOW^WS_THICKFRAME^WS_MAXIMIZEBOX|WS_VISIBLE, CW_USEDEFAULT,CW_USEDEFAULT, 800,600, NULL,NULL,hInstance,NULL )
GetSystemMetricsで得た値を足す
AdjustWindowRectEx
>>474 AdjustWindowRect。ただしメニューバーが2段になる場合は要自力計算。
MSDN2の左側のフレームメニューが付いてこなくなってる。 Mobile and EmbeddedならOKなのに非常に使いにくいから早く直して
>>477-478 ごめん。書き込むまえにリロードして確認してなかった
わざわざありがとうございます
Unicode文字列から改行コードのみを取り除く関数ってある? テキストルーチンってたくさんあるからありそうだけど・・・
483 :
デフォルトの名無しさん :2007/09/24(月) 16:10:17
>>482 こういうこと?
WCHAR str[] = L"abcdefg\n";
WCHAR *temp;
if(temp = wcschr(str,L'\n'))
*temp = L'\0';
前から読んで詰めたらいいんじゃね 俺はめんどくさいからString.Replaceするけど
485 :
482 :2007/09/24(月) 16:42:53
ファイルから読み込んだ文字列なのでCR,LF,NEL,VT,FF,LS,PS全て消したいと思ってるんですよ。
今も使われてるのかよくわからない改行コードもあるけど・・・
>>484 さんが言うように一文字ずつ判定して前に詰めるようにします。
ありがとう!
対象が複数あるなら、wcsspnがいいと思う。 いずれにせよWin32 APIではないが。 #それともshlwapiにStrSpnがあるってか。
>>485 制御コードを全て削除したいなら、0x01〜0x1fを削ればいい。
ただし、TAB,SI,SOの処理だけは真面目に考えた方がいいぞ。
その調子でテキスト中の\nを\r\nに直す方法を教えてください
その調子、その調子。
__ |・∀・|ノ よい ./|__┐ / 調子 """""""""""""" .__ ((ヽ|・∀・|ノ しょっと |__| )) | | 調子 """""""""""""""""
調子に乗るな
w
もしかしてWin32APIではこういうfor文の条件の中で宣言するのはNG? for(int i=1;i<=10;i++)
API関係ねー
ソースファイルC言語にしてたからだった C++でずっと書いてたからてっきりCでもいけるのかと… スマソ
>>494 , 496
cppでも処理系によって i のスコープが異なるから、for文の前で宣言した方が良くね?
お前だけ良くね?
まだVC6使ってンのかヨ!
>>497 #define for if (0) ; else for
>>496 C99ならOK。オプションでC99に出来たりしないか?
VC++は基本的にC++なのでC99は軽視しているという話だが、
gccなら-std=c99をつければよい。
>>487 LSやPSはC0 Controlの範囲にないしNELはC1 Controlだろ
Unicodeの制御文字をなめるな
503 :
デフォルトの名無しさん :2007/09/25(火) 12:20:17
元のHTMLがないから IWebBrowser2やらIHTMLDocument2やら IHTMLElementやらIHTMLElementCollectionやらを使えとしか言えない 多分document.writeしたテキストオブジェクトを置き換える事になるはず スクリプト実行に変数には手出しできないと思われ
>>504 元のHTMLはこんな感じです。随分と簡略化していますが、
このようなHTMLの中の現在の i の値をアプリケーション側で取得を行いたいと思っています。
<html><head><title>サンプル</title>
<script type="text/javascript">
<!--
i=0;
function test(){
document.getElementById("show").innerHTML = "i=" + i;
i++;
}
// -->
</script>
</head>
<body>
<input type="button" value="テスト" onclick="test()">
<p><div id="show"></div></p>
</body>
</html>
これって、WIN32 API の話なの?
>>505 ん〜実はC言語しかしらなくて、C++的な書き方が全く理解できません。
リンク先の情報もググって出る情報もC++チックなのばかりなのですが、C言語じゃキツイですかね・・・
C言語がわかるならobjebase.hを読めばわかる
UNICODEの'ー'や'〜'などの文字が非表示文字扱いになっているんですが仕様ですか? iswprint(L'ー') --- 偽が返る ワイド文字でも_ismbc系と同じような文字判定をするにはどうしたらよいのでしょうか?
スレ違い
>>510 本当はCRTはスレ違いだが、Win32APIが直接絡んでくるのでここに書く。
iswprintは最終的にGetStringTypeWに繋がっていて(Cロケール時は別)、
>>510 で挙げたような文字はC1_DEFINED(0x200)が返ってくる。
iswprintは0x157のマスクで判定しているようで、印字不可文字として0を返すが、
GetStringTypeWの説明ではC1_CNTRL(0x20)を除く全ての文字がPrintableと書かれている。
よって、GetStringTypeWを直接呼び出して判定してやればOKかと。たぶん。
ちなみに.NETのSystem.Char構造体のIs系メンバには、
Printableみたいなものは用意されていなかったりする。
SetTimerとInvalidateRectを組み合わせてアニメーションをつくると InvalidateRectで画面を再描写させるたびに一瞬横線が入ってしまうのですが これってどうにかする方法ないでしょうか?
InvalidateRectの第3引数をFALSEにするとか? あるいはダブルバッファリング?
>>515-516 ありがとうございます。
FALSEにして背景を消さないようにしたら今書いてるプログラムでは上手くいきました
とりあえず今はこれで解決ってことにしておきます
'说明' という文字を、UNICODE版のスタティックテキストやテキストボックス等に 表示する方法を教えてください。 フォントの問題でしょうか。 '?明'になってしまいます。
520 :
518 :2007/09/26(水) 05:25:45
エクスプローラーでファイル名として作成すると きちんと表示されるみたいです。連投すいません。
521 :
518 :2007/09/26(水) 06:14:43
あー・・・・できた。 CreateDialogIndirectParamAで作ったコントロールでは フォントを変えてもSetWindowTextWしてもうまくいかないらしい。 フォントをMS UI Gothicにした上で、 CreateDialogIndirectParamWでコントロールを作り直した らうまく表示できました。 同じDLGTEMPLATE引数でもAとWで動作が違う様です・・・。
522 :
デフォルトの名無しさん :2007/09/26(水) 08:01:47
>>458 Visual C++ 2005 EE (無料版) にて、
普通に Win32API プロジェクトを作成。
プロジェクトのプロパティで、
【 共通言語ランタイムサポート(/clr) 】 を選択。
#include <windows.h>
// GDI+を呼び出すために
#using <mscorlib.dll>
#using <System.dll>
#using <System.Drawing.dll>
using namespace System;
using namespace System::Drawing;
// として、例えば、
void mCliTest(HWND hwnd)
{
PAINTSTRUCT ps;
HDC hDC = BeginPaint(hwnd, &ps);
Graphics^g = Graphics::FromHdc((IntPtr)hDC);
// テキストや図形の描画
Pen^pen1=gcnew Pen(Color::Blue,2); // Penの色と大きさ
g->DrawString(..,..,..,,); // や
g->DrawLine(pen1,..,..,,); // などが使える。
EndPaint(hwnd, &ps);
}
gcnewとかGraphics^とか違和感ありまくりだな
仕事終わた いえーい!
ドルジ いえーい!
528 :
デフォルトの名無しさん :2007/09/26(水) 13:28:05
>>524 猫でも・・のことは知りませんでした。
これから確認してみます。
>>458 さんに答えたかったのは、
次のようにすれば、bmp はもちろん、
jpg, png, gif 形式の画像も読み込んで表示できる、
ということでした。
Bitmap^bmap1 = gcnew Bitmap("abc.jpg");
g->DrawImage(bmap1, x, y); // x, y は int型
以上、abc.jpg の場合。
てか、既に回答もらってるとこに遅レスしても、もう見てないと思うんだ・・・
回答というのは半分自己満足なのだからこれでいいのだ
回答というのは半分他社迷惑なのだからこれでいいのか
>>528 猫も次の336章はちょうど画像表示のプログラムだよ。
Windowsの付属ペイントを使ってると 高速でマウスを動かしても切れ目なく描画されてるんですが WM_MOUSEMOVEは 取得に限りがあるから上手くいかないっていうのは分かったんですが 方法がよく分からず、どうすればペイントのように描画できるんでしょうか?
>>533 大きくマウスを動かしながら描画すればすぐに気付くと思うぞ
前回 WM_MOUSEMOVE が来たときの座標を覚えておいて 今回 WM_MOUSEMOVE で来た座標と線で繋げばいいんじゃない
GUIアプリケーションで、そのウィンドウに割り振られたメッセージキューを同一プロセス上の別スレッドから覗き見する方法はありますでしょうか。
チヨスもよろしく♪
描画を行う関数を作ったのですが、HFONTとHBRUSHを引数にして呼んでも使えませんでした なので、関数内で宣言してフォントや色を指定しました(CreateFontとCreateSolidBrush) こうするとコンパイルできてちゃんと表示されたのですが、5分くらい眺めているといきなりフォントと色がデフォルトの状態になりました 何度か試してみましたが、やっぱり5分くらい経つとデフォルトに戻ってしまいます どうすれば良いのでしょうか?
>>533 SDKサンプルのimageditにはそういう場合の補間計算するルーチンが入っていたが、
今あのサンプル自体が付属してないような・・・
>>539 プログラムやめらばいいよ
所詮それがお前の実力
>>539 フォントやブラシを作るだけ作って削除しなくて
リソース不足で新しいフォントやブラシを作れなくなったんじゃないかと予想
>>539 言っていることがよくわからないからコード張れ。
>>536 SetWindowsHookExとか? PeekとかGetは調べないとあるのかどうかわかんないけど、ない気がする
TextOutでGDIで描写した上に文字を表示させようとすると文字の周りが白くなって
しまうので、一度メモリディバイスにTextOutしてBitBltのSRCCOPYで上にかぶせたら
いけるかな。と思いやってみたのですが同じくこのように周りが白くなって困ってます
何か文字だけを黒く表示する方法ないでしょうか?
ttp://upup.ty.land.to/src/up1127.jpg
SetBkMode
>>549-550 ありがとうございます。できました
ずっと試行錯誤してたのが馬鹿みたいだ
ジュウシマツ貼っても良いかな?
CommandLineToArgvWのANSI版ってのはないんですよね? 自作するしかないですか?
>>553 VCならCRT内部のargcとargvを参照すればいい。
WinMainからであっても生成されている。
宣言はCRTのソースを読めば判る。
>>546-547 ありがとうございました。
AttachThreadInput というのも発見したので、
いくつか試しながらやってみたいと思います。
556 :
デフォルトの名無しさん :2007/09/27(木) 13:02:00
activescript rubyの板からきたんだけど vrubyからWindowsで現在実行中のプロセスを列挙したいのですがどうすればいい? Win32APIのEnumProcessesとかを使うと出るらしいが 使い方がわからん。 使い方をおせーて
だが断る
結局Rubyのライブラリの話になるのだから、こっちに持ってくるな (・∀・)カエレ!!
使い方なんてググればはいて捨てるほど出るしな
560 :
デフォルトの名無しさん :2007/09/27(木) 17:06:10
すみません。 質問なんですが、モニタ(画面)の横幅、高さを得るAPIご存知ありませんか? 昔、使っていた記憶があるのですが忘れてしまいました。。ご教授お願いします。
物理的な大きさを求めるAPIなら、そういうものは無い。 一応cmで取得するものはあるが、DPIから勝手に計算しているだけで 実際の大きさとは全く関係ないよ。
ググれカス
>>560 GetDeviceCapsで解像度を得て、計算するとかどうですか?
564 :
デフォルトの名無しさん :2007/09/27(木) 17:20:48
>>561 >>563 参考になりました。ありがとうございます。
計算してたかな。。昔のプログラム探して見ます。
死ね低脳
もし指定の変数に変更があればTRUEを返すとかいう便利な関数ありませんか?
腹痛い
つ 征露丸
>>566 変更前の値を保持していれば済む話だろ
笑いすぎにも効くの?
WINAPIで、数独の問題を表示させ「チェック」ボタンを押すと、 正解かどうか表示するプログラムを作りたいと思っています。 それで、お聞きしたいところは、 数独の9×9のマスを表示させるコントロールはなにがいいのでしょう? 探している条件としては以下のものです。 ・列や行の番号とかが表示されない(Excelの”A列”とかの表示のもの) ・マスを選択したら入力できる。 ・マスの周りに罫線をつけれる。 ・文字列に色を付けれる。 そういったものってあるのでしょうか? よろしくおねがいします。
9x9くらい自分で作れ低能 そんなコントロールがあるかボケ 呆れてシュールストレミング吹いたわ
エディットコントロールを81個置くのが楽なんじゃないかね ヘッダやカラムは作らなければ当然無いし、 クリックすれば入力できるし、 枠も付いてるし、 色も付けれる
シュールストレミングって航空輸入禁止なんだよな .netならDataGridでいいんじゃねーの
>>570 どうしてもAPIだけでやりたいならエディットコントロールを81個置くのが無難。
Grid系を使えるなら、列や行のラベルは(Excelでさえできるのだから)隠せるはず。
そういや、 (ActiveXとかでない)Win32APIレベルで使えるフリーなGridコントロールないかね? なければ作るが。
576 :
デフォルトの名無しさん :2007/09/27(木) 22:34:57
ツールバーで質問があります。 ウィンドウスタイルにTBSTYLE_FLATを追加することで背景色が透明になることがわかったのですが、 逆に透明になったツールバーの背景色に色をつけようとするとどうすればいいですか?
>>575 そんなのCodeGuruあたりに腐るほどあるだろう
>>576 ウィンドウスタイルからTBSTYLE_FLATを削除すれば?
>>578 TBSTYLE_FLATを使いたいんじゃね?
LRESULT CALLBACKにごちゃごちゃ書くのはあまりよろしくない?
一般論として長い関数は嫌われる。 素のWin32 APIでウィンドウプロシージャを書くのなら、 最低限、メッセージクラッカーを使うことを勧める。
メニューバーを作りたいのですがイマイチよく分からないので質問させてください。 環境はWinXPでVisual Studio 2005 Professional Edition を使用しています。 リソースエディタで簡単にメニューは作れたのですが、それをウィンドウに組み込むのはどうすればいいのでしょうか? とりあえずメニューバーの識別子はIDR_MENU1となっていたのでこれをウィンドウクラスの設定で wndclass.lpszMenuName = "IDR_MENU1"; としました。で、一応プロジェクトにresource.hが入ってはいますが、念のため #include "resource.h" を記述しました。が、実行してみてもメニューバーが表示されていません。どうすればいいのでしょうか?
MAKEINTRESOURCE(IDR_MENU1)
Proもったいない
>>584 ありがとうございました。できました;;
>>585 研究室のです。せっかくあるので使わせてもらっておりまする。
5ボタンマウスの XButton1,2 と Wheel の左右 を自分のプログラムで 処理するにはどのようにしたらよいのでしょうか?
WM_XBUTTON*じゃない? WM_APPCOMMAND投げてくるドライバもあったようななかったような チルトはシラネ
spy++でメッセージ見たらよかろうもん
ホイールの左右はWM_MOUSEHWHEELだな。 ただしVista専用。
592 :
デフォルトの名無しさん :2007/09/28(金) 10:45:44
SHFileOperation で質問です。 移動・コピー・削除・名前の変更それぞれで 有効な SHFILEOPSTRUCT.fFlags の定数ってわかりませんか? FO_DELETE 以外で FOF_ALLOWUNDO って意味あるの?とかいろいろ疑問で、 たとえば FO_RENAME だったら FOF_MULTIDESTFILES は設定してもなにもしない みたいな情報の一覧がほしいです。
>FO_DELETE 以外で FOF_ALLOWUNDO って意味あるの?とかいろいろ疑問で コピー/移動してからCtrl+Z押せば分かるだろうに
595 :
デフォルトの名無しさん :2007/09/28(金) 19:26:25
DLL内にあるアイコンをロードして、アプリケーションのアイコンに設定しようとしているんですが、 HANDLE hModule; szFileName モジュール(DLL)へのフルパス IconIndex アイコンモジュールの中の取得したいアイコンのIndex番号 hModule = LoadLibrary(szFileName); SetClassLong(hwnd, GCL_HICON, (LONG)LoadIcon(hModule, MAKEINTRESOURCE(IconIndex))); FreeLibrary(hModule); としても、うまくいきません。 アプリケーションウィンドウの左上のコントロールメニューアイコンは白い四角形になってしまいます。 ちなみにhModule はShell32.dllの序数62である名前なし関数で、「アイコンの変更」のダイアログを表示して そこから取得しています。 どこかおかしいでしょうか?
SetClassLong じゃなくて WM_SETICON を使ってみるといいかもしれない LoadLibrary/LoadIcon/FreeLibrary じゃなくて ExtractIcon を使ってみるといいかもしれない
そもそも戻り値をチェックしていない時点で、 自分で原因を調べようという意図がまったく見られない。
SetClassLong(hwnd, GCL_HICON, hicon);で問題ないよ それよりもちゃんとハンドルが取得できてるか確認しろヴォケ
んだんだ、アイコンと言えどもいい加減に扱っとるとリソースリークの原因になるぞ いつのまにかダイアログが表示できなくなったりするから怖いぜ (APIとしては成功したりするからGetLastErrorとかで確認できない)
LoadIconはマッピングされたリソースを参照するハンドルを返してるんじゃね? だからFreeLibrary時点で見失って白四角形になる、と。 LR_SHARED無しのLoadImage使ってみ。 こっちは呼び出し毎にコピーを作成するはず。
リソースIDじゃなくてインデックス渡してるからロードに失敗してるんじゃね?
NULLバイト文字終端のUTF-8の文字列に対して、普通にstrlenしてもよろしいでしょうか?
>>602 Win32APIと無関係なのに自分勝手にこのスレで質問する理由を明確に述べよ。
606 :
595 :2007/09/28(金) 22:27:18
第一にLoadLibraryに失敗していました。 %SystemRoot%\system32\SHELL32.dll こういうパスは認識されないんですね。 アイコンの変更ダイアログからの戻り値を直接渡していましたので・・ その次に、アイコン変更ダイアログで自作DLLを選んでみたんですが やっぱり白い四角形になってしまいます。 DLL内のアイコンってどうやって取得すればいいんでしょう。 たくさんの方からご返事をいただきまして恐縮です。 今、全部試してます。 もしかしたらExtractIconでいけるかもしれませんので、もうしばらく失礼させていただきます。
607 :
595 :2007/09/28(金) 22:46:51
ExtractIconでいけました。 ただUNICODE定義がないと失敗してしまう・・・ あと%SystemRoot%\system32\SHELL32.dll こういうパスって普通のパスに戻せるんですか?
%SystemRoot%を環境変数から取り出せばいいんじゃない? 俺はAPIとかよく分からないけど
>>607 ExpandEnvironmentStrings
で環境変数取れるかも
数字をファイルから読み込んで足したり引いたり処理をして書き換えて保存したいんですが、 CreateFile,ReadFile,WriteFileでその作成したファイルの数字を簡単にメモ帳などで 書き換えれないようにってできますか? 色々試行錯誤してみたんですが、どうしてもそのままの数字でファイルに保存 されてしまってメモ帳で開いて簡単に数字を書き換えれてしまう(´・ω・`)
何いってるのかサッパリ
123 ↑書き換えたらコロス
質問です。 メインとなるウィンドウ(幅600、高さ400)を生成します。 このウィンドウの子ウィンドウとして例えばボタンを配置するのですが、このボタンを表示範囲外、 つまりX座標0、Y座標500に配置したとします。 その時に、メインのウィンドウの右にスクロールバーをスクロールする事でボタンを表示させたいのですが、 どのようにすればいいのでしょうか?
そのようにすればいいのです。
>>610 暗号化して書き込めば?
さもなきゃNTFSの暗号化機能を利用するとか
プロセスが終了したら削除すりゃいいんじゃ?
>>616 NTFSの暗号化ってそういうもんじゃないと思うけど。
>>618 とりあえず、
>>618 のソースのウィンドウにボタンコントロールを表示領域よりも下に設置して
その後スクロールバーをいじってみたのですが、スクロールバーの位置が変わるだけで特にウィンドウには何も変化がありません。
>>618 質問者の知能レベルがどの程度かなんて知ったことではないが、
ボタンと思うからうまくいかないんじゃないかな。
例えばでかいドキュメントのはしっこに張り付いたエロ画像と思い込むんだ。
そのエロ画像をなんとかしてスクロールして全部見たい、さあどうするか?
ほら、もう答えは出てるだろ。
>>620 ん〜・・・難しい・・・何かヒントを・・・
>>617 >プロセスが終了したら削除すりゃいいんじゃ?
むしろCreateFileの共有フラグ0にして開きっぱなしにしておけばw
>>621 単にSCROLLINFOのフラグとスクロール量の指定がおかしいんだと思うけど
>>623 scr.cbSize = sizeof(SCROLLINFO);
scr.fMask = SIF_PAGE | SIF_RANGE;
scr.nMin = 0;
scr.nMax = 10;
scr.nPage = 2;
SetScrollInfo(hwnd, SB_VERT , &scr , TRUE);
scr.fMask = SIF_POS;
これじゃマズいですか?
>>623 違うって。
>ただし、ウィンドウのサイズなどによってバーのサイズを変更したり。
>実際にクライアント領域を移動させるにはもう少し複雑なプログラムになります。
これだ。
スクロールバーの表示とは別にクライアント領域は自分で移動しないといけないの。
626 :
625 :2007/09/29(土) 00:12:28
ScrollWindowExな
>>625 という事は、別に設定が必要なんですね。
スクロールバー自体に標準でそういう機能が備わってるものだと思いました。
もしかして、スクロールバーのつまみの位置によって、ウィンドウ内の各コントロールのポジションを
計算して移動させないといけないとかですか?
>>627 なんも判ってないみたいだな
一度きちんとした入門書読んだほうがいいよ
買う必要ないから図書館で借りるなりして
>>626 とりあえず ScrollWindowEx(hwnd, 0, -10, NULL, NULL, NULL, NULL, 0); にしてみたら
移動はしました。が、移動時に残像が残りますが・・・。色々と調べてみます・・・
>>628 インターネットの情報だけでやってるので、なかなか段階を踏んで勉強が出来ないですね。
必要なものを必要な時に参照する感じなので中々ちゃんとした知識が身につかない・・・
思い込みだけでやってると後で苦労するぞ まあ知ったこっちゃないけどさ
要領次第だと思うけど 俺はDirectXの本くらいしか買ったこと無いや
あー無理これ、意味わからぬ(´;ω;`)
そのAAむかつく奴多いから、答えを得られる確率も減るわけ。わかる?
知らないよお前の好みまでw
俺もそのAA乗っけて質問する奴には絶対に答えない。 そういう類の馬鹿が書く文章はほぼ例外なくそれ以前の問題を抱えてるが。
少し黙れ
637 :
595 :2007/09/29(土) 01:05:37
>>609 いけそうです。
みなさん、いろいろご親切に教えていただきましてありがとうございます。
638 :
632 :2007/09/29(土) 01:08:32
一応言っておきますけど、
>>634 は俺じゃないですよ。
そのAA書くだけで人格否定されるのは心外ではありますけど。
639 :
636 :2007/09/29(土) 01:10:41
いいから黙れよ AAはAAスレでやれってのも一理あるんだから
AA貼り付ける余裕あんなら自分で調べろやハゲ
641 :
632 :2007/09/29(土) 01:31:34
なんかAA書いただけで随分荒れるんですね・・・ まぁここではあまり情報得られそうにないので去ります。
空気を読めるようになろうね。
テキストファイルに書いてある数字をint型で読み込むにはどうしたらいいですか?
atoi
>>644 上手くいきました。ありがとうございます
スタティックコントロールをサブクラス化したのですが、 スタティックコントロールのプロシージャにWM_CREATEが送られてきません。 プロシージャ内でWM_CREATEを捕まえて、コントロール内に子ウィンドウを生成したいのですが
CreateWindowした後(WM_CREATE処理後)じゃないとサブクラス化できなくね?
なるほど、そういう仕様なのか
今度産まれた甥っ子をサブクラス化したのですが、 受精卵が送られてきません。 膣内で精子と卵子を捕まえて、DNA内にバックドアを生成したいのですが
高度すぎてわからんよ
その処理は生まれる前にしかできません。
要するにバックドア作っておいて自由自在に操れるようにしておいて、、時期を見計らって猥褻な行為に走ろうというペドフェリアショタコンの思考ですな。 その異常な性癖は俺がお前のDNAにバックドアとして仕込んでおいたものだ。人が自ら不幸を生成する様が楽しくてね。
DNAに仕込んだとか因果的決定論っぽくなってきたな
何故64bit版WindowsでもWin32APIが使われているのですか? 何故新しくWin64APIを作らないのですか?
>>654 何言ってんだお前
64ビット版でWin32APIが動作するのはエミュレーションを挟んでるから
WOW64
Win32は滅びんよ、何度でも甦るさ。
>>656 マジに二世代先のOSまで使われそうで怖いな。
>>654 Win16→Win32みたいな大幅な変更があったら、移行の手間がかかるだろ。
なるべくそんな手間をかけずに済むようにWin64はWin32と同じAPIを持っている。
>>658 勉強になりました。
今後、WINFXだっけか。組み方変わるのはやだなぁ。
結局のところ互換性が問題になるわけだ。 Vistaの遅れも未実装も、互換性を取ろうとして断念した結果だからな。
>>659 WinFXは.NET Framwork 3.0としてVista搭載。
XP/Server 2003にもインストール可。
662 :
デフォルトの名無しさん :2007/09/29(土) 15:43:42
APIとMFCの違いってなんですかね?
>>661 ただし当初言ってたような基本APIではなくWin32 APIにかぶせる形になった
>>663 wikipediaのMFCの項目はいつ見ても笑えるな。
修正しないで置いとく方が面白いと思える位に。
AFXってなに?
Away From XXX
Visual Studio 2008の製品版っていつ発売?
2008年 大晦日かもしれんがな
d まだ正確には決まってないのか 今2005買うのももったいないし早く発売して欲しいな
早く出す意味ないしね。 2008年終わり頃から2009年中頃くらいだと思う
それよりAPIの話しようぜ!!!!11 言ってみたかっただけ
676 :
デフォルトの名無しさん :2007/09/29(土) 21:00:08
VB2005Express使用 Public Class Form1 Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Long Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Do If Me.Visible = False Then Exit Do If GetAsyncKeyState(90) Then MsgBox("Z") Application.DoEvents() Loop End Sub End Class というコードをテスト目的で書いてみた。走らせて見たら 「PInvoke 関数 'RPG!RPG.Form1::GetAsyncKeyState' がスタックを不安定にしています。 PInvoke シグネチャがアンマネージ ターゲット シグネチャに一致していないことが原因として考えられます。 呼び出し規約、および PInvoke シグネチャのパラメータがターゲットのアンマネージ シグネチャに一致していることを確認してください。」 と表示された。 GetAsyncKeyStateの宣言自体はVBAで使ってたものをそのまま移しただけ。 これは利用方が悪いのか宣言が悪いのかkwsk まだプログラミング初めて間も無いからMSDN読んでもよくわからない・・・、知ってる人頼む。
>Delphi、Java、.NET Frameworkなど他のオブジェクト指向ライブラリは、 >言語仕様やライブラリ内にメモリのガベージコレクションの機能が標準で入っているのに対して、 >MFCはガベージコレクションを採用しなかったという、致命的欠点を持ち、 >それ故、バグを生みやすく、生産性が低い。
CreateFileで数字のみが書いてあるテキストファイルを読み込んだ後、 TCHAR inbuf[256],outbuf[255]; int x; DWORD wReadSize; ReadFile( hFile, inbuf, sizeof(inbuf), &wReadSize, NULL ); inbuf[wReadSize] = TEXT('\0'); x=atoi(inbuf); x+=2; wsprintf(outbuf,TEXT("%d"),x); WriteFile(hFile ,outbuf,sizeof(outbuf),&wReadSize,NULL); でその読み込んだ数字に2を足してファイルにその数字を出力したいのですが コンパイルエラーはでないんですが実行するとエラーがでて終了してしまいます LPSTR型のにファイルの数字を読み込ませてやってみたり半日やってみたんですが それもコンパイルエラーが出たり実行したらエラーがでたりで泣きそうです すみませんがこのような処理をするお手本のソース教えていただけないでしょうか?
682 :
676 :2007/09/29(土) 21:19:29
>>678 サンクス、一通り読んでみたが例文みたいなのが無いとわかりにくいです・・・
もう少し読み直して理解しようとは思う
>>681 え、ってことはIntに変えればおkってこと?
よ、よくわからない・・・
>>683 Q3〜Q4にずれ込む可能性大だから。過去の実績が語っている。
>>677 MFCのバグの発生のしやすさは、オブジェクトのインタフェースの統一性のなさに起因する。
メモリ管理とは関係がない。(OOPでもメモリリークは発生する。)
# VCLを憶えた後、MFCを使ったら地獄だった。javaとVCLはいい勝負。
>>679 ガーベジコレクションはOOPとは何の関係もない。
ちなみにガベージじゃなくてガーベ(ッ)ジな。
wikiには >なお本来の英語の発音に近い表記は「ガーベジコレクション」あるいは >「ガーベッジコレクション」であると思われるが、一般には「ガベージコレクション」 >または「ガーベージコレクション」と表記されることが多い。 ってある
書いた奴がそう思い込んでるだけ
きっと正しい略称は「ガーコレ」なんだろな。「ガベコレ」じゃなくて。
カタカナになった時点で日本語 普及していて他人に通じるし元の英単語にもすぐ結びつくから問題ない
はいはいやめやめそこまでそこまで
/* そうやって中身を隠蔽しまくるからバグが見つからなくなるんです>< そうやって中身を隠蔽しまくるからバグを見つける能力がなくなるんです>< 何事もほどほどに>< */
政治と同じだな そもそも領収書の出ないとこから買い物すんなよ
>>594 いや、そこ限定だったらそれですむけど
他にもいろいろあるじゃないですか><
操作ごとに別々のクラスにして有効なフラグだけメンバを用意しようと
思ってたんですが、適当にやっときます。。。
>>680 ファイルの中身がShift_JISなどなら、
inbuf, outbufの型をTCHAR配列からchar配列にしてみろ。
ガービッジ
ギャビジ カレクシュン
30%でアイテムを落とす っていうのはどうやればいいんですか?
ハァ?
やり方教えろよてください
よくわからんね
>>697 DOWNITEM(LPSTR ITEM,30);
つ 垂れ流しの腕輪
ねだやしの巻物を投げつけられる 焼きおにぎりにされる デロデロになる
なんでシレンの話題が出てんの?w
結局697は何が言いたかったのか
>>701 Win32でない何かのAPIの質問をされても困る。
落し物ゲーム作りたいという熱意は伝わったw
RPGツクールじゃねーか?
えろよてください
スローガン:キチガイに構うな
>>703 ありがとうございます!ちゃんと動きました!
関数が全部載ってるサイト教えてよママン!
>>715 うひょー!
英語ってむつかしいよママン!
せめてどこをクリッコして調べればいいのか教えてよママン!
全部載ってるサイトなんだから全部読めばいいんだよ
分かったよ!僕頑張るよママン!
>>716 お前の知りたいことはどこをクリックすれば分かるんだ?
>>719 日本語と見比べてみたら英語にしか関数載ってないじゃないか!!
なんて鬼畜なのマイクロソフト!
英語漬けの電源入れてくるよママン!!
もういいから
(´・ω・`)
関数だけ覚えたってしょうがないのに……。
関数を単語帳に書いて全暗記した俺に謝れよ
>>725 バージョン毎のAPIの挙動の変化まで暗記してたら神!
あるいは才能の無駄遣い
>>725 嘘だぁ
ほんとならアイテムを30%で落とすやりかたやってみ
そ、その手にはのらねぇ!
>>725 じゃ、次は全部のウィンドウメッセージの暗記。
それが終わったら、<windows.h>をインクルードして使える
全てのインタフェースとそのメソッドを暗記。
>>727 0から9までの乱数の無限ストリーム用意して、
012だったらアイテムを落とす。
char *drop_rand = "012345678901234567890123456789";
int ndrop = 0;
char *DropItem30Percent(void) {
if (drop_rand[ndrop++] <= 2)
return "アイテムだった";
return "ゴミだった";
}
731 :
よおよお :2007/10/01(月) 01:46:39
GetSystemPowerStatusで電源情報を取得したいのですが、SYSTEM_POWER_STATUS構造体のうちの ACLineStatusとBatteryLifePercentメンバーの情報しか取れません。 ほかのメンバーはすべてUnknown です。 API VC6++です。 なにか改善策はあるでしょうか? 特におかしなことをしているわけではないんですが GetSystemPowerStatus(&sps); switch(sps.ACLineStatus) { 以下略
733 :
よおよお :2007/10/01(月) 02:14:26
APIで取得できないなら、PCのバッテリ情報なんかはどこで取ってるんでしょう?
734 :
デフォルトの名無しさん :2007/10/01(月) 02:48:47
デバイスドライバ
>>730 うわっ・・・マジで釣れちゃったよ・・・
windowssdkってなんでimg配布なんだよ…
仮想CD-ROMソフトを使えばCDやDVDに焼くことなく 直接ドライブにマウントできるわけだし、imgで問題ないと思うけど
サポート無しだけど、MS製VCDドライバも提供されているしな。
逆に736は何だったらいいと思っていたのだろう?
そりゃあexeかmsiじゃないの?俺もそっちの方がいいし。
むしろ小分けにしてだして欲しい。ツールとか。
>>736 >>737 その用途のためにMS謹製の仮想CDツール配布してたと思ったけど今無くなっちゃったの?
Vistaじゃ使えないんです><
Vista未対応のならWebInstall版あるぞ
ExpLzhってUDFには対応してなかった気がするが
vistaにはdaemontools使えないの?
騙されちゃらめぇ
VISTAでもdaemontools使えるよ
年に数回しかマウントしないんでどらえもん入れる気にならない。 MSには頑張ってほしい
わざわざ入れたくないから初めから入れとけってか
>>752 それも道理かもな。今日日割れ物じゃなくともイメージ扱う機会も多いし。
UAC切ったりマニフェストを書けば動くようになるものも多いのだけれど、 そういうのじゃ動かないの?
質問です。 EDITコントロールにて、Excelのセルみたいに、垂直中央揃えしたくて 調べてみたのですが、そういったことは出来ないみたいです。 何か代案はないでしょうか? 「表示したい位置になるように垂直の位置をずらせばいいじゃん」とかはなしでお願いします。
>>755 リッチエディットコントロールじゃダメ?
づらせばいいとおもうよ
Cを最近勉強し始めたばっかなんですが、 Windowsはアプリケーションにメッセージを渡していますが、 例えばRipIt4Me.exe等はDVD Decrypter.exe等を自動で操作しています。 これは、DVD Decrypter.exeにRipIt4Me.exeがメッセージを渡しているのですか?
かつらじゃねーよ
>>755 「「XXXXXXX」とかはなしでお願いします。 」とかはなしでお願いします。
れみりゃかわいいよれみりゃ
>>755 ES_CENTER ってなかったっけ? 古いWindowsだと、 ES_MULTILINE も指定しないと動かないみたいだけど。
ちょっと記憶が曖昧だな・・・
誤爆とその対応に吹いたw
>>762 垂直中央揃えは未対応だよ。
シングルラインなら、垂直位置をずらすのも現実解と思うけどな。
マルチラインは、表示と編集を分けるか、全て自前で実装するしかないな。
例えばエロゲのタイトル画面みたいにマウスやキーボードで選択したら選択中の ところが点滅したりするのってMOUSEMOVEやKEYDOWNとSetTimerとBitBltで組み合わせて するしかない?
そんな実装方法でゲーム作り始めた日には、あっという間に破綻する予感。
じゃあどうすればいんだよヽ(`Д´)ノ 今のところDirectXとか他のを勉強するとかいう選択肢は無しで
やる気がないなら諦めるという選択肢しか残っていない。
なければ自分で作る。 それがプログラマーだよ。 作 −俺の尊敬する上司ー
>>767 エロゲのタイトル画面なんて見たことないからわからんよ。
>>767 WPFならそういうのたくさんあるよ。
Win32 APIでやりたいなら作れとしか。
BitBltじゃほぼ確実に描画速度が追いつかんけどな 素直に吉里吉里みたいなスクリプターでも使っとけよ
ありがとう。WinAPIではきついのか 別にそれほど作りたいわけでもないしもう少しWin32APIを集中的に勉強したいんで諦めます
BitBltなめんな! GDIだって条件が揃えばハードウェアアクセラレーションは効くから速いよ。 で、あの質問の本質はそんな話じゃないと思うんだ。 一般的なWindowsアプリケーションとゲームでは、メインループの構造が 全然違うからSetTimerなんか使わないよってことだと思う。
ゲームだとPeekMessage使うからとかそんな話?
>GDIだって条件が揃えばハードウェアアクセラレーションは効くから速いよ。 ハードウェアごとの条件を覆うのもWin32API役割の一つなのに 条件を揃えるとか本末転倒じゃないかと思った。 あとメインループの構造について 一般のWinアプリ GetMessage→TranslateMessage→DispatchMessage→最初へ ゲームの類 PeekMessage→(メッセージがあれば:TranslateMessage→DispatchMessage→)Input→Render→最初へ そんなに違いは無いような
>ハードウェアごとの条件を覆うのもWin32API役割の一つなのに >条件を揃えるとか本末転倒じゃないかと思った。 あほ
このスッドレを最初から読めばカッペでもWin3あぴが扱えるようになるっぺ?
>>769 後々ウィンドウプロシージャの条件分岐がすごいことになりそうって言いたいんだと思う
case WM_KEYDOWN:
if (titleScreen){
...
} else if (gameoverScreen) {
...
} else if (........) {
...
}
みたいに
それを御し切れると思うなら、べつにいいんじゃないか
>>777 DDBのBitBltなら速かったけれども
残念ながらVistaでは……
Graphics.DrawImageに比べりゃBitBltなんて速い方
ポインタ理解できたよー!! 俺最強wwww
質問します。 wsprintf(str, "%.0d", num)にて numが0のときは表示しない、 0以外のときは表示するって処理をしようと思いました。 ですが、なぜか0が表示されてしまいます。 ためしにsprintf(str, "%.0d", num)にて試しましたが0は表示されませんでした。 ワイド文字も使う予定なのでsprintfは使いたくありません。 どうしたら希望道理の動作をするように出来るのでしょうか?
_stprintf か?
789 :
787 :2007/10/02(火) 19:41:54
>>788 おぉ、_stprintfマクロですか。
printfに置き換えられるみたいですしいけそうですね。
ありがとうございます^^
おまいらプログラミング勉強し始めて何年くらい?
AVIFileGetStreamで作ったIAVIStream*は、AVIStreamReleaseで解放することになってるみたいですけど、 これってIAVIStreamのReleaseで解放してはだめなんでしょうか?MSDNに一切記述がなくて・・・ やってもいいならエラー処理の都合でCComPtrで管理するようにしたいんです。
AddUrlToFavoritesのMSDNの記述って間違ってない? MSDNは最後のパラメータをTRUEにするとダイアログが出るって書いて有るけど 逆なんだよねー ヘルプの記載しミスなのかバグなのかを知りたい。
説明を読む限り、普通のReleaseと処理が変わらないように見えるな。 COMがまだ普及していなかった頃だから、 分かりやすいように関数を用意しておいたんじゃね?
>>791 デバッガで追ってみれば?
上手く動くならきにしな〜い。
>>790 もう四年ぐらいだな。
なんか周期があって、半年まったくやらなかったり、
一ヶ月プログラムしかしない時期もあった。
こんなの学生の時期だけだろうな。
ShellExecuteで起動されるアプリケーションを取得するAPIあったら教えてください。 最悪レジストリ読みになるのかな。
何をおっしゃいますやら
>>797 お前はレジストリを読むのにAPIを使わないのか?
IShellExecuteHookのことを言ってるのかしら もしそうなら、あれはもう忘れてくださる?
801 :
デフォルトの名無しさん :2007/10/03(水) 11:25:22
ソケット通信で質問ですが 自分がクライアントで相手がいない時にconnectすると約20秒間connectから抜けてこないのですが connectのタイムアウトを設定する方法を教えてください
拡張子とアクションに関連付けられたexeの古パスを取りたいんじゃねーの
非ブロッキングconnectにすればいいんじゃない
>>801 ありません。connect()外部の手段でタイムアウト処理を実装する必要があります。
>>801 スレッドを別に作ればいいんでねーの?C系のマルチスレッドは面倒だが。
非ブロッキングで行ける。 判定が若干面倒になるが。
マルチスレッドにしなくても、イベント処理でOK。 つーか、Winsockの使いこなしはこのスレで語るレベルを超えるので、 真面目にサイトを探して勉強して欲しいと思う今日子の頃。
808 :
デフォルトの名無しさん :2007/10/03(水) 13:25:25
>>803-807 おまいらの言いたい事はわかりましたありがとう。
ぐぐったら山ほど出てきたので非ブロッキングでやります。
今日この頃→きょうこのごろ 今日子の頃→きょうこのころ
EDITコントロールの背景色や枠の色ってどうやって変えるのでしょうか?
>>810 WM_CTLCOLOREDIT
WM_CTLCOLORSTATIC
WM_NCPAINT
812 :
810 :2007/10/03(水) 20:03:25
他のウィンドウと連動して最小化、元のサイズに戻すということを したいのですが、どうすればいいのでしょうか?
SDKforVistaをインストールした。 ドキュメントでAPIリファレンスを読んで、Vistaでの新規API&追加フラグは分かったんだけど、 その一覧にはない仕様変更されたAPIはどうやって確認するの?
>>814 とりあえずVista移行ガイド系のドキュメントがあちこちにあるはずなので
探して読む。
>>813 他のウィンドウと連携の部分はスレッドでGetWindow*を使ってチェック。
んで、自分のウィンドウの制御はSetWindowPosやMoveWindowを使えば良いじゃない?
「ファイルを開く」ダイアログの2回目の動作がおかしいです。 なぜかアプリケーションが落ちてしまいます。 長文ですが指摘お願いします。 ↓現状 static OPENFILENAME ofn;で宣言し、 WM_CREATEメッセージにて、 ================================== memset(&ofn, 0, sizeof(ofn)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hWnd; ofn.lpstrFilter = "txt(*.txt)\0*.txt\0csv(*.csv)\0*.csv\0\0"; ofn.lpstrFile = szFile; ofn.lpstrFileTitle = szFileTitle; ofn.nMaxFile = sizeof(szFile); ofn.nMaxFileTitle = sizeof(szFileTitle); ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; ofn.lpstrTitle = "ファイルオープン"; ================================== のように設定しました。 case WM_COMMANDにてIDM_READがくるとダイアログを開くようにしました。 ================================== switch (LOWORD(wp)) { case IDM_READ: GetOpenFileName(&ofn); break; } ================================== 1回目のダイアログ開く操作は、普通に動作しているように見えますが、 2回目のダイアログ開く操作は、マウスカーソルをcsvファイルの上に持っていくと、ウィンドウが落ちてしまいます。
毎回初期化処理、ちゃんと走らせてるの?
えっと・・・、 もしかしてOPENFILENAME内のどれか毎回初期化いるのですか?
ここ ofn.lpstrFileTitle = szFileTitle;
szFile, szFileTitleだな あと、デバッグのしかたを勉強すべし
書き込む前に試しに、 switch (LOWORD(wp)) { case IDM_READ: szFile[0] = '\0'; szFileTitle[0] = '\0'; GetOpenFileName(&ofn); break; } としていましたが、 何度かマウスカーソルを動かしたらやっぱり落ちています。
szFileとかもstatic変数なの?
824 :
822 :2007/10/04(木) 22:52:01
もちろん、static変数にしました。
ってか、マウスカーソル動かしたら落ちるってどゆこと?
826 :
822 :2007/10/04(木) 23:00:19
よくわかりませんがダイアログを開いて、 ファイル名のところ(特に前回開いた拡張子と同じやつらへん?)で マウスをグルグル動かしているとウィンドウが閉じてしまうことがあるんです。 GetOpenFileNameの返却値を、 MessageBoxで表示しようとしてもMessageBoxが出てこないまま落ちてしまうし・・・
昔あったAdobeReader絡みの不具合か? あれって修正されたんだっけ?
なんかの初期化忘れてるに俺もイピョウ。
とりあえず環境plz
>MessageBoxで表示しようとしてもMessageBoxが出てこないまま落ちてしまうし・・・ ASSERTも「ハンドルされていない例外」もでずに落ちるのか?
NT系ならServerとかのサービスを走らせてないと例外が発生するっつー話があるが まあ、関係なさそうだな
833 :
822 :2007/10/04(木) 23:47:00
返信遅くなりました。 環境ですが、 OS:WinXpHomeSP2 コンバイラ:borlandC++ です。 ソースどっかにあげたほうがいいですか?
あげられるなら、是非。
835 :
822 :2007/10/05(金) 00:01:44
waveOutOpenの引数にコールバックを指定した場合、waveOutWriteしたあとwaveOutProcはどのタイミングで呼ばれるのでしょうか? メインループでGetMessageやPeekMessageを呼んだときですか? また、スレッドセーフでしょうか?
837 :
822 :2007/10/05(金) 00:07:20
>>830 >ASSERTも「ハンドルされていない例外」もでずに落ちるのか?
そうゆう状況です。
一切、そんな挙動起きず、何度ファイル開いてもグリグリしても問題なし。 当方、VistaHomePre VS2008EE Debug/Release両方で確認。
839 :
822 :2007/10/05(金) 00:48:53
う〜ん、なんでだろ・・・。 パソコン再起動してみるか 意味無いだろうなぁ・・・
うちもまったく問題なし Vista x64 VS2008 beta
64bitVista使ってる人初めてだ。あんたすげーよ。
>>840 ちょw32bitと64bitは違うけどほとんど同じ環境w
だれか他の環境持ってて試せる人いないのかな?
だから仕様だって
Adobe Reader をアンインストールする ⇒ 落ちなくなる ということもある
コモンダイアログがおかしいようなら、マニフェストで別のを使ってみる。 <?xml version='1.0' encoding='UTF-8' standalone='yes'?> <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> <dependency> <dependentAssembly> <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*' /> </dependentAssembly> </dependency> </assembly>
スタティックコントロールの文字列の幅(≠文字数)を取得出来るような関数ってありませんか? 「文字列」、「幅」、「テキスト」あたりでググってみたんですけどそれらしいものが見当たりません。 文字列の幅を取得して、その幅に合う幅のスタティックコントロールを作りたいんですけど…。
GetTextExtent32 とか、そんな感じの名前の関数が在ったような気がする。 ちょっとうるおぼえだから、びみょんに名前違うかもしれんが、まあこんな感じだった。 MSDNとかでソレっぽいのを探してみてくれ。
>>848 DrawText
幅も高さも計算してくれる
うろ覚えをうろ覚えなんだからしょうがないなw
おいときますね GetTextExtentPoint32
うるおぼえ(←なぜか変換できない)
うろ覚え←なぜか変換できる
>>822 俺も昔、その症状が出てかなり悩んだことがある。
プログラムの最初で CoInitialize(Ex) を呼び出すようにしたら直った。
「┌」や「├」などの罫線文字を使って 文字列入りの枠を等幅フォントのDrawTextで一気に描画しているのですが、 フォントを斜体にした場合、この罫線文字まで斜体になってしまいます。 これってやはり別フォントを選び直すか、罫線を別途描画するしかないのでしょうか。 罫線だけは斜体にしないような都合のいいフォント設定方法はありませんよね?
無い
860 :
sage :2007/10/05(金) 13:17:09
質問です。 「ネットワーク接続」→「ローカルエリア接続」→ 「ローカルエリア接続の状態」→「全般」の中の「継続時間」 と表示されている時間を取得する方法はありますでしょうか・・・。
知らん でもワラタ
生成したフォームをあるウィンドウより前面(ZオーダーのTOP?)に 配置したいのですが、何か良い方法はないでしょうか。 SetWindowPosを試してみたのですが、「自分自身より前面」には出来たの ですが、他のウィンドウを指定すると上手く行きませんでした。
863 :
822 :2007/10/05(金) 14:20:57
>>856 起きなくなった気がします。
ありがとございますw
ウィンドウサイズを調整するために、AdjustWindowRectExを使っているのですが ステータスバーもつけたウィンドウなのでその分ずれが発生しています。 暫定的にウィンドウサイズに(y+25)としたら見た目が近くなりました。 ですが、ステータスバーのサイズが25と固定なのでしょうか? (サイズが変わったら結果もずれるし・・・) ですのでステータスバーのサイズの正しい取得方法があれば教えてください。 お願いします。
ふつうに、ステータスバーのハンドルでGetWindowRectすればいいんでない?
GetWindowRect で取得すればいいんじゃないかと
867 :
864 :2007/10/05(金) 15:06:08
>>865-866 あ、そっか・・・。(あれもウィンドウだってこと忘れてた)
あほだ自分・・・
868 :
848 :2007/10/05(金) 15:23:26
GetTextExtentPoint32なんて便利なのがあったんですね。 文字列の幅の取得は成功するんですが、フォントを変えてからの 文字列の幅を取得しようとしてもデフォルトのフォントのままの幅が返ってきてしまいます。 一応フォント変えてからGetDC()でデバイスコンテキストハンドル取得してるんですけど・・・。 これだとまずいんでしょうか・・・。何か対処法ってありませんか? /*フォント設定*/ SendMessage(hStaticWnd, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0)); /*文字列幅の計測*/ hdc = GetDC(hStaticWnd); GetTextExtentPoint32(hdc, (LPCTSTR)str, lstrlen((LPCTSTR)str) , &size);
DCにフォントを設定しないとだめだろ
870 :
848 :2007/10/05(金) 15:50:24
>>869 よく分かってなかったみたいです。
SelectObject()でフォント設定したら出来ました。
ありがとうございます。
871 :
TaskMan :2007/10/05(金) 19:26:25
Wtsナントカ
ollydbgとかで追いかけると良いんじゃないかな あるいはインポート関数しらべて怪しいのぐぐってみたり XP以前かVistaかで違いが出てきそうな処理の代表だからしんどそうだけどね
ファイルから1行ずつ別の変数に読み込みこんで、また1行ずつ書き込みたいんですが 何かいい方法ありませんか?
ReadFileしてWriteFileすれ
ReadFileで1行ずつ読むのって面倒じゃね? 普通にfgetsでも使えばいいと思うが。
このスレ的な回答なんだろう
LRESULT CMyD3DApplication::MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_KEYDOWN: { switch ( wParam ){ case VK_SPACE: スペースが押されたときの処理 とやってますが、1回変換とか無変換のスペースに隣接してるキーを押してしまうと それ以後何をやってもVK_SPACEが来なくなります。 1度こうなるとアプリを再起動しないと直りません。 何がおかしいのでしょうか。
日本語入力になるからじゃねぇの?
>>875-876 ありがとう。
ReadFileで弄ってとりあえず1行1行読み込めるようにはなったけど書き込むのが
ちゃんと改行してくれない('A`)
もう諦めてWIN32APIにこだわらずC++の方法で開くことにします
改行コード付加しなきゃ改行しないのは当然じゃね
\r\nじゃなくて\nしか書いてないんじゃね
>>883 それ、俺もあったなw
なんで改行されないのかと3時間くらい悩んだ。
俺はなかった 一瞬で閃く
メモ帳(Editコントロール)が\nだけで改行してくれれば問題ないけどな
>>879 そういう問題じゃないキガス、どうやっても解除できないし。
どなたか試してもらえませんかね。
>>887 そういう問題じゃないキガス、どうやっても解除できるし。
どんだけレベルなんで消えてもらえませんかね。
889 :
デフォルトの名無しさん :2007/10/06(土) 20:37:51
質問なのですが、画像をウィンドウに表示し、非アクティブにしました。 再び画面を表示すると画像やメニューが消えています。画面のアクティブ、非アクティブを知るAPIないでしょうか?
>画面のアクティブ、非アクティブを知るAPIないでしょうか? GetForegroundWindow 画像が消えた原因は別だけどな
猫Cにてモーダルダイアログのところを見ていたのですが、 「3.「OK」ボタンが押されたときに、ダイアログボックスのに入力された情報を読み取る」 の処理の部分が「3.は考慮しません」の一言でやり方が書いていません。 やり方がわからないのでSendMessageで親に送るとか、グローバル変数にするとかしか思いつきません。 どうやったらいいのでしょう?
まさかアクティブになったら描き直すつもりなのか?
>>890 WM_PAINTとBeginPaintのところ見直したほうがいいよ
895 :
891 :2007/10/06(土) 20:57:23
ありゃ、ネットのには載ってたのか・・・ ありがとです
>>891 君の見てる場所とは違うが猫のサイトにこんな記述がある
http://www.kumei.ne.jp/c_lang/sdk/sdk_15.htm >次に、ダイアログボックスもメニューの時と同じようにボタンが押されたときなどに
>WM_COMMANDメッセージがでます。それを捕まえて、OKボタンか、CANCELボタンなら
>EndDialog関数でダイアログボックスを終了させます。
>この関数の第2引数はDialogBox関数の戻り値 になることに注意して下さい。
>OKボタンが押されたとき、グローバル変数に各コントロールの状態をコピーしなくてはいけません。
>エジットボックスに入力されている文字列は GetDlgItemText関数で取得することができます。
>例を見れば引数の意味は分かりますね。
猫の著者は堂々とグローバル使ってるから参考にしない方がいいよ
897 :
889 :2007/10/06(土) 21:05:07
>>890 >>892 >>893 ありがとうございます。
WM_PAINT は使ってなくて、WM_DRAWITEMで描いてます。
察しのとおり、アクティブのとき画面を描き直そうと考えてました。。
画像が消えた原因はなんなのでしょうか?ご教授お願いします。。
898 :
デフォルトの名無しさん :2007/10/06(土) 21:08:09
ご教授お願いします って書くやつ多いけど 正しくは ご教示ください
WM_DRAWITEMってボタンとかメニュー項目とかリストボックスの項目を描くときに使うやつだよ?
WM_PAINTで上書きされるから
「無効領域の発生」ってのと、WM_PAINTが呼ばれるタイミングについて理解すればいいと思う。
902 :
889 :2007/10/06(土) 21:32:45
>>899 はい。リストボックスを勉強しています。
>>900 貴重な助言ありがとうございます。
WM_DRAWITEMでWM_PAINTのようなInvalidateRectのように任意で描きなおすような命令ないでしょうか?
WM_DRAWITEMで任意に書き直すと言う部分で苦戦中です。
903 :
891 :2007/10/06(土) 21:40:17
>>894 ごめん、参考になりそうなとこがどれかわからなかった・・・。
どの部分かわかりやすく教えてください^^;
>>903 メモリを確保してEndDialogの引数で返せば
質問です。XP、VS2005 です。 MDI のように、子ウィンドウが親ウィンドウの範囲内でしか移動できない (親ウィンドウの外に移動しようとすると、親ウィンドウのふちに隠れる) ようにするにはどうするのでしょうか? やりたいのは、こんな感じです。 ・ダイアログの中に、子ダイアログを配置する。 ・子ダイアログは親ダイアログより大きく、そのため、一部分しか表示されない。スクロールバーで可視範囲を移動する。 よろしくお願いします。
907 :
デフォルトの名無しさん :2007/10/06(土) 23:24:42
WS_CHILD つけて WS_
WS_ …?(;--
んなんも分からんのか、死ね
MDIが嫌なら自分でスクロールイベント捕まえて クライアント領域移動するしかないんじゃね
動かすのは簡単なのですが、 親ウィンドウのふちに隠すのが分かりません…。
913 :
906 :2007/10/07(日) 00:27:54
今やってみたのですが、ダイアログの上においた、コントロールなど通常のウィンドウは、WS_CHILD で普通にふちに隠れました。 が、ダイアログの上に置いたダイアログは隠れませんでした…。何か特殊な処理が行われているのでしょうか…。
914 :
906 :2007/10/07(日) 00:34:17
自己解決。 ダイアログを作ってから SetWindowLongPtr で WS_CHILD を与えるんじゃなく、 リソースエディタ上で、ダイアログに "子" 属性を与えるとうまくいきました。 ヒントをくださった方々、ありがとうございました。
リストボックスコントロールで、表示域に収まらない項目を、 左右にスクロールさせるなどて表示できるようにしたいのですが、 ためしにWS_HSCROLLをコントロールのスタイルに加えても 水平スクロールバーは出てきませんでした。 どうやるのがセオリーなんでしょうか。
>>915 LBS_MULTICOLUMN と LBS_DISABLENOSCROLL を指定してみ
>>915 水平スクロールバーは出てきましたが、つまみもなく、
無効状態みたいになっててエディットボックスみたいな
スクロールはしてくれそうにないです。
こうなるとリストビューの方がよさそうですね・・・。
918 :
yappi- :2007/10/07(日) 10:12:30
あのスミマセヌ ウィンドウを最大化させるってどうやってやるんでしたっけ? MaximizeWindowとかそういう関数はないんでしょうか?? 一応 SendMessage(hwnd, WM_SYSCOMMAND, (WPARAM)SC_MAXIMIZE, 0); としましたが、スマートじゃないですよねw(汗
ググれば沢山でてくるけど
yappi-氏ね
921 :
yappi- :2007/10/07(日) 10:40:51
ShowWindow( hWnd, SW_MAXIMIZE ); ですね。 ああ恥ずかしい・・ スミマセヌ
ゆるさん
typedef struct{ ... }test; static test suuti={...}; こういう風に構造体を作って自作関数にvoid kansuu(test suuti)みたいに呼び出しているのですが コマンドプロント上ではきちんと動作するのに、WINAPIを使うと型名が必要(自作関数のvoid kansuu(test suuti){ の行)と未定義のシンボル WndProc(関数 InitApp ) というエラーがでます 自分で何回も見直しておかしいところは全て直したつもりなのですが、直りません 何が原因なんでしょうか?
志村〜抜けてる!抜けてる!
>>923 あなたがプログラマーに向いてないのが原因。
次の質問をどうぞ
すみません かなり考えたんですが分かりません・・・ 本当に困ってるんで教えてください;
「コマンドプロント上」と「WINAPIを使うと」を 条件の違いとして提示している時点で意味が判らん。
構造体を自作関数で使ったことがなかったので コマンドプロント上でテストしてみて動いたのをAPIを使ったプログラムにコピーしても動かなかったのでこう書きました 抜けてると言われて思いつくのはstaticしか・・・
まずC言語の基礎を見直した方がいいぞ
typedef structなんて書く人ひさしぶりに見た。
クラスとかテンプレート使わなくても、C++を使った方がいいと思うが。
>>930 ;とか抜けてるとこない?
;が抜けてるところは見当たりませんでした 抜けてるというのがヒントなのでしょうか?
>>933 俺が速攻で志村抜けてるって書いてやってるのに、スルーだもんな。
もうAPIとか無関係なのでここではスレ違い。
>>934 すみません
一応
>>930 でレスをしたつもりでした
本当に思いつかなかったので頭のネジのことを言ってるのだと思ってました
>>935 すみません
APIが関係してないことが分かっただけでも良かったです
今日はもう考えるをやめて明日もう一度見直してみます
死ぬまで考えてればいいのに
俺も傍から見てるけどわかんね 何が抜けてる?
>>932 え?そうなの?俺いまでも愛用してるけど・・・引数に使うと便利なんだよ。
プログラミングなんて人それぞれだろ と、
941 :
デフォルトの名無しさん :2007/10/07(日) 21:58:26
WM_PAINT: BeginPaint(hWnd, &ps); SelectObject(memDCS, (HPEN)PRect); GetClientRect(hWnd, &rc); FillRect(memDCS, &rc, cFont.hBrush); Rectangle(memDCS, rc.left, rc.top, rc.right, rc.bottom); BitBlt(hdc, 0, 0, 400, 500, memDCS, 0, 0, SRCCOPY); EndPaint(hWnd, &ps); break; WM_SIZE: GetClientRect(hWnd, &rc); InvalidateRect(hWnd, &rc, FALSE); break; 症状 グラフィックは描けているのですが、ウィンドウが新しいウィンドウの下に行くとグラフィックが消えます。 ウィンドウサイズを下へずらすとステータスバーが連なる絵になります。解決方法ご教示ください。。
>BitBlt(hdc, 0, 0, 400, 500, memDCS, 0, 0, SRCCOPY); この hdc はどこから?
>>942 グローバル変数でメインウィンドウのHDCになります。もう少し考えて見ます。。
オーナードローとWM_PAINTって共存できないんでしょうか。。今この部分の動作を勉強しています。。
ウインドウスタイルのクリッピングが適切に設定されていないんじゃないか?
945 :
デフォルトの名無しさん :2007/10/07(日) 23:25:22
>>944 口頭でうまく説明できるか分かりませんが、
ウィンドウ左半分をWM_PAINTで描き、ウィンドウ右半分をオーナードローで描こうとしています。
WM_SIZEが発生した場合、オーナードローが優先されてWM_PAINTの部分が
>>941 のような症状が出ます。
たしかにクリッピングが適切に処理されてないと思います。オーナードローのWindowCreateExの座標部分をずらして
WM_PAINTの部分を確保している状態です。この場合だとメインウィンドウのHWNDがオーナードローの方へずれてしまうだけなんですよね。。
なにかいい方法ないでしょうか・・?
そもそもやろうとしていることに無理がある。
なんつうかウィンドウ2個にした方が簡単じゃね
>>947 たしかにそのとおりなんですが。。。
オーナードローとWM_PAINTの優先順位というか。動作確認というか。勉強してみようと思った次第です。
優先順位はオーナードローの方が高いのか検証中です。
答えてくださった方、変な質問で申し訳ありませんでした。。
>>941 memDCSにHBITMAPは?
サイズが変更されたらHBITMAPのサイズが小さいときはHBITMAPのサイズも変更
950 :
949 :2007/10/07(日) 23:47:37
聞き忘れ memDCSってメモリDCの事だよね?
帰っちゃったかな?
メモリDCの場合描画処理したいなら
CreateCompatibleBitmap などを使ってHBITMAPを作成し
SelectObject(memDCS, (HBITMAP)hBitmap); をする必要がある
この後にmemDCSに対して描画処理を開始する
もしHBITMAPを設定してあったとしても
>>949 でも書いたけど
サイズが足りないときはそれに合わせて変更する必要がある
WM_PAINT: BeginPaint(hWnd, &ps); SelectObject(ps.hdc, (HPEN)PRect); GetClientRect(hWnd, &rc); FillRect(ps.hdc, &rc, cFont.hBrush); Rectangle(ps.hdc, rc.left, rc.top, rc.right, rc.bottom); EndPaint(hWnd, &ps); break; そもそもこうした場合でも成功するのか?
953 :
デフォルトの名無しさん :2007/10/08(月) 00:36:15
VC++で作成されたサンプルプログラムを、DLL化してVBから利用しようとしているのですが DLL内でLoadLibrary()を使って、別のDLLを読み込もうとするとエラーが出ます。 DLLからDLLは読めないんですか? それともヘッダとか調べてDLLの読み込み部分を改造すればいいのかなあ・・・ マジ素人なんで何質問してるかも微妙ですorz
悪い事は言わない やめておきなさい
マジ素人ならそんな事しない方が
DLLからDLLは読み込めます
>>953 普通にLoadLibrary()出来る
普通にミスだろ
珍しく千客万来だなw DLL内でLoadLibraryは可能 呼ぶタイミングを間違うと場合によっては偉い事に エラーが出てるならパス通ってないとか そもそも呼び出そうとしてるDLLが無いとかそんなん
そういう場合はLoadLibraryするよりLIBくっつけてすたちっくのほうがよくね?
cdeclになってたりして
あとは >VC++で作成されたサンプルプログラムを、DLL化 この段階で間違ってるとか
>>958 こういう日があってもいいと思われ。
おもしろくていい。
963 :
953 :2007/10/08(月) 01:12:29
>>954-961 ありがとうございます。
サンプルは実行ファイルと同じフォルダにあれば動作したので
DLLと同じフォルダに置いておけば良いと思ったのですが
なんとなく、システムフォルダに入れたら動きました
ここで質問するような事ではないかもしれませんが、
同じフォルダで動作させるためにパスを通すというのは、プログラムではどうやるんでしょうか?
LIBくっつける、というのも良く分かりませんが、勉強してみます。
>>963 自分がいるパスとってくりゃいいじゃん。
ロードするときゃそのパスとファイル名くっつければいい。
うまくいかなきゃメッセージボックスでもなんでもいいから
実行しようとしているパスを表示してみりゃいい。
>>963 通すパスが解ってるならフルパスでしろよ
GetModuleFileNameでexeかdllのパスを取得しろよ
つか同じフォルダにおいてあるならファイル名だけでロードできる筈 無駄にパスつけてんじゃねーの
970 :
953 :2007/10/08(月) 01:29:15
マジすいません 実はC言語も殆ど分かってなくて、イメージがつかめてませんでした。 なんとなく分かりました、ありがとうございました。
>>968 exe と dll(2) が同じフォルダで
dll(1) が別のフォルダって事じゃないか
サンプルdll(2)は実行ファイルexeと同じフォルダにあれば動作したので DLLdll(1) と同じフォルダに置いておけば良いと思ったのですが
>>972 呼び出したパスを検索して
呼び出されたパスは検索しないんだな
正直、知らんかった
DLLからDLL呼ぶなんてあまりしないからな
975 :
デフォルトの名無しさん :2007/10/08(月) 01:49:33
初歩的な質問で申し訳ないです。ウィンドウ上部にメニュー(ファイル(F)など)をつけました。 画面をリサイズした場合、ちらつきが発生します。どうしても気になります。 メニュー部分を描き換えさせない。又はちらつかない方法ないでしょうか。 VC + sdkで作っております。よろしくお願いします。
>>292 付近に似たような話があったが解決しなかったなw
全部同じ人
978 :
975 :2007/10/08(月) 02:00:35
別人ですよ。上の方は確認させてもらいました。うまくいくのかと思って WM_ERASEBKGNDをつけてみたのですが、メニュー部分は関係ないみたいです。 メニュー部分は wc.hbrBackground = NULL; wc.lpszMenuName = MAKEINTRESOURCE( IDR_MENU1 ); wc.lpszClassName = WNDCLASS; return (RegisterClassEx( &wc )); 以外は触っていません。 何か方法ありませんか?
980 :
デフォルトの名無しさん :2007/10/08(月) 02:04:56
まぁ俺は知ってるが教えてやらない
わざわざ上げてまで言う事かよ 黙ってた方がさっさと居なくなるのに
お前だってレスしてるだろうがボケ
お前だってレスしてるだろうがボケ
よほどのアホだな 知ってるそぶり見せたら食い付いてくるだろう 日本語理解できないカッカちゃんですか
985 :
978 :2007/10/08(月) 02:24:31
すみません。。。 質問が悪かったみたいです。 たくさん答えが返ってきてるようなので僕もと思い質問させてもらいました。 空気を悪くしたようで申し訳ないです。失礼します。。。
気にするな。いつものことだ
試したけどちらつかなかったから分からん
>>979-984 こいつら最低だな・・・
黙ってたらとか食いついてくるとかあまりに質問者がかわいそうだ。
初歩的な質問ばかりでスレが埋まるよりマシ
埋め
新スレ立ってから埋めれw
やなこった
立ててくる
パンナコッタ
生め
梅
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。