■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API 質問箱 Build8
251 名前:OFNトースター :03/01/10 14:14
#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, PSTR, int) {
MSG msg;
WNDCLASSEX c;

c.cbSize = sizeof(WNDCLASSEX);
c.style = c.cbClsExtra = c.cbWndExtra = 0;
c.lpfnWndProc = WndProc;
c.hInstance = hInst;
c.hIcon= LoadIcon(NULL, IDI_APPLICATION);
c.hCursor = LoadCursor(NULL, IDC_ARROW);
c.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH);
c.lpszMenuName = NULL;
c.lpszClassName= "test";
c.hIconSm = NULL;

if (!RegisterClassEx(&c)) return 1;

CreateWindow(
"test", "TEST",WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 500, 100, NULL, NULL, hInst, NULL);

while(GetMessage(&msg, NULL, 0, 0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

252 名前:OFNトースター :03/01/10 14:15
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
OPENFILENAME ofn;
TCHAR strFile[MAX_PATH] = "default";
char buf[MAX_PATH];
static HWND hEdit;
static WORD w = 1234;

switch (msg) {

253 名前:OFNトースター :03/01/10 14:16
case WM_CREATE:
hEdit = CreateWindow(
"EDIT", "", WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL, 0, 0, 490, 22, hWnd, 0, ((LPCREATESTRUCT)(lParam))->hInstance, NULL);

memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = 76;
ofn.hwndOwner = hWnd;
ofn.lpstrFilter = "DOC\0*.doc\0HTML\0*.html\0\0";
ofn.nFilterIndex = 0;
ofn.lpstrFile = strFile;
ofn.nMaxFile = MAX_PATH;
ofn.nFileOffset = w;
ofn.Flags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;

254 名前:OFNトースター :03/01/10 14:16
GetSaveFileName(&ofn);
wsprintf(buf, "strFile = %s, nFileOffset = %d", strFile, w);
SetWindowText(hEdit, buf);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}

ここまで。

255 名前:OFNトースター :03/01/10 14:19
僕は、ofn.lStructSize = 76; でしか使えません。
ofn.lStructSize = 88; でofnが使える人の結果も知りたいです。

256 名前:デフォルトの名無しさん :03/01/10 14:24
>>255
msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/CommonDialogBoxLibrary/CommonDialogBoxReference/CommonDialogBoxStructures/OPENFILENAME.asp


257 名前:デフォルトの名無しさん :03/01/10 14:24
荒らしかと思った…


258 名前:デフォルトの名無しさん :03/01/10 14:54

・・・・・・・それが何か?

259 名前:231 :03/01/10 15:05
>>235
ありゃ。確かにCP_ACPみたいだな。嘘ついてスマソ。
VC6以前ではまった気がしたんだが…。
printf("%S", L'あ');
とかできるようになったのかな??


260 名前:256 :03/01/10 15:23
>>255
typedef struct tagOFN {
     :
#if (_WIN32_WINNT >= 0x0500)
void * pvReserved;
DWORD dwReserved;
DWORD FlagsEx;
#endif // (_WIN32_WINNT >= 0x0500)
} OPENFILENAME, *LPOPENFILENAME;

なぜ
ofn.lStructSize=sizeof(OPENFILENAME)
としないのか


261 名前:デフォルトの名無しさん :03/01/10 16:22
精神病患者のオナニーサイト
http://www.enjoy.ne.jp/~gokaino1/

262 名前:デフォルトの名無しさん :03/01/10 17:21

ちょっと聞きたいんだけど、
Win32API の構造化例外を、C++ でハンドリングするとき、

try{ ::InitializeCriticalSection( &cs ); } // 構造化例外を投げる可能性のあるAPI関数
catch( ※ ){ ... }

※ の部分には何を書けばいいのか教えてください。
DWORD でいいのかな?
素直に __try 〜 __except( エラータイプ ) で囲むべき?

263 名前:デフォルトの名無しさん :03/01/10 17:36
...

264 名前:デフォルトの名無しさん :03/01/10 18:12
うそだと思われるけど、catch( ... ){ 

265 名前:デフォルトの名無しさん :03/01/10 18:17
_set_se_translator()、なんてな。

266 名前:デフォルトの名無しさん :03/01/10 18:33
そういえば、昔、「あー、複数の例外にいちいちcatchかくの面倒やな〜
よし、とりあえずcatch(...)しとこ。」とかやってたら、そのtryのなかで
Access Violationが発生してたことに気づかなかったことがあったなぁ。
なんで、catchに行くのか理解できなかった覚えがあえる

267 名前:デフォルトの名無しさん :03/01/10 22:21
BackupRead()とBackupWrite()でOwner,DACL,SACLを全部コピーできる、
Robocopy + SCopy + α みたいなミラーリングプログラムを作っているのですが、
ハマっています。 ご存じの方いたら教えてください。

SE_RESTORE_NAME特権を有効にすると、BackupWrite()で書込み権を持っていない
ディレクトリにファイルを書き戻せますが、書き込み権の無いディレクトリ中に
サブディレクトリを掘るにはどうしたらいいのでしょうか?

どうも、ディレクトリをBackupWrite()する場合、CreateDirectory()してから
BackupWrite()で属性情報だけ書き戻すしかないみたいですが、
CreateDirectory()はERROR_ACCESS_DENIEDになってしまいます。

CreateDirectory()するときだけACLを変更するのも何か違う気がするし...


268 名前:デフォルトの名無しさん :03/01/10 22:22
>>262
_set_se_translator と、マクロを使ったほうがいいのでは…?

struct structured_exception; // Win32API構造化例外クラス

// 例外送出関数と、初期化関数
void trans_st_except( UINT e, EXCEPTION_POINTERS* pe ){
 throw structured_exception( e, pe );
}
// main か WinMain のアタマで呼び出す
void init_structued_exception_hander(){ _set_se_translate( trans_st_except ); }

// マクロ expr には例外を送るような式とか関数を入れると
#define SE_TEST( expr ) \
 __try{ (expr); } \
 __finally{}

使用例
 try{ SE_TEST( ::InitializeCriticalSection( &cs ) ) }
 catch( structured_exception& se )
 {
  (エラー処理)
 }

なんかわからんもんがすっ飛んでくるよりもいいでしょ。

269 名前:デフォルトの名無しさん :03/01/10 22:38
赤信号、皆で渡れば怖くないってやつじゃないか。

270 名前:デフォルトの名無しさん :03/01/10 22:46
つまらなくなるね。


271 名前:デフォルトの名無しさん :03/01/11 00:05
ネタにマジレス北國新聞

272 名前:デフォルトの名無しさん :03/01/11 00:12
 思ってる事をそのまま言ってしまうと行為=無責任発言
ということ。
 正当性がある意見なら、実社会でも言える。
 内部告発なんかも、実社会でも十分可能。

273 名前:デフォルトの名無しさん :03/01/11 09:35
がんがれ

274 名前:デフォルトの名無しさん :03/01/11 09:36
串設立&串解禁きぼん

275 名前:デフォルトの名無しさん :03/01/11 10:09
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────

276 名前:デフォルトの名無しさん :03/01/11 11:32
NYでログ取ってる方、いらっしゃいますか?

277 名前:デフォルトの名無しさん :03/01/11 12:35
なんとなく分かりました。thx

278 名前:デフォルトの名無しさん :03/01/11 13:06

     ま た  ま さ と  か!



279 名前:デフォルトの名無しさん :03/01/11 15:55
ひろゆきツマンネー!!

280 名前:デフォルトの名無しさん :03/01/11 16:00
288 :ひろゆき ◆3SHRUNYAXA :03/01/08 17:56 ID:rLfxQ17l
>厨房板は本当に閉鎖なのか?
初耳。


281 名前:デフォルトの名無しさん :03/01/12 00:01
うそをうそと

282 名前:デフォルトの名無しさん :03/01/12 00:12
600,000,036…

283 名前:デフォルトの名無しさん :03/01/12 02:49
近藤朋(享年15)
今日午前4時前、幸田駅の線路脇の道路でキャッチボールしていた中学3年生4人組がいた。
ところが、ボールが線路に入った。
幸田駅の線路に、ボールを取りに入った、中学3年生の女子1名が、貨物列車に
ばばばばばピィー―  きゃ〜!  ブァプアあああああああー―――――――ン!!!!!!



284 名前:デフォルトの名無しさん :03/01/12 02:54
ご愛嬌・・・
被害の大きさに差がありそうだけども。
誹謗中傷一番垂れ流しってどこかねぇ?

285 名前:デフォルトの名無しさん :03/01/12 10:21
さあゲームの始まりです

愚鈍な警察諸君

ボクを止めてみたまえ

ボクは殺しが愉快でたまらない

人の死が見たくて見たくてしょうがない

汚い野菜共には死の制裁を

積年の大怨に流血の裁きを

SHOOLL KILLER

学校殺死の酒鬼薔薇

286 名前:デフォルトの名無しさん :03/01/12 16:19
トラックバーにTBM_SETPOSを毎回送りつづけてスライダーを動かしながら、
他のウィンドウにボタン操作のメッセージを送るようにしたいのですが、
この状態だと他のウィンドウへのWM_COMMANDメッセージが送られず、操作できません。
どうすればできるのでしょうか?お願いです。教えて下さい。

287 名前:デフォルトの名無しさん :03/01/12 17:45
すいません。おかしな操作をしてフォーカスを勝手に変えてたのが原因でした。
ちゃんと操作できました。さようなら。

288 名前:デフォルトの名無しさん :03/01/12 20:36
じゃあなぜ今回になって
俺達を見限ったのだ?

289 名前:デフォルトの名無しさん :03/01/12 20:40
ナイスw

290 名前:デフォルトの名無しさん :03/01/12 20:49
sports3フカーツ?

291 名前:デフォルトの名無しさん :03/01/13 01:17
ウィンドウやコントロールのキャプションは SetWindowText で
変更できるけど、メニューのキャプションを変更するには
どうすればいいですか?
(「最近使ったファイル」のようにしたいけど、あれは毎回
メニューを作り直している?)

それとアクティブでなくなると消えてしまうウィンドウ
(メニューやポップアップ)をスパイで捕まえる方法があったら
教えてくらはい


292 名前:デフォルトの名無しさん :03/01/13 01:21
>それとアクティブでなくなると消えてしまうウィンドウ
>(メニューやポップアップ)をスパイで捕まえる方法があったら
>教えてくらはい

えっ?定数でhMenu取るの?勇者だね君は

293 名前:デフォルトの名無しさん :03/01/13 01:28
>291
とりあえずSetMenuInfoとか書いてみる・・・

294 名前:デフォルトの名無しさん :03/01/13 01:28
ほい
hMenu=GetMenu(hWND);
hMenuPlayThru=CreateMenu();
AppendMenu(hMenuPlayThru,MF_ENABLED|MF_STRING,n,sz);
AppendMenu(hMenu,MF_ENABLED|MF_STRING|MF_POPUP,(UINT)hMenuPlayThru,sz);




295 名前:291 :03/01/13 01:30
ガーン変更でしか?作るのかとオモタユ

296 名前:291(本物) :03/01/13 01:48
>>292-295
あ、ありがと〜
AppendMenu と ModifyMenu でできました〜


297 名前:デフォルトの名無しさん :03/01/13 08:21
SPY++みたいに、実行時に任意のウィンドウの情報を得るにはどうすればいいですか?

298 名前:山崎渉 :03/01/13 08:29
218.145.25.77:80
218.145.25.14:80
50.51.32.202.ts.2iij.net:80
cache146.156ce.scvmaxonline.com.sg:8080
cache50.156ce.scvmaxonline.com.sg:8080
12.119.64.42:80
ce590-gdl01.terra.net.mx:80
seton03.terra.net.mx:80
218.65.110.14:80
ce590-gdl02.terra.net.mx:80

299 名前:デフォルトの名無しさん :03/01/13 08:51
自己解決
マウスキャプチャして
MapWindowPoints と WindowFromPoint
でなんとかなりそうですね。

しかし今まで色々調べてたのに、質問してすぐ見つかるとは・・・。
板汚しすまそ。

300 名前:300get :03/01/13 11:57
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ


301 名前:山崎渉 :03/01/13 18:24
(^^)

302 名前:デフォルトの名無しさん :03/01/13 19:43
ツリービューの新スタイルのTVS_FULLROWSELECTって
VisualC++5.0じゃビルドできませんか?
DLLのバージョンは5.81なので大丈夫だと思うんですが
未定義ですってエラーが出てしまいます。

303 名前:デフォルトの名無しさん :03/01/13 19:44
簡単な二重起動防止を過去ログ参考にMutexで実装しようと思ってますが
二重起動を防止するときに、先に起動していたプログラムへ任意のイベントなどを
SendMessageなどで送ることはできないでしょうか?
同じプログラムが起動されたら先に起動していたプログラムにある動作をさせたいのですが。
もしかして、ウインドウハンドル捕まえて、それ宛にメッセージ送るだけ?

304 名前:デフォルトの名無しさん :03/01/13 20:29
>>303
Mutexにこだわらないなら、FindWindowで二重起動防止。
ウィンドウクラス名が重複している場合は使えんが・・・

ウィンドウクラス名に依存するのが嫌なら、名前付きイベントを使うのも良いかと

305 名前:デフォルトの名無しさん :03/01/13 20:55
>>303 サンプルコード山のように書かれてるよ。探せ。

306 名前:デフォルトの名無しさん :03/01/13 22:07
DHCぐらいしか知らん

307 名前:デフォルトの名無しさん :03/01/13 23:14
>>303
ウィンドウ持つのが嫌ならスレッドメッセージというのもあるけども。

308 名前:デフォルトの名無しさん :03/01/14 00:17
>>302
できる。
ヘッダファイルだけそろえてやればいい。
もしくはその定数を自分で定義してやってもオケ。
たしかBCC5.5.1とかには入ってるはずなので、落として差し替える!

309 名前:デフォルトの名無しさん :03/01/14 01:30
Win32コンソールアプリでコンソールにCGを表示させることは無理ですか?
いや、AAじゃなくてな。

310 名前:デフォルトの名無しさん :03/01/14 01:37
コンソールにグラフィック表示機能があれば可能だろうけど
聞いたこと無いねえ

311 名前:デフォルトの名無しさん :03/01/14 01:44
コンソールを直訳すれば操作卓だから UI は規定されないのだろうが、
一般にコンソールと言ったら CUI が常じゃないか?

312 名前:デフォルトの名無しさん :03/01/14 01:46
まあ、どうしてもと言うなら GetConsoleWindow() でウィンドウハンドル取って、
あとは煮るなり焼くなり犯すなり。

313 名前:デフォルトの名無しさん :03/01/14 01:46
char FindPath[256];
strcpy(FindPath, "c:\\*");
hFind=FindFirstFile(FindPath, &FData);
ここで FindPath[0]=0;としても
この後のFindNextFileに影響無しで良いですか?

314 名前:デフォルトの名無しさん :03/01/14 01:47
GetConsoleWindow()
 Windows NT/2000/XP: Included in Windows 2000 and later.
 Windows 95/98/Me: Unsupported.

とか書いてあるけどナー。

315 名前:デフォルトの名無しさん :03/01/14 01:48
>>313
多分無いと思うけど、何なら試してみたら?

316 名前:デフォルトの名無しさん :03/01/14 01:51
んなもん質問実験してる暇にもうひとつバッファ作ればいいだろ。

317 名前:デフォルトの名無しさん :03/01/14 01:51
コンパネの画面でウィンドウのタイトルバーの色や選択色などを設定するけど
あそこで設定したものってどうやってプログラムから取得するの?
現状としては選択色が取得したいんですが。

318 名前:313 :03/01/14 01:51
>>315
試した。
ちゃんと動くっぽいけど本当に大丈夫か知りたくて・・

319 名前:デフォルトの名無しさん :03/01/14 01:59
>>317
GetSysColor()では不満か?


320 名前:デフォルトの名無しさん :03/01/14 06:04
カーソルがメニューの外に移動したかどうかを知る方法を調べています。
メニューを表示してカーソルをメニューの外に移動させると、
アイテムが一つも選択されていない状態ができます。
このことを教えてくれるメッセージなどありますでしょうか。
御存知の方いらっしゃいましたら、どうかよろしくお願いいたします。


321 名前:デフォルトの名無しさん :03/01/14 12:46
関数ImmNotifyIMEが、
WindowsXP環境だけ失敗するのですが、
何かご存知の方居りませんか?

322 名前:デフォルトの名無しさん :03/01/14 18:15
Win32の勉強始めたばかりなんですが一般的な学習法ってなんでつか?
Petzold本に出てるようなファンクションをかたっぱしから試してどう動くかを学ぶとか?
ちなみに目標は自家製の本格的なテキストエディタ作成でつ。

323 名前:デフォルトの名無しさん :03/01/14 21:41
・Petzoldのサンプルを少し改造してはその結果を確認
・大学ノートを用意し,憶えたことを必ずメモする
・糞使いづらいMSDNの調べ方に慣れる

以上を繰り返せばテキストエディタは53行で書ける

324 名前:デフォルトの名無しさん :03/01/14 21:52
ファイル名
名無しさん.txtが、名無し~1.txt であるとき、
名無しさん.txtを名無し~1.txtにリネームするには、どーやったらできますか?
MoveFile("名無しさん.txt", "名無しさ~1.txt");
ってしても成功して、そのまんまなんですけど。


325 名前:デフォルトの名無しさん :03/01/14 21:54
両方同じファイル名なんじゃないの。ロングとショートの。

326 名前:デフォルトの名無しさん :03/01/14 21:55
>>325
そうなんですけど、ロングをショートにしたいんです。

327 名前:デフォルトの名無しさん :03/01/14 21:57
>>326
意図が不明だけど一回nanasi.txtを中継すれば良いんじゃないの。

328 名前:デフォルトの名無しさん :03/01/14 21:59
>>318
一般にWin32APIはハンドル作った時点で情報のコピーを
作るからユーザー側で用意したバッファは壊してOK
>>321
詳細なテキストサービス…でぐぐってもオフにする方法しか
出てこないな。たぶんその関係だとは思うんだが

329 名前:デフォルトの名無しさん :03/01/14 22:00
>>327
9xだとトンネリングというOSの余計なお世話のせいで
それでもうまくいかない可能性がある

330 名前:デフォルトの名無しさん :03/01/14 22:00
>>327
すみません。それだと、nanasi.txtが既に存在しているかも
チェックしないとならないんですね。それがめんどいのです。
TempFileでも中継することにしますか。
うーん。なんかないものか。

331 名前:デフォルトの名無しさん :03/01/14 22:01
>>329
え?じゃ、>>330もだめか。

332 名前:317 :03/01/14 23:11
>>319
おお!そうだシステムカラーだ。
ググろうにもキーワードが思いうかばんかった。恥ずかしい。

333 名前:デフォルトの名無しさん :03/01/15 00:08
エクスプローラで >>324 と同じ事をすると成功するな。
何をしているんだ?

334 名前:デフォルトの名無しさん :03/01/15 00:11
隠しAPIを使ってる

335 名前:デフォルトの名無しさん :03/01/15 00:41
>>334
根拠きぼんぬ

336 名前:デフォルトの名無しさん :03/01/15 00:44
GetShortPathName?

337 名前:デフォルトの名無しさん :03/01/15 01:10
>>336
得たいという話じゃなくて、設定したいという話だったと思う。

338 名前:324 :03/01/15 01:43
renコマンドや、moveコマンドでも出来ませんでした。
ですが、名無しさん.TXTの、
.TXTを小文字にしてやると、成功することが分かりました。
昔、Explorerでもたしか、そんな仕様があったような。。。
全部小文字だと、頭だけ大文字にされたりとか。



339 名前:デフォルトの名無しさん :03/01/15 01:55
> 昔、Explorerでもたしか、そんな仕様があったような。。。
> 全部小文字だと、頭だけ大文字にされたりとか。

そりゃあ表示上だけの話じゃなかったっすか?

340 名前:デフォルトの名無しさん :03/01/15 09:56
windowsx.hってみんな使ってないの?
Cls_OnCreateとかそんなの。

341 名前:324 :03/01/15 11:23
うーん。また、問題が。。。
cFilename=名無しさん
cAlternateFileName=名無し~1
であるとき、
cFileNameを、名無し~1 に、リネームできないのは、そういう仕様でしょうか?


342 名前:デフォルトの名無しさん :03/01/15 13:15
#include<winnt.h>

int main()
{
return 0;
}

というプログラムを実行すると、winnt.hに複数エラーが出るのですが、
他にincludeしなければいけないファイルがあるのでしょうか?

Borland C++ 5.6を使っています。

343 名前:デフォルトの名無しさん :03/01/15 13:22
>>342
あなたは Windows.h を持っていますか?

344 名前:デフォルトの名無しさん :03/01/15 13:22
>>341
Windows2000SP1ではエクスプローラのリネームでもそうなるので、仕様と思ふ。
ところで誰かCSPDK使ったことある人います?

345 名前:デフォルトの名無しさん :03/01/15 13:30
XPならSetFileShortNameで短い名前を付け替えればできそうな予感
2000以前でもNtSetInformationFileでコソーリできたりしないかな

346 名前:デフォルトの名無しさん :03/01/15 13:48
う、SetFileShortNameはバックアップ特権が必要なのか
関係ないけど今MSDNみたら
> Requirements
> Server: Included in Windows Windows Server 2003 2003.
になっててワラタ
もう少し落ち着いて直せと

347 名前:デフォルトの名無しさん :03/01/15 14:20
>>346
>> Server: Included in Windows Windows Server 2003 2003.
>になっててワラタ

typoでなくXMLパーサのバグ(動的にそのダブリが表示されてる)
かモナー

348 名前:デフォルトの名無しさん :03/01/15 15:18
>>341 最悪、一旦違うファイル名にすれば...

349 名前:デフォルトの名無しさん :03/01/15 16:45
MSDNライブラリって再配布OKなんだからMSも最新版をWeb閲覧だけでなく
ダウンロード可能にしてくれればいいのに。

350 名前:デフォルトの名無しさん :03/01/15 16:49
>>349
容量どれだけあると思ってんだ?

351 名前:デフォルトの名無しさん :03/01/15 17:01
Suscriber Downloadでダウンロードできるよ
有料だけど

352 名前:デフォルトの名無しさん :03/01/15 17:12
あれ?Platform SDKについてくるやつは?

353 名前:デフォルトの名無しさん :03/01/15 17:20
リッチエディットコントロールにチェックボックスを表示する事って
できますか?文字しか駄目なんでしょうか?

354 名前:デフォルトの名無しさん :03/01/15 17:26
悪いことは云わんから、IEコンポーネントにしとけ。

355 名前:山崎渉 :03/01/15 17:45
(^^)

356 名前:デフォルトの名無しさん :03/01/15 17:54
>>348
それは問題ありと上のほうであったが。

357 名前:デフォルトの名無しさん :03/01/15 20:08
>>330 >>356
「名無しさん」を LFNで「名無し~1」に変える時だって、
LFNで「名無し~1」のファイルがすでにあったら失敗から、
結局存在チェックはしないといけない罠


358 名前:デフォルトの名無しさん :03/01/15 21:54
「名無し~1」は決してLFNにならないのでは
まあ言いたいことはわかるけど

359 名前:デフォルトの名無しさん :03/01/15 21:55
つーかその場合は単にERROR_ALREADY_EXISTSで失敗するから
事前のチェックはいらないのでは

360 名前:デフォルトの名無しさん :03/01/15 21:56
メッセージボックスをフックして、時限式に閉じる機能を付けたい
んですが、フックの仕方がわかりません。
平たく言うと、MessageBoxで表示されたダイアログのHWNDを
取得したいんですが、上手いやり方があったら教えてください。



361 名前:デフォルトの名無しさん :03/01/15 23:42
Winにはシンボリックリンクやハードリンクってないですか?
ショートカットみたいなインチキなのじゃなくて。

362 名前:デフォルトの名無しさん :03/01/15 23:44
>>360
そんなこと考えるならダイアログ作れよ・・・


363 名前:デフォルトの名無しさん :03/01/15 23:47
>>361
2000以降にはハードリンクはあったはず。

364 名前:>>362 :03/01/16 03:23
ポップアップで画面外にウィンドウ作って
そいつを親ウィンドウに指定して
時間がきたら親を消すってどうよ?

365 名前:360 :03/01/16 07:59
>>362
メッセージボックスって、メッセージの内容によって大きさが伸縮する
じゃないですか。あれを自動でやって欲しいという狙いがあったんです。
逆に伸縮ダイアログが簡単に作れればそっちでもいいんですけどね。
メッセージボックスと同じ動作をするダイアログの作り方でもいいです。

366 名前:デフォルトの名無しさん :03/01/16 08:13
>>365
GetTextExtentPoint32() でメッセージのサイズ調べて、それに合わせてリサイズ
すればいいだけでは?
つーか、メッセージボックス捕まえた後に何をするおつもりで?

367 名前:360 :03/01/16 08:20
それぐらい読み取れませんか?

368 名前:デフォルトの名無しさん :03/01/16 08:25
時限式のMessageBoxならMSDNにサンプルがあったはずだが・・・

369 名前:デフォルトの名無しさん :03/01/16 08:29
http://www.boreas.dti.ne.jp/~keitarou/2ch.html
        アプロダワッショイ!!
     \\  動画専用ワッショイ!! //
 +   + \\ 抜けるぞワッショイ!!/+
                            +
.   +   /■\  /■\  /■\  +
      ( ´∀`∩(´∀`∩)( ´ー`)
 +  (( (つ   ノ(つ  丿(つ  つ ))  +
       ヽ  ( ノ ( ノ  ) ) )
       (_)し' し(_) (_)_)


370 名前:デフォルトの名無しさん :03/01/16 09:46
>>363
裏技的だが、実は2000以前でもテープバックアップAPIでNTFS上にハードリンク作れたりする。

371 名前:デフォルトの名無しさん :03/01/16 10:13
ソフトからAPI等を使用して関連付けする方法を教えて下さい。

372 名前:デフォルトの名無しさん :03/01/16 10:23
フォルダを選択する、SHBrowseForFolder関数で出てくるダイアログに
「フォルダの新規作成」ボタンがついてるのをよく見かけるのですが、
なんという関数を使えばいいのでしょうか?

373 名前:デフォルトの名無しさん :03/01/16 11:34
>>370
2000 の機能じゃなくて、NTFS の機能だからだろ。

374 名前:デフォルトの名無しさん :03/01/16 11:35
>>367
| GetTextExtentPoint32() でメッセージのサイズ調べて、それに合わせてリサイズ
| すればいいだけでは?

に対する答えが

> それぐらい読み取れませんか?

ですか?

375 名前:デフォルトの名無しさん :03/01/16 11:40
>>372
コールバックを使って、自前で作ってるんじゃないの?

376 名前:デフォルトの名無しさん :03/01/16 11:42
>>373
POSIXサブシステムが作ったハードリンクもバックアップ/リストア
できなくちゃならないからな

377 名前:デフォルトの名無しさん :03/01/16 11:43
>>361
シンボリックリンク相当のものとしては
フォルダにジャンクションというものが張れるけど
ファイルには張れない。

378 名前:デフォルトの名無しさん :03/01/16 11:46
>>374
そうですが何か?

379 名前:デフォルトの名無しさん :03/01/16 11:56
>>378
何だと思います?

380 名前:デフォルトの名無しさん :03/01/16 11:57
>>378
何があるでしょうね(^^)

381 名前:デフォルトの名無しさん :03/01/16 11:58
>>379
何があるかな?

382 名前:デフォルトの名無しさん :03/01/16 11:58
>>378
さあ一人で考えよう。

383 名前:デフォルトの名無しさん :03/01/16 12:04
               _∧_∧
            / ̄ ( ´∀`)⌒\
       __    /  _|     |   |                ,,,,,,,,,,,,,
       ヽヽ   /  /  \    |   |           ,,,,,,,iiiiillllll!!!!!!!lllllliiiii,,,,,,,
        \\|  |____|   .|   |           .,llll゙゙゙゙゙        ゙゙゙゙゙lllll,
         \/  \       |   |           .|!!!!,,,,,,,,       ,,,,,,,,,!!!!|
         | ヽ_「\      |   |、         |  ゙゙゙゙!!!!llllliiiiiiiiiilllll!!!!゙゙゙゙ .| 
         |    \ \――、. |   | ヽ         .|     .゙゙゙゙゙゙゙゙゙゙     |
         |   / \ "-、,  `|  |  ヽ       |               |
      _/   /    "-, "' (_  ヽ  ヽ      .|               |
     /    __ノ      "'m__`\ヽ_,,,, ヽ      |               |
     `ー― ̄          ヽ、__`/ー_,,,, ゙゙゙゙!!!!!!!lllllllliii|               |
                        \゙゙゙゙゙゙゙!!!!!lllllllliiiii|               |
                          \   ヽ   |               |
                           ヽ   \  |               |
                            |     \.|               |
                            `ヽ、,,_ノ|               |
                                  ゙゙!!!,,,,,,,,       ,,,,,,,,,!!!゙゙
                                       ゙゙゙゙!!!!llllliiiiiiiiiilllll!!!!゙゙゙゙
                                ブチッ!! /.// ・l|∵ ヽ\  ←>>378-382

384 名前:デフォルトの名無しさん :03/01/16 13:25
任意のようなデスクトップアクセサリを作りたいんですが、
BMPの形のウィンドウを作る方法ありませんか?

9x系なのでSetLayeredWindowAttributesは使えないし
CreateDCでデスクトップのHDCを獲得して描画しようものなら死ぬし
SetWindowRgnで無理矢理出来なくもないがかなり強引というか
そもそも移動する時出る四角い枠からして
任意はこの方法は使ってないと思われるし

当方VC6.0、98SEです


385 名前:デフォルトの名無しさん :03/01/16 13:58
>>360
非可視のダイアログをつくる

それを親にしてMessageBox

タイマーで時間経過後、ダイアログを破棄

親のダイアログが破棄されれば、MessageBoxも消える。
ただし、MessageBoxを表示する前に、ダイアログを画面中央にセンタリングしておく。

386 名前:デフォルトの名無しさん :03/01/16 14:03
あれれ?MessageBoxを呼んだ時点で、
ダイアログプロシージャの処理は回らなくなると思うが、
どうやって、タイマーで時間経過をはかって、ダイアログを
破棄するのかナ? マルチスレッド?

387 名前:385 :03/01/16 14:08
すまん、俺は MFCの CDialog 派生で実装しました(;´Д`)

388 名前:デフォルトの名無しさん :03/01/16 15:34
>>あれれ?MessageBoxを呼んだ時点で、
>>ダイアログプロシージャの処理は回らなくなると思うが、

モーダルループが回ってるので、WM_TIMER は大丈夫


389 名前:デフォルトの名無しさん :03/01/16 16:30
タイマーメッセージで、MessageBox() のウィンドウハンドルを取得する
1)EnumThreadWindows をつかって、このスレッド内のトップレベル
ウィンドウを列挙
2)コールバック関数で GetWindow でオーナーハンドルが設定した
ものと一致したらそれが目的のダイアログのハンドル(テキスト一致
の方がいいかも)

以下の Delphi のコード例では、見つかったら EndDialog() で閉じる

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Interval := 3000;//3秒後
Timer1.Enabled := true;//タイマスタート
MessageBox(Handle,'Test desu','TEST',MB_OK or MB_ICONEXCLAMATION);
end;

function EnumThreadWndProc(hWindow: HWND; lData: LPARAM):BOOL; stdcall;
begin
result := true;
if GetWindow(hWindow,GW_OWNER) = Form1.Handle then begin
EndDialog(hWindow,IDCANCEL);//閉じる
result := false;
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := false;//タイマストップ
EnumThreadWindows(GetCurrentThreadId,@EnumThreadWndProc,0);
end;


390 名前:デフォルトの名無しさん :03/01/16 17:35
>>384
> SetWindowRgnで無理矢理出来なくもないがかなり強引というか
9xではそのかなり強引な方法しかない
伺かもそうやってる
リージョンがメッシュ状になってない限り
CreatePolyPolygonRgnが一番高速

391 名前:デフォルトの名無しさん :03/01/16 19:12
GDI でウィンドウにグラフィックを描画するアプリケーションを作っています。
CreateCompatibleBitmap でオフスクリーンバッファを作成して描画しているのですが、
ウィンドウのサイズが変更されたとき、このバッファはどうすべきなのでしょうか。
自分では、例えばウィンドウが拡大されたら新しく作り直す、とか
ウィンドウが小さくなったときは放っておいて必要な部分だけ使う、とか考えたのですが…
こういった処理のセオリーのようなものがありましたらご教授ください。

392 名前:360 ◆FeMIy5OMp2 :03/01/16 21:00
>>367は偽者です。お気になさらずに。

>>366
GetTextExtentPoint32は行の降り返しを面倒見てくれるでしょうか?


>>368
ありがとうございます。捜してみます。


>>374 >>378-383
すいません、何か気に障ること言いましたか?


393 名前:360 ◆FeMIy5OMp2 :03/01/16 21:04
>>385-389
有難うございます。
難しそうですが、意味は判りました。
試してみます。

394 名前:デフォルトの名無しさん :03/01/16 21:33
ツリービューの項目が左クリックされた場合と左ダブルクリックされたのを
知るにはどうしたら良いですか?
右クリックはWM_CONTEXTMENUを捕まえてHitTestで判定すると分かったんですけど
左クリック関係がわかりません。

395 名前:デフォルトの名無しさん :03/01/16 21:39
>>391
作ろうとしているアプリケーションによる

例えば,エロ画像鑑賞用ビットマップブラウザなら
ウインドウを大きくすれば画像拡大ってことで
StretchBlt()かSetMapMode()のMM_ISOTROPICあたり

ドッター仕様のビットマップエディタなら
子ウインドウでクライアント作ってスクロールバーでずらすとか

ウインドウを大きくしたときにビットマップもサイズを大きくするって
ソフトを洩れは知らん

396 名前:デフォルトの名無しさん :03/01/16 21:40
>>394
WM_LBUTTONDOWN

397 名前:391 :03/01/16 21:46
>>395
ありがとうございます。参考になりました。
いろいろ試して最適なの方法を考えてみることにします。

398 名前:デフォルトの名無しさん :03/01/16 23:51
>>372
BIF_NEWDIALOGSTYLE

399 名前:デフォルトの名無しさん :03/01/17 00:20
>390
そういえばCreatePolyPolygonRgnのことを忘れてました
サンクス

400 名前:デフォルトの名無しさん :03/01/17 09:11
>>395
画面に表示されない分までオフスクリーンに確保するのは
メモリの無駄ってことで実際のウィンドウサイズ分しか
オフスクリーンを用意しないアプリがあるんだよ。
その分リサイズの処理が重くなるわけだが

401 名前:デフォルトの名無しさん :03/01/17 16:57
Windows2000の「別のユーザーとして実行」をプログラムから実行するにはどうしたら
よいのでしょうか?
「伺か」のsetup.exeのようなAdminで実行させるようなプログラムを作りたいのです。

402 名前:デフォルトの名無しさん :03/01/17 17:16
>>401
ファイル名をsetup.exeにすれば勝手にやってくれる

403 名前:TECH :03/01/17 17:32
>>401
RUNAS はダメ?
http://www.microsoft.com/windows2000/ja/professional/help/RUNAS.HTM

404 名前:デフォルトの名無しさん :03/01/17 18:04
>>402
あ、本当だ・・・でもファイル名を変えたくはないのです。

>>403
コマンドプロンプトでrunasではなくて、ダイアログを出すにはどうすれば良いでしょうか?
ユーザーにそのまま実行を続けるかどうかをGUIで選択させたいと思っています。

405 名前:デフォルトの名無しさん :03/01/17 18:40
>>404 RUNAS を実行したらパスを聞いてくると思うが?

406 名前:デフォルトの名無しさん :03/01/17 18:47
>>405
いや、だからそれは404にも書いてますがコマンドプロンプトなんで、GUIでやりたいなと。
Shift+右クリックの「別のユーザーとして実行」で表示されるダイアログを出す方法が
あったら教えていただきたいのです。

407 名前:TECH :03/01/17 19:24
>>404
ゴメンナサイ。

自分でダイアログを作るなら
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_createprocesswithlogonw.htm

が使えるけど、 ダメなんだろうなあ


408 名前:デフォルトの名無しさん :03/01/17 20:04
んー、あれ相当のダイアログを自分で作らないとダメみたいですねぇ・・・


409 名前:デフォルトの名無しさん :03/01/17 21:24
>>404
CreateProcessAsUser()ではいかんのか?
ttp://www.microsoft.com/japan/developer/library/jpwinpf/_win32_createprocessasuser.htm

410 名前:デフォルトの名無しさん :03/01/17 23:42
>>409
それで「別のユーザーとして実行」ダイアログが表示できるわけじゃないですよね?
だから自分でそれ相当のダイアログを作らなきゃならないようですね、というのが
>>408なわけでして。

>>407>>409で提示されたAPIとrunasあたりを検索すると
http://www.codeguru.com/misc/RunUser.html
のようなGUI Runasのサンプルがでてきましたが、
あのダイアログ自体を出すAPIや方法が見つからなかったので
ダイアログ自作しかないのかなぁと思っています。

ショートカットファイルのプロパティには「別のユーザーとして実行」という
チェックボックスがあって簡単に表示してくれるのに・・・ガクリ

411 名前:デフォルトの名無しさん :03/01/18 10:59
>>409
そっちだといろいろ特権が必要になるからつらい
そんな特権持たせる操作を要求できるなら
はじめからAdministratorでログインしろですむし
NT4ならこれかな
http://pc3.2ch.net/test/read.cgi/win/1024782123/l50

412 名前:デフォルトの名無しさん :03/01/18 11:00
タブコントロールで、タブを最後尾に追加するにはどうしたら良いですか?
TabCtrl_InsertItemだと、インデックスを指定しなければなりませんが
今いくつタブがあるか分からない状態で、最後尾(右側)にタブを追加したいのです。

413 名前:デフォルトの名無しさん :03/01/18 11:29
TabCtrl_GetItemCountで数えればいいだろ

414 名前:Question :03/01/18 14:33
VC++ ver6内で「WM_THEMECHANGED」を宣言すると、
「error C2065: 'WM_THEMECHANGED' : 定義されていない識別子です。」と表示されます。

WINUSER.H内には
 #if(_WIN32_WINNT >= 0x0501)
 #define WM_THEMECHANGED 0x031A
 #endif /* _WIN32_WINNT >= 0x0501 */
と宣言されてますし、今開発に使用しているOSもXPです。(Ver 5.1.2600 Service Pack 1)

なぜdefineされないのかわかりません。

415 名前:デフォルトの名無しさん :03/01/18 14:36
_WIN32_WINNTマクロの値は、作成するプログラムのターゲットOSの
選択をするためのものであって、ビルド環境には依存しません。

明示的に#defineしましょう。

416 名前:Question :03/01/18 14:47
>>415
WINUSER.H内の#if(_WIN32_WINNT >= 0x0501)だと、私のXPでプログラムを作成するとエラーが起こらないと思うのですが。
なぜエラーが起こるのかがわかりません。

ほかの、
 #if(WINVER >= 0x0400)
 #define WM_PRINT 0x0317
 #define WM_PRINTCLIENT 0x0318
 #endif /* WINVER >= 0x0400 */
だと、問題ないですよね。WM_PAINTはエラーなく使えるわけですから。

私のOSが「_WIN32_WINNT < 0x0501」と認識されているのでしょうか?

417 名前:デフォルトの名無しさん :03/01/18 14:51
> 私のXPでプログラムを作成するとエラーが起こらないと思うのですが。

根本的に勘違いしてる。415を読み直せ。

418 名前:Question :03/01/18 14:52
自分でdefineするしかないのですね。

419 名前:デフォルトの名無しさん :03/01/18 15:38
error LNK2001: 外部シンボル "__imp__OpenThemeData@8" は未解決です
error LNK2001: 外部シンボル "__imp__CloseThemeData@4" は未解決です

このエラーが出た場合、どのファイルをリンクすればいいのでしょうか?

420 名前:419 :03/01/18 15:39
UxTheme.lib でした。解決。
失礼しました。

421 名前:デフォルトの名無しさん :03/01/18 15:48
ウィンドウリージョンの設定についてお聞きします。(BCB5使用)

フォームにデフォルトの領域を設定します。
HRGN default_rgn;
__fastcall TForm1::TForm1(TComponent* Owner):TForm(Owner)
{
default_rgn=CreateRectRgn(0,0,100,100);
SetWindowRgn(Handle,default_rgn,true);
}
次に、あるボタンを押すと領域が広がるので、その部分を追加したいとします。
void __fastcall TForm1::Open1Click(TObject *Sender)
{
HRGN dest_rgn,add_rgn;
add_rgn=CreateRectRgn(0,0,200,50);
CombineRgn(dest_rgn,default_rgn,add_rgn,RGN_OR);
SetWindowRgn(Handle,dest_rgn,true);
}
これでdefault_rgn+add_rgnの領域が表示されると思ったのですが、表示されません。
どのように解決したらいいでしょうか?

422 名前:ひょっとこ :03/01/18 15:55
コントロールパネルで画面のプロパティー内でデザインを変更しても、自分の作ったアプリケーションのコモンコントロールの背景色が変わりません。

例えば、配色を「アイスカラー」から「ピクニック」に変更しても、コントロールの背景色がアイスカラーのままなのです。
ここでは、どのような処理をすればいいのでしょうか?

423 名前:デフォルトの名無しさん :03/01/18 16:02
>>421
プッ

424 名前:デフォルトの名無しさん :03/01/18 16:08
http://www6.ocn.ne.jp/~endou/index2.html
     ★YAHOOOプロフィール★


425 名前:デフォルトの名無しさん :03/01/18 17:24
>>422
レバーとかツールバーの色ってことでしょ?
その色ってシステムが自動的に変えてくれるでしょ?

426 名前:ひょっとこ :03/01/18 18:23
コンパネの画面内のデザインを変更しますよね。
変更したら当然「文字の大きさ・デザイン・配色」などのスタイルが変わるわけですよね。
そのスタイル情報を取り出すにはどのAPIを使えばいいのでしょうか?

そのスタイル情報を自分のアプリのrebarに反映させたい。

427 名前:ひょっとこ :03/01/18 18:26
コンパネ内にあるデザインを変更したら、ということです。

なぜか、自分のアプリケーションに新しく設定したデザインが反映されない。

428 名前:421 :03/01/18 19:13
>>423
解決しました。ありがとう。

429 名前:デフォルトの名無しさん :03/01/18 20:49
>>426
ウィンドウメッセージで飛んでくるYO

430 名前:デフォルトの名無しさん :03/01/18 22:20
428はどうせ偽者だからいちおうマジレスしとこう。
ここも強制IDにならないかねえ
>>421
SetWindowRgnに渡したリージョン(default_rgn)
は使いまわし不可。SetWindowRgnする前にコピーを作れ。

431 名前:デフォルトの名無しさん :03/01/18 22:47
VB6(SP5) 対象OSはXP or Meでし。

IE(関連付けされたブラウザ)をプログラムからShellExecuteで呼び出して、
インターネット上のウェブページを表示したりする一種のマクロ言語の
インタプリタもどき作ってるんですが、どうしてもそのウィンドウの「表示完了」が
わからないといけないのですが、どのように表示状態を取得すればいいのか、
見当つきません。表示状態をつかみたいIEは自分で起動したウィンドウ、及びそこから派生するウィンドウです。
よろしくなのら!


432 名前:名無し@沢村 :03/01/18 23:30
>>431
ヌヒよ、DWebBrowserEvents::NavigateComplete()について調べれ。
どうやってVBで使うかは知らんよ。

433 名前:602 :03/01/18 23:55
>>429
ウィンドウメッセージとして飛んでくるのはわかりますが。
それをrebarに反映する方法がわかりません。

ほかのコントロールは反映されますが、rebarとstatusbarだけが反映されないのです。
何か特殊な処理をしなければならないのでしょうか?

434 名前:602 :03/01/19 00:34
私だけかな?

「WINXP」+「VC++6」でステータスバーを表示するアプリを作り、表示した後、コンパネの画面のデザインで配色を変えても、その自作アプリのステータスバーだけが配色が変わらないのは。
なぜだろうか?

435 名前:デフォルトの名無しさん :03/01/19 00:35
WM_CTLCOLORか何か

436 名前:602 :03/01/19 00:42
しかも、実験的に作成したもので、
猫さんのHPにあるソースを丸々コピーして貼り付けてビルドしただけだから、
私のソース記入間違いでもない。

おかしいな?

437 名前:602 :03/01/19 00:47
WMメッセージ(WM_SYSCOLORCHANGE)は来るのですが、それを反映させる方法がわかりません。
まさか、こんな問題が出るとは思わなかった。

システム側で処理してくれるものだと思いましたから。


438 名前:431 :03/01/19 00:47
>>432
Javaは一応書けますが、RADをインスコすんのが面倒で鬱
どうしよう・・・

439 名前:421 :03/01/19 00:51
>>430
煽られたので、だめかと思ってました。ありがとうございました。(表示できました。)
ただ、タスクマネージャを見てて気づいたんですが、ボタンを押すたびにメモリ使用量が増える模様。
一応↓のようにはしてみたんですが・・・何か忘れてるのかな・・・
void __fastcall TForm1::Open1Click(TObject *Sender)
{
HRGN dest_rgn,add_rgn;
add_rgn=CreateRectRgn(0,0,200,50);
dest_rgn=CreateRectRgn(0,0,0,0);
CombineRgn(dest_rgn,default_rgn,add_rgn,RGN_OR);
SetWindowRgn(Handle,dest_rgn,true);
DeleteObject(add_rgn);
DeleteObject(dest_rgn);
}

440 名前:デフォルトの名無しさん :03/01/19 04:44
SetWindowRgnに渡したリージョンは削除しちゃだめ。
つーか少しはMSDN読め。

441 名前:デフォルトの名無しさん :03/01/19 04:46
>>434
WM_SYSCOLORCHANGEか何かをリレーしてやる必要がある。

442 名前:デフォルトの名無しさん :03/01/19 07:51
SetWindowDQN ってなんですか

443 名前:名無し@沢村 :03/01/19 12:52
>>442
ha ha ha

444 名前:602 :03/01/19 13:54
>>441
詳細なプログラム記述方法を知ってますか?
ものすごく困ってます。

ほかのコントロールの配色は変わりますが、唯一「RebarとStatusbar」だけが配色が変わらない。

私は、
WM_SYSCOLORCHANGE内でrgb=GetSysColor(COLOR_3DLIGHT );とし、COLORREFを取り出した後、
そのRebar/Statusbarに反映させようとしていますが、その方法がわかりません。

だれかコントロールオブジェクトの配色を変える方法を知っていますか?

たとえば、デフォルト(例・98SE)では「ボタン」の色は「灰色」ですよね。
これを手動で「赤」に変える方法。

445 名前:デフォルトの名無しさん :03/01/19 14:46
>>444
XP でmanifest使用の場合はだめみたい。
該当コントロールだけは従来タイプにしないと厳しそう。(カスタムドローすら無視されます)



446 名前:602 :03/01/19 15:21
>>445
もちろん「XPビジュアルスタイル」を適用させるのでマニフェストを追加していますが・・・。
マニフェストを使用しないでアプリを作成してみましたが(新規に)、やはり同じ現象・問題が出ますね。

というより、手動でコモンコントロールにシステムカラーを描画する方法があれば自作でプログラムします。
あるはずですが、やり方がいまいちわからないですね。
「WM_SYSCOLORCHANGE」をウィンドウ(Rebar/Statusbar)に対して送っても、全くの無反応です。(涙)

オーナードローを使えばいいのでしょうかね。


447 名前:602 :03/01/19 15:25
私が思うに、RebarとStatusbarにシステムカラーが変わったと言うことが連絡されていないから、こういう現象が起こると思っているのですが・・・。
なぜほかのコントロール(Button/Combo/Menu/Popupなどなど・・・)に対しては送って、「RebarとStatusbar」だけ送らないのかが疑問???
ふぅ、格闘が続く・・・。

448 名前:デフォルトの名無しさん :03/01/19 15:45
>>446
なんか間違えていない? *.exe.manifestを消してみると何の処理をしなくても自動的に色が変わりますが…

>>447
そういう問題ではないでしょう。新規にアプリを起動した場合でもレバーやステータスバーの色はおかしいですから。
それにボタンだって、コントロールパネルで設定した色にはならないでしょう。



449 名前:602 :03/01/19 15:50
>>448
うん、けしましたよ、それを。

私の環境がおかしいのか・・・。

450 名前:602 :03/01/19 15:54
いろいろな他者作成のアプリを立ち上げてみましたが、やはり私のアプリだけが色が変わらない。
・・・・。

451 名前:602 :03/01/19 16:01
私のプログラムミスではないですね。
猫さんのHPにあるソースを完全にコピペしてビルドしたら、やはり同じ問題が出ましたね。
・・・・。
VC++を再インストールしたほうがいいのか?
それとも、SPのバージョンが古いからかな?
VC++6とSP5では駄目ですかね。

452 名前:デフォルトの名無しさん :03/01/19 16:02
>>450
他者作成のアプリというのはmanifestを使っていないだけでしょう。
エクスプローラだってステータスバーの色は変わりません。
rcにmanifestを入れてません?


453 名前:602 :03/01/19 17:18
>>452
rcからマニフェストは消してます(涙)

というか、新規にマニフェスト無しで作成しても問題が起こるのです・・・。
俺の環境上だけの問題かよ・・・。(涙)

454 名前:デフォルトの名無しさん :03/01/19 17:38
>>453
レバーの握る部分(?)はポチポチ(manifest使用時)になっています?
それともただの線(manifest未使用時)になっています?

455 名前:602 :03/01/19 18:18
>>454
ただの線です。IE5仕様ですよ。

XP・PROで問題が起こるのは「REBARとSTATUSBAR」だけです。

嗚呼、休みが終わる・・・。問題が解決しないまま・・・。(涙)

456 名前:602 :03/01/19 20:43
MSDNから提供されるSDKサンプルをビルドして確かめてみたら、
やはり画面の配色を変えても「Toolbar/Statusbar」だけが変わらないですね。

どうやら仕様のようです。それか不具合か。

VC++6とXP・PROではうまくアプリケーションが作られないみたいです。
VC.NETを購入しようと思います。

457 名前:デフォルトの名無しさん :03/01/19 21:21
>>456
そんなことはない。うちもXP Pro でVC6使ってます。


458 名前:602 :03/01/19 21:35
>>457
Rebarを作成した際、画面の配色を変えてもアプリにきちんと反映されますか?

459 名前:602 :03/01/19 21:42
寝よ・・・。

460 名前:デフォルトの名無しさん :03/01/19 21:52
>>458
manifest無効ならば、反映されます。
ところで、アプリを再起動したときはきちんと反映されるの?


461 名前:602 :03/01/19 22:13
>>460
ええ、再起動したら反映されます。
ただ即反応してくれないから困ってます。

マニフェストも無効です。

というより、MSDNで配布されているサンプルを私の環境でビルドしたら、同じ問題が出ました。
私の環境が問題あるようです。

ちなみに、VC++は別のパーティションに入れています。
Cドライブ→WindowsXP OfficeXP
Eドライブ→VisualC++6 PlatformSDK

462 名前:デフォルトの名無しさん :03/01/19 22:24
タスクトレイにあるハードウェアの取り外しなんですが、
これをAPIから呼び出すことってできるのでしょうか?

463 名前:デフォルトの名無しさん :03/01/19 22:25
> タスクトレイにあるハードウェアの取り外しなんですが
ねーよ。

464 名前:デフォルトの名無しさん :03/01/19 23:13
>>444
SendMessage(hwndStatusBar, WM_SYSCOLORCHANGE, 0, 0L);
MSDNのコモンコントロールの章にもこうしろって書いてあるはずだけど

465 名前:デフォルトの名無しさん :03/01/19 23:14
つーかWM_SYSCOLORCHANGEの説明にそのものズバリが書かれてるし。
だから少しはMSDNを読めと。

466 名前:462 :03/01/20 07:41
え、あるんですけど・・・

467 名前:デフォルトの名無しさん :03/01/20 08:53
PCカードもUSB機器もIEEE1394機器も使ってなきゃないだろ

468 名前:462 :03/01/20 09:14
まぁ確かにそうですが・・・

469 名前:602 :03/01/20 12:11
今、会社のPCから書き込んでいます。

今日、会社のPC(Win2000)で、その問題アプリを立ち上げたところ、なんと・・・、Rebar自体が表示されなくなりました。
いわゆる、家のPC(WinXPPRO)ではRebarは表示されるが、会社のPC(Win2000)ではRebar自体が表示されない。

Statusbarはきちんと表示され、「画面の配色更新」にも対応しました。

やはり、私の家のPCでのビルド環境に何か問題がある可能性大ですね。
事実、MSDNから配布されているサンプルソースを、家のPCでビルドしたら、その「画面の配色更新」ができませんでした。
MSDNから配布されているソースにそのような問題があるはずは無いですからね。

今日家に帰ったら、Win2000を別パーティションにインストールしてみます。


あと、SendMessage(hwndStatusBar, WM_SYSCOLORCHANGE, 0, 0L);ですが、
昨日、Rebarに対してメッセージを投げましたところ、無反応でした。(Statusbarには投げてません)

SendMessage(hRebar, WM_SYSCOLORCHANGE, 0, 0L);→無反応
あと、Rebarの各バンドに対しても投げましたが、無反応でした。

470 名前:デフォルトの名無しさん :03/01/20 12:18
http://www.rr.iij4u.or.jp/~animb/hooligan_101.zip
http://www.nn.iij4u.or.jp/~zelno/hooligan_102.zip
http://www.pp.iij4u.or.jp/~zit/hooligan_103.zip
http://www.rr.iij4u.or.jp/~dalfeed/hooligan_104.zip
http://www.ss.iij4u.or.jp/~rayanne/hooligan_105.zip
http://www.ff.iij4u.or.jp/~rindam/hooligan_106.zip
http://www.hh.iij4u.or.jp/~migo/hooligan_107.zip
http://www.nn.iij4u.or.jp/~guorivan/hooligan_108.zip
http://www.pp.iij4u.or.jp/~lno/hooligan_109.zip
http://www.ss.iij4u.or.jp/~afiro/hooligan_110zip

471 名前:デフォルトの名無しさん :03/01/20 16:00
> MSDNから配布されているソースにそのような問題があるはずは無いですからね。

この認識は改めたほうが良い

472 名前:デフォルトの名無しさん :03/01/20 18:37
>>469
単にお前の環境が腐ってるだけだろ
>>471
まあ自分のミスより先に疑うよりは健全な認識だな

473 名前:デフォルトの名無しさん :03/01/20 19:58
現在実行中の、ほかのプロセスに読み込まれている
DLLの名前と開始位置を取得するにはどのAPIを使えばいいですか?

VisualStdioやWinDbgのメニューコマンドにあるModule Listの内容を
自前で取得したいのです。

メモリの内容を直接読み込むだけなら
GetWindowThreadProcessId
OpenProcess
ReadProcessMemory
でできましたが、その先にいけません。
よろしくおねがします。

474 名前:デフォルトの名無しさん :03/01/20 20:11
>>469
>今日家に帰ったら、Win2000を別パーティションにインストールしてみます。
いままでこれをしていなかったとでも?
だったら忠告しておく
別パーティションではなく別PCにすれ
ビルドの度に電源から立ち上げを2回ずつなんて非能率かつ危険だし,
動作確認を開発環境でやっても本番環境と条件が違ったら意味がない
シリアルポート越しのデバッグ手段がせっかくあるのに勿体ない

>>471
御意

>>472
腐ってるのはお前の視野

475 名前:デフォルトの名無しさん :03/01/20 20:18
別PC? 家に二台以上あるの? ははは。オタク。

476 名前:デフォルトの名無しさん :03/01/20 20:22
さすがにInitCommonControlsExのミスではないですよね?

>>473
WinNT系ならPSAPI.DLL
Win95以降orWin2000以降ならTool Help
両方に対応しておくと良いと思います


477 名前:デフォルトの名無しさん :03/01/20 20:31
>>474
あんたと同じことを言ってるつもりなんだが
何が腐ってるんだよ

478 名前:デフォルトの名無しさん :03/01/20 20:33
linuxのstrace相当の動作(APIのモニタ)をするソフトを作るには、
どういったAPIを使えばいいのでしょうか?
また、単なるアプリケーションで可能なのか、dll 作成が必須、または、
driver 作成が必須、などもわかりましたらお願いします。
ターゲット環境は、2K、XPですが、98,ME でも使えるとなお有難いです。

479 名前:デフォルトの名無しさん :03/01/20 20:38
>>478
こんなソフト作りたいの? 頑張って。
http://www.rohitab.com/apimonitor/

480 名前:デフォルトの名無しさん :03/01/20 21:35
ファイルを作成するときに、その階層までのフォルダが無かったら
フォルダも自動作成するようなAPIありませんか?
CreateFileじゃフォルダは作成されませんでした。

481 名前:デフォルトの名無しさん :03/01/20 21:37
MakeSureDirectoryPathExists

482 名前:デフォルトの名無しさん :03/01/20 21:38
>>480
フォルダ作ってからファイル作れば?

483 名前:デフォルトの名無しさん :03/01/20 21:44
>>481
そのAPIは知ってますけど、ファイルは作成できないですよね?

>>482
CreateDirectory・・・
WriteFile・・・
って事ですか?
これって毎回CreateDirectoryするの無駄じゃないですか?

484 名前:デフォルトの名無しさん :03/01/20 21:46

SAPI(Microsoft Speach API)やってる人いる?
ViaVoiceやらLaLaVoiceやら、MSのSDKやら触ったのだけど
いまいちよくわからない。
SAPIってそもそも各ベンダがDLLにして提供するもので、それを
レジストリから調べて使うものなのか?
SDK入れるとコンパネに音声のアイコンが出るけど、MSがこれらの
APIをラッピングするDLLをだしてて、それを使うものなのか?
あと、ActiveXもMSが透過的につかうためのCOMを作ってくれてるのか?
知ってたらおしえてください。 おながいします。

485 名前:デフォルトの名無しさん :03/01/20 21:48
>>483
すでにディレクトリがあれば作成に失敗するんだから同じことじゃん

486 名前:デフォルトの名無しさん :03/01/20 21:48
MakeSureDirectoryPathExistsやってからファイル作れよ。

487 名前:名無し@沢村 :03/01/20 23:43
ヌヒ等には、SHCreateDirectoryEx()もあるということを教えてやろう。
動作環境には要注意だが。

488 名前:デフォルトの名無しさん :03/01/20 23:45
>>475
アマグラマさん?
他の人たちの家にあるのは貸与マシンかも知れないよw

489 名前:デフォルトの名無しさん :03/01/21 01:17
メッセージが何時来るのか、何で取るべきなのかわからないのですが、決まりや定石ってないですか?
エディットボックスはキルフォーカスがいいとかそんなのです。

490 名前:デフォルトの名無しさん :03/01/21 01:23
>>489
お前の日本が理解できないのだが?

それと、メッセージがいつ来るかなんて誰にも分からん。

491 名前:602 :03/01/21 01:25
今、別PCにWinXPPROとVC++6をクリーンインストールして、Rebarのついたアプリを作成したところ、「画面の配色更新」には対応できませんでしたね。

これで、はっきりしました。
明らかに、XPとVC++6とでは相性が悪いということです。

VC++.NET買ってこ。

492 名前:デフォルトの名無しさん :03/01/21 01:30
相性で済ませてしまうあたりが不安だ

493 名前:デフォルトの名無しさん :03/01/21 01:34
>>490
僕の日本は国旗の丸が紫色です。えへへ。

494 名前:デフォルトの名無しさん :03/01/21 01:34
>>491
VS.NETを買うこと自体は良いのですが、とりあえずPlatformSDKアップデートを先に




495 名前:デフォルトの名無しさん :03/01/21 01:37
次スレのテンプレにはこれをちゃんと入れといてくれよ
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/default.htm?p=/msdownload/platformsdk/sdkupdate/psdk-full.htm

496 名前:名無し@沢村 :03/01/21 02:02
>>475
ヌヒにはリモートデバッガという便利なものの存在を教えてやろう。

497 名前:デフォルトの名無しさん :03/01/21 09:52
「別のユーザーとして実行」ダイアログにはデフォルトでAdministratorのアカウント名と
ドメイン名が入力されていますが、これらの文字列はどのように取得すればよいのでしょうか?
自分の環境(Win2000)ではデフォルトがユーザー名はAdministrator(Adminのアカウント名は変更していません)
、ドメイン名はGetComputerNameで取得できる名前(環境はワークグループLANです)に
設定されています。

498 名前:602 :03/01/21 12:02
>>494
PlatformSDKなら入れてあります。
入れた状態で、ビルドしても同じ現象が起きたのです。

♪なんでだろう??

とりあえず、今週末(金)までには、解決をしよう。
どこに問題点があるのか。

またまたとりあえずVC++6で踏ん張ろう。

499 名前:デフォルトの名無しさん :03/01/21 12:21
>>498
つられ覚悟で。
なんでそこまでこだわるのがわからん。
直接マイクロソフトに家。

500 名前:602 :03/01/21 12:29
ただ、考えられる原因は、

●VisualC++6内での設定がおかしい。

ということだと思う。
コモンコントロールを作る際、リンクのライブラリを入れる以外に、何かすることがあるでしょうか?

うーん、コモンコントロール関連はなかなか手ごわいな・・・。
(WinSockのほうが簡単だった・・・)


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.