「eX.」を含む日記 RSS

はてなキーワード: eX.とは

2019-04-06

作画資料参考ページ

個人用メモ

クロッキーカフェ有料化についての情報

ttps://twitter.com/hisayo_w000/status/1350801173595316224

クロッキーカフェ instagramページ

ttps://www.instagram.com/croquiscafe/

https://e-hentai.org/g/1383297/605020f175/

平成同人物語

https://e-hentai.org/tag/parody:getsuyoubi+no+tawawa

月曜日のたわわ

ttps://chan.sankakucomplex.com/?tags=himura_kiseki%20order%3Apopular

月曜日のたわわ(sankakucomplex)

https://e-hentai.org/g/1568331/7eb9441874/

ららまじチューナーノート2

https://e-hentai.org/g/1520949/67a7887ed5/

[よー清水]「キャラの背景」描き方教室 CLIP STUDIO PAINTで描く! キャラの想いを物語風景技術

https://e-hentai.org/g/1511811/c6c1574bad/

[isuZu] プロが教える!CLIP STUDIO PAINT PROの教科書

https://e-hentai.org/?page=9&f_cats=767&f_search=official&f_sname=on&f_stags=on&f_sr=on&f_srdd=5&advsearch=1

景教本が特に多いページ

ttps://e-hentai.org/g/1483978/1f6473e191/?p=4

クロノトリガーアルティマニア

ttps://e-hentai.org/g/1508441/aa361ba353/

聖剣伝説LOM キャラクター設定画集

ttps://e-hentai.org/g/1581326/3fc1dc150a/

ミカピカゾ

ttps://danbooru.donmai.us/posts?tags=mika_pikazo

ミカピカゾ2

ttps://e-hentai.org/g/1489415/90f6b1c158/?p=2

ファイアーエムブレム設定資料

ttps://e-hentai.org/?f_cats=34&f_search=megami+magazine&advsearch=1&f_sname=on&f_stags=on&f_spf=&f_spt=

メガミマガジン

ttps://e-hentai.org/g/1353102/869b408c7e/

ごちうさ画集

ttps://e-hentai.org/g/1338066/466687e162/

アズールレーン一周年記念画集

ttps://e-hentai.org/g/1526505/50eed6bb19/

機動警察パトレイバー設定資料

ttps://e-hentai.org/g/1559166/2b371b13b1/

RocksyChan 赤ずきんコス

ttps://e-hentai.org/g/562431/389777fa90/

良いドレス資料

ttps://danbooru.donmai.us/posts?page=4&tags=love_live%21+official_art+

ラブライブオフィシャルアートワーク

ttps://danbooru.donmai.us/posts?tags=atelier_%28series%29+official_art

アトリエシリーズオフィシャルアートワーク

ttps://danbooru.donmai.us/posts?page=1&tags=hibike%21_euphonium+official_art

響け!ユーフォニアム

ttps://danbooru.donmai.us/posts?page=1&tags=tamako_market+official_art

たまこまーけっと

ttps://danbooru.donmai.us/posts?page=1&tags=k-on%21+official_art+

けいおん!

ttps://yande.re/post?page=1&tags=houkago_no_pleiades

放課後のプレアデス

ttps://yande.re/post?page=1&tags=fantasista_doll

ファンタジスタドール

ttps://e-hentai.org/g/1076222/6a007e40b0/

Cave Shooting Art Works

ttps://yande.re/post?tags=disc_cover

CDジャケット

ttps://danbooru.donmai.us/posts?tags=mandrill

mandrill氏イラスト集

ttps://danbooru.donmai.us/posts?tags=kantoku

カントクイラスト集

ttps://danbooru.donmai.us/posts?tags=kanzaki_hiro

かんざきひろイラスト集

ttps://danbooru.donmai.us/posts?tags=namori

なもりイラスト集

ttps://danbooru.donmai.us/posts?page=1&tags=nardack

nardack氏イラスト集

ttps://chan.sankakucomplex.com/?tags=hanamura_mai%20order%3Apopular

hanamura mai

ttps://chan.sankakucomplex.com/?tags=narumi_arata%20order%3Apopular

arata narumi

ttps://chan.sankakucomplex.com/ja/?tags=monable

monable

ttps://chan.sankakucomplex.com/ja/?tags=mokyu

mokyu

ttps://chan.sankakucomplex.com/ja/?tags=mmu

mmu

ttps://chan.sankakucomplex.com/ja/?tags=utako_yukihiro

雪広うたこ

ttps://chan.sankakucomplex.com/?tags=non-web_source%20order%3Apopular

non-web source

ttps://chan.sankakucomplex.com/?tags=dengeki_girl%27s_style%20order%3Apopular

dengeki girl's style

ttps://danbooru.donmai.us/posts?tags=whoisshe

whoisshe

ttps://danbooru.donmai.us/posts?page=2&tags=anmi

anmi

ttps://danbooru.donmai.us/posts?tags=tiv

tiv

ttps://danbooru.donmai.us/posts?tags=misoni_comi

misonikcomi

ttps://yande.re/post?page=3&tags=shirabi

shirabi

ttps://yande.re/post?page=2&tags=range_murata

村田蓮爾

ttps://danbooru.donmai.us/posts?page=1&tags=ataruman

ataruman

ttps://yande.re/post?page=1&tags=cuteg

cuteg

ttps://yande.re/post?page=3&tags=oyari_ashito

大槍葦人

ttps://danbooru.donmai.us/posts?page=1&tags=kuroboshi_kouhaku

黒星紅白

ttps://danbooru.donmai.us/posts?page=1&tags=momoko_%28momopoco%29

momoko

ttps://danbooru.donmai.us/posts?tags=necomi

necomi

ttps://e-hentai.org/g/1515496/7385b962a1/

幻像黒兎

ttps://danbooru.donmai.us/posts?tags=naruko_hanaharu

鳴子ハナハル

ttps://danbooru.donmai.us/posts?page=6&tags=narumi_arata

鳴海アラタ

ttps://danbooru.donmai.us/posts?page=1&tags=nishihara_isao

いさお

ttps://danbooru.donmai.us/posts?tags=shigure_ui

しぐれうい

ttps://danbooru.donmai.us/posts?page=1&tags=nekometaru

ねこめたる

ttps://danbooru.donmai.us/posts?tags=himura_kiseki

月曜日のたわわ

ttps://danbooru.donmai.us/posts?tags=u_jie

u介

ttps://danbooru.donmai.us/posts?page=1&tags=kkuem

kkuem

ttps://danbooru.donmai.us/posts?tags=mery_%28yangmalgage%29

mery

ttps://danbooru.donmai.us/posts?page=1&tags=akizone

akizone

ttps://danbooru.donmai.us/posts?tags=kagawa_yuusaku

香川悠作

ttps://ocolorboard.tumblr.com/

ocolorboard

ttps://danbooru.donmai.us/posts?page=1&tags=lf

If

ttps://danbooru.donmai.us/posts?page=1&tags=handheld_game_console+official_art+

携帯ゲーム機を持つポーズ

ttps://danbooru.donmai.us/posts?tags=heart_hands

手でハートを作るポーズ

ttps://chan.sankakucomplex.com/?tags=shopping+order%3Apopular+%E5%85%AC%E5%BC%8F%E3%82%A2%E3%83%BC%E3%83%88&commit=Search

買い物シチュエーション

ttps://danbooru.donmai.us/posts?page=1&tags=undressing+official_art+

海外版:脱衣シチュエーション

ttps://danbooru.donmai.us/posts?tags=novel_illustration

ノベルイラストレーションラノベイラスト集

ttps://danbooru.donmai.us/posts?tags=hiota_no_kanojo_ga_ore_no_motteru_eroge_ni_kyoumi_shinshin_nandaga......

ttps://danbooru.donmai.us/posts?page=492&tags=multiple_girls+official_art+

multiple girls 492ページ目

https://e-hentai.org/g/1393321/d6d6ceb56b/

https://e-hentai.org/g/1211889/df9210a0f8/

https://e-hentai.org/g/1307324/9b7765cdb4/








仕事が来たという報告があったサイト 他に情報が上がれば随時追加

 ・pixiv

 ・TINAMI

 ・アイラブユカンパニー ttp://www.iloveyou-company.com/

 ・アビルダング ttp://abbildung.jp/

 ・Arrows ttp://www.arrows-g.jp/

 ・アンシャントマン ttp://www.mangaculture.com/

 ・Ameizia ttp://ameizia.co.jp/

 ・アクア ttp://aqua-web.co.jp/

 ・S-TRIVE ttp://s-trive.com/

 ・EXYS ttp://exys2008.com/

 ・オートクチュール ttp://hautecouture.jp/

 ・Ga-show ttp://ga-show.co.jp/";

 ・Qmax ttp://www.qmax.co.nz/

 ・クラウドゲート ttp://www.crowdgate.co.jp/

 ・QBIST ttps://www.qbist.co.jp/

 ・クラウドグラフィックス ttp://crowdgraphics.jp/

 ・クラゲ ttp://crage.co.jp/

 ・クリークアンドリバー ttp://www.cri.co.jp/

 ・グレープ ttp://www.grapee.co.jp/

 ・グレイゾーン ttp://gray-zone.biz/

 ・グラフィクト9 ttp://graphict9.jp/

 ・グラホリック ttp://grapholi.com/

 ・サーチフィールド ttps://plusgeek.jp/

 ・C2 ttp://www.c2inc.co.jp/

 ・サイドランチ ttp://www.sideranch.co.jp/

 ・サンバード ttp://sun-bird.jp/

 ・SeAL ttp://seal-web.jp/

 ・スカイリンク ttps://sky-link.co.jp/

 ・スタジオハードデラックス ttp://www.hard.co.jp/

 ・Skillots ttp://www.skillots.com/design/

 ・スポマ ttp://spoma.jp/company/

 ・テクノアート ttp://technoart-tokyo.com/

 ・デジタルハーツ ttp://www.digitalhearts.co.jp/

 ・デジタル職人 ttp://digishoku.co.jp/

 ・トゥーザワールド ttp://totheworld.jp/

 ・PANDAGRAPHICS ttp://panda-graphics.net/

 ・Permission ttp://www.permission.co.jp/

 ・フロンティアエージェント ttp://www.frontier-agent.co.jp/

 ・BookLive Artstudio ttp://booklive.co.jp/artstudio/

 ・フーモア ttp://whomor.com/

 ・フーム ttp://www.foom.co.jp/

 ・マグノリアファクトリー ttp://magnolia-factory.com/

 ・水野プロダクション ttp://www.mizunopro.co.jp

 ・ムゲンアップ ttps://station.mugenup.com/

 ・Monoii ttp://www.monoii.jp

 ・ベアトリックス ttp://www.beatrixx.co.jp/

 ・ロータス ttp://www.lotus-creative.net/

 ・ロフトワーク ttp://www.loftwork.jp/

 ・ランサーズ ttp://www.lancers.jp/

 ・Wakka ttps://www.wakka-illustorder.com/

 ・キュートロン ttp://www.qtron.jp/index.html

 ・ex-design ttp://www.exdesign.info/

 ・Asian Bridg ttp://graphics.asianbridge.jp/

 ・トラスロッド ttp://trussrod.jp/

 ・ORATTA ttp://www.oratta.net/

 ・ツジヒール ttp://tsujiheal.com...contact/recruit.html

 ・シリコンスタジオ ttp://www.siliconstudio.co.jp/

 ・Lavan7(マエストロ?) ttp://maestro-work.com/

 ・フロンティアクリエイターズプロジェクト(FCP) ttps://fw-fcp.jp/


261名無しさんお腹いっぱい。2020/02/02(日) 21:51:40.21ID:eRB+DOb2

>>258

自分もツイとかシブやってなくて飛び込み面接ポートフォリオ持って仕事貰いに行ったわ

全くの素人(デッサン赤まみれレベル)だったけど普通に仕事貰えて今まで悶々としていたのは全て無駄だった事に気がついた

上手くなるには~とか、仕事受けられるレベルは~ってのは自分妄想が混じる

仕事金も貰えて更に勉強も出来る素晴らしい環境

263名無しさんお腹いっぱい。2020/02/02(日) 22:07:41.75ID:wA0UU6Qz>>264

上手くなって何とかしようという発想しかねぇわ

飛び込み面接とかムリムリカタツムリ

264名無しさんお腹いっぱい。2020/02/02(日) 22:20:28.70ID:eRB+DOb2

>>263

企業から「上手いです!仕事受けて貰えますか…!?」ってのを期待するのが勘違い

「なに?仕事欲しいの?…じゃあお前でもできる仕事これな」って感じでもいいから何か仕事する

気がついたら仕事絵は増えていき、いつの間にかその絵を見た他企業からお仕事受けて貰えますか…?」に変わるよ

下積み時代は年齢的にも早く始める方がいいし、仕事してる時間の成長と1人練習する時間じゃ全く上達具合が違うから後悔してる

2019-03-08

秋葉原電気街風俗街と勘違いしている方への説明

秋葉原電気街風俗街と勘違いしている方への説明

近年(と言っても10数年前くらいからになるが)秋葉原にはメイドカフェなどの萌産業店舗が増えてきている。

一方で従来の電子部品家電オーディオパソコンビデオゲームなどを取り扱う店舗は減る傾向にある。

そのためか、秋葉原のことをよく知らずに「秋葉原風俗街になってしまった」とか「もう昔の秋葉原のような店舗は無い」など間違った知識秋葉原表現する者が後を絶たない。

そんな勘違いした方が秋葉原に来て歩くのは中央通りと1本裏に入った程度だろ?

お前らダンゴムシ探すとき新宿駅前で探すのかよ。ダンゴムシはジメジメした石の下にいるんだよ!

秋葉原昔ながらの店はジメジメした裏通りだったりラジオセンターラジオデパートのようなところにブワァーっとたくさんあるんだよ!

秋葉原の萌産業店舗100店舗ほどあるという。

それでは従来の電子部品やら家電やらパソコンやらの店舗はどれくらいあるのか一覧を作ってみた

個人が作った一覧なので間違いや閉店していたり漏れもあるだろうがまあ誤差程度だろう。

追記
各種定義について

すべて個人的に考えているだけの独自定義です。

秋葉原定義については、外神田1〜6丁目+その周辺を秋葉原としている。

電気街中央通りからみて、北は蔵前橋通り+50mくらいまで、西は昌平橋通りくらいまで、東は昭和通りくらいまで、南は神田川くらいまで。

北についてはaitendoと遊舎工房を入れたかったので少し範囲を広げました。

一般的に「秋葉原」と言われる範囲と一緒だと思う。

店舗については、一般消費者が購入できる店舗リストアップしました。

主に自分の目で確認したのが多いですが、ストリートビュー店舗公式Webサイトなども参考にしています

表のジャンルは大雑把なジャンルである

店名ジャンル
aitendo電   
akiba LEDカリ電   
ITプラザ電パゲ 
アールガーデン パ  
愛三電機電   
秋月電子通商電   
あきばお~零 パ  
あきばお~弐號店 パ  
あきばお~こく(参號店) パ  
あきばお~こく(四號店) パ  
あきばお~伍號店 パ  
あきばお~禄號店 パ  
あきばお~七號店 パ  
あきばお~八號店 パ  
秋葉館 パ  
アキバ特区 パ  
あぼ電機電   
アルタラッセ電   
秋葉原エルモア パ 家
秋葉原エレクトリックパーツ パ  
秋葉原最終処分場 パゲ 
赤城商会電   
IN・PuLse電   
イオシス アキバ中央通 パ  
イオシス アキバ中央通ヨコ店 パ  
イオシス アキバ路地裏店 パ  
イオシス アキバ路地モテ パ  
稲電機電   
池之谷ラジオ電   
エスエス無線電   
エディオンAKIBA パ 家
オノデン本館 パ 家
オヤイデ電気電   
奥澤電   
家電ケンちゃん秋葉原東京ラジオデパート電パゲ 
海神無線電   
春日無線電   
田無電   
田無線電機電   
キョードー真空管電   
菊地無線電機電   
九州電気電   
KVClab  ゲ 
ゲオGAMES アキバ  ゲ 
ゲオmobile アキバ パ  
コイズミ無線電   
コンピエース パ  
東電電   
光南電気電   
小沼電気電   
小林電機商会電   
坂口電熱電   
サンエレクトロ電   
サンエイ電機電   
サンコウ電子電   
サンコーレアノショップ秋葉原本店 パ  
サンコーレアノショップ2号店 パ  
サンライズ電   
サンライズラボ1号店電   
サンライズラボ2号店電   
桜屋電機2F店電   
三栄電波電   
三善無線電   
斉藤電気商会電   
CCコネクト パ  
G-NET パ  
G-Tune:Garage 秋葉原 パ  
ジーフロント  ゲ 
オヤ無線電機商会電   
じゃんぱら D-Style秋葉原 パ  
じゃんぱら 秋葉原本店 パ  
じゃんぱら 秋葉原2号店 パ  
じゃんぱら 秋葉原3号店 パ  
じゃんぱら 秋葉原4号店 パ  
じゃんぱら 秋葉原5号店 パ  
ショップインバース 秋葉原1号店 パ  
ショップインバース 秋葉原2号店 パ  
塩田電線電   
湘南通商 パ  
神保商会電パ  
島山無線電   
スーパーポテト 秋葉原  ゲ 
駿河屋秋葉原ゲーム  ゲ 
セイコーSHOP電   
ゼネラルトランス販売電   
セルスタR1号店 パ  
瀬田無線電   
清進商会電   
千石電商 秋葉原本店電   
千石電商 秋葉原2号店電   
千石電商 ラジオデパート電   
ソフマップ1 パゲ 
ソフマップ2 パ  
ソフマップ3 パ  
ソフマップ4  ゲ 
ソフマップ5 パ  
タカヒロ電子電   
つかさ無線1号店電   
つかさ無線2号店電   
つかさ無線3号店電   
つかさ無線4号店電   
ツクモ DOS/Vパソコン パ  
ツクモ eX. パ  
ツクモ パソコン本店 パ  
ツクモ パソコン本店 パ  
ツクモ パソコン本店 パ  
ツクモ 12号店 パ  
TL-EXCHANGE SERVICE電   
テクノハウス東映 パ  
Tokkaバザール パ  
TOKYO PC パ  
東洋計測器本店電   
ドスパラGALLERIA Lounge パ  
ドスパラ秋葉原別館 パ  
ドスパラ秋葉原本店 パ  
モカ電気電   
モカ電気 プロショップ電   
モカ電気第3営業所電   
トレーダー 本店  ゲ 
東映ランド パ  
東映無線 ラジオデパート電   
東栄変成器電   
東邦無線電   
東洋計測器1号店電   
東洋計測器3号店電   
西川電子部品電   
パーツランド電   
ハードオフ秋葉原 パゲ 
パソコンショップark! パ  
パソコン工房 AKIBA STARTUP パ  
パソコン工房 秋葉原 BUYMORE店 パ  
パソコン工房 秋葉原イイヤマスト パ  
パレットタウン パ  
浜田電機 パ  
BEEP秋葉原 パゲ 
ビックカメラ パゲ家
PREMIUM STAGE パ  
富士無線電機電   
フレンズ  ゲ 
MakJapan  ゲ 
マイクロ・パワー研究所電   
マックス(PC-MAX) パ  
マルツ 秋葉原2号店電   
マルツ 秋葉原本店電   
まんだらけコンプレックス  ゲ 
万世書房電   
万世商会 パ  
ヤマダ電機LABI秋葉原パソコン パ  
山一電気1号店電   
山一電気2号店電   
山長通商電   
山本電機電   
山本無線山長店電   
山本無線CQ1電   
山本無線E-BOX電   
山本無線コトブキセンター電   
山本無線ラジオセンター電   
山本無線中央通り電   
山本無線電材店電   
U&JMac's パ  
遊舎工房 パ  
UK-mobile パ  
ヨドバシカメラ パゲ家
ラオックス秋葉原本店 パ 家
らしんばん 新館  ゲ 
Re:custa パ  
レトロげーむキャンプ  ゲ 
ロケットアマチュア無線本館電   
ワイケー無線電   
若松通商電   
ヨドバシカメラ パゲ家
ラオックス秋葉原本店 パ 家
らしんばん 新館  ゲ 
Re:custa パ  
レトロげーむキャンプ  ゲ 
ロケットアマチュア無線本館電   
ワイケー無線電   
若松通商電   
店名ジャンル

170店舗超だ!これでも秋葉原風俗街と言うか!この○○野郎

2019-01-09

うつ症状の整理

抑うつ一般的に知られる症状

 精神症状

  抑うつ気分

  不安・焦り

  遠くへ行きたい・消えてしまいたい

  興味または喜びの喪失

  意欲の低下・億劫

  自分を責める

  会話や本の内容が入ってこない

 身体症状

  睡眠障害

  食欲の変動

  疲労感・倦怠感

  動悸・息苦しさ・口が乾く

私の場合

 発症時期と変遷

  F32.0(.14 中旬) F32.1(.16 1) F32.2(.17 7救急搬送以降)F32.3 (意識レベル低下により主観記憶上に明確な時期の認識存在しない)IDC-10 2016

 自覚(あるいは過去主観記憶からあったであろう)症状 おおよそ時系列

  微小妄想 病感あり

  醜形妄想 病感あり

  離人症 病感あり

  希死念慮

  集中力低下 自覚症状の発現は遅い

  精神運動遅滞 psychomotor retardation 自覚症状の発現は遅い(暗記テストの点数の変遷により推測)

   短期記憶力の(.16 7~ 有意な)低下

      ex.記事項が覚えられない 何をしようとしていたかからない、掲示物の内容を記憶できず何度も見直すなど日常生活に支障

   計算速度、精度の低下、不能

   英文の内容把握速度、精度の低下、不能

   読解、読字速度の低下、不能

   会話の内容が把握できない

  罪業妄想 some idea of guilt and worthlessness  病感なし

  意欲低下 eduction of energy, and decrease in activity 病感なし より早くから存在した可能性大

  睡眠障害 3〜5時間睡眠

  自殺念慮行為 Suicidal thoughts and acts 意識喪失二回 三回だったか

  一時的な興奮 agitation

  嗜眠 傾眠 somnolence lethargy

  うつ昏迷 stupor

治療、休養が遅れた理由(多分)

 てんさい(笑)なので意欲低下や精神運動遅滞を隠すことができた(教授などで認知症発症が遅く進行が早いのと同じ)

 親が昏迷とか睡眠障害精神運動遅滞を発症している本人に受診等の判断をさせた(させようとした)

  が当然無理

 朝方の(一般例と同じく朝方が一番ひどい)昏迷・嗜眠・傾眠状態ときに散々に学校にいけと怒鳴られ身体暴力も受けた

 本人に治す気がない(セルフネグレクトの気がある)

  キツめの破滅願望がある?

 

どうすべきか

 やす

 卒業資格は今年度は諦める

そのた

 搬送自殺行為によるものではない

現状

 現状家事くらいはできるようになったが、そのため社会復帰して卒業資格取ってこいとの圧がつよい 

 しにたい

EDIT 一部見やす

2019-01-03

anond:20190103184241

// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//

	int blocks[100][100];

	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);
		x = 0;
		y = 0;
		boxType = 0;

		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		for(int x = 0 ; x < 100 ; x++)
		{
			for (int y = 0; y < 100; y++)
			{
				blocks[y][x] = 0;
			}
		}

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;
	BOOL run;
	int x;
	int y;
	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));
		run = true;
		int rc;
		// メイン メッセージ ループ:
		while (run)
		{
			DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL,  100 , QS_PAINT| QS_ALLEVENTS,0);
			if (obj <= WAIT_OBJECT_0)
			{
				while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&msg);
					}
					if (msg.message == WM_QUIT) {
						run = FALSE;
					}
					if (msg.message == WM_CLOSE) {
						run = FALSE;
					}

				}
			}
			else if (obj == WAIT_TIMEOUT)
			{
				y++;
				PAINTSTRUCT ps;
				HDC hdc = BeginPaint(hWnd, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48*9,48 * 100 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}


		return TRUE;

	}

	int boxType;

	BOOL WriteBoxOLDBox()
	{
		int width = 24;

		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 48));
		for (int y = 0; y < 30; y++)
		{
			for (int x = 0; x < 8; x++)
			{
				if (blocks[y][x] == 0)
				{
					continue;
				}

				RECT Rect = { 0,0,48,48 };
				BOOL ret;

				Rect.left = width * x + 1;
				Rect.right = width * (x + 1) - 1;
				Rect.top = width * y + 1;
				Rect.bottom = width * (y + 1) - 1;

				ret = FillRect(hdc, &Rect, hBrush);


			}
		}

		DeleteObject(hBrush);

		return FALSE;
	}


	BOOL WriteBox()
	{
		WriteBoxOLDBox();

		switch (boxType)
		{
		case 0:
			return WriteBoxI();
		case 1:
			return WriteBoxL();
		case 2:
			return WriteBoxZ();

		}

		return TRUE;
	}

	BOOL WriteBoxZ()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) - 1;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) - 1;

		ret = FillRect(hdc, &Rect, hBrush);


		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left += width;
		Rect.right += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);


		DeleteObject(hBrush);

		return TRUE;
	}


	BOOL WriteBoxL()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 246 , 48));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) -1 ;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) -1;

		ret = FillRect(hdc, &Rect, hBrush);


		Rect.top    += width; 
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left   += width;
		Rect.right  += width;
		ret = FillRect(hdc, &Rect, hBrush);

		DeleteObject(hBrush);

		return TRUE;
	}

	BOOL WriteBoxI()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB( 246 , 48 , 48));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) - 1;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) - 1;

		ret = FillRect(hdc, &Rect, hBrush);


		//Rect.left   += width;
		//Rect.right  += width;
		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		DeleteObject(hBrush);

		return TRUE;
	}

	BOOL SaveBoxI()
	{
		blocks[y  ][x] = 1;
		blocks[y+1][x] = 1;
		blocks[y+2][x] = 1;
		blocks[y+3][x] = 1;
		return TRUE;
	}


	BOOL OnPaint(PAINTSTRUCT &ps)
	{
		if (x > 8) {
			x = 0;
		}
		if (x <0) {
			x = 8;
		}
		if (y > 20) {
			switch (boxType)
			{
			case 0:
				SaveBoxI();
				break;
			case 1:
				break;
			case 2:
				break;
			}

			y = 0;
			boxType++;
			if (boxType > 2)
			{
				boxType = 0;
			}
		}

		this->WriteBox();

		return TRUE;
	}



	BOOL OnKey(WPARAM wParam)
	{
		if (wParam == VK_LEFT)
		{
			x++;
		}
		if (wParam == VK_RIGHT)
		{
			x--;
		}
		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
		break;
	case WM_KEYDOWN:
		{
			MyWindow *target = MyWindow::find(hWnd);
			target->OnKey(wParam);
		}
	break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

anond:20190103170543

テトリス

落ちてくるブロックの描き方

わかりやす関数化してみた

まずはブロックの種類は3種類

 

WriteBoxLとWriteBoxIとWriteBoxZ

の違いをよく見比べて

自力で違いがわかれば

プログラマーにはなれるとおもう

とはいえ、コレを自力でわかるならもっと儲かる仕事あるとはおもうけどな

 

	BOOL WriteBox()
	{
		switch (boxType)
		{
		case 0:
			return WriteBoxI();
		case 1:
			return WriteBoxL();
		case 2:
			return WriteBoxZ();

		}
	}
// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//
	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);
		x = 0;
		y = 0;
		boxType = 0;

		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;
	BOOL run;
	int x;
	int y;
	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));
		run = true;
		int rc;
		// メイン メッセージ ループ:
		while (run)
		{
			DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL,  100 , QS_PAINT| QS_ALLEVENTS,0);
			if (obj <= WAIT_OBJECT_0)
			{
				while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&msg);
					}
					if (msg.message == WM_QUIT) {
						run = FALSE;
					}
					if (msg.message == WM_CLOSE) {
						run = FALSE;
					}

				}
			}
			else if (obj == WAIT_TIMEOUT)
			{
				y++;
				PAINTSTRUCT ps;
				HDC hdc = BeginPaint(hWnd, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48*9,48 * 8 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}


		return TRUE;

	}

	int boxType;

	BOOL WriteBox()
	{
		switch (boxType)
		{
		case 0:
			return WriteBoxI();
		case 1:
			return WriteBoxL();
		case 2:
			return WriteBoxZ();

		}
	}

	BOOL WriteBoxZ()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) - 1;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) - 1;

		ret = FillRect(hdc, &Rect, hBrush);


		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left += width;
		Rect.right += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);


		DeleteObject(hBrush);

		return TRUE;
	}


	BOOL WriteBoxL()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) -1 ;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) -1;

		ret = FillRect(hdc, &Rect, hBrush);


		Rect.top    += width; 
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left   += width;
		Rect.right  += width;
		ret = FillRect(hdc, &Rect, hBrush);

		DeleteObject(hBrush);

		return TRUE;
	}

	BOOL WriteBoxI()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) - 1;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) - 1;

		ret = FillRect(hdc, &Rect, hBrush);


		//Rect.left   += width;
		//Rect.right  += width;
		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		DeleteObject(hBrush);

		return TRUE;
	}


	BOOL OnPaint(PAINTSTRUCT &ps)
	{
		if (x > 8) {
			x = 0;
		}
		if (x <0) {
			x = 8;
		}
		if (y > 8) {
			y = 0;
			boxType++;
			if (boxType > 2)
			{
				boxType = 0;
			}
		}

		this->WriteBox();

		return TRUE;
	}



	BOOL OnKey()
	{
		x++;
		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
		break;
	case WM_KEYDOWN:
		{
			MyWindow *target = MyWindow::find(hWnd);
			target->OnKey();
		}
	break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

anond:20190101175055

テトリス風?プログラムに向けて

第何回だろうな

キー入力を追加した

まだ、何を押してもブロックが右に移動するだけ(右端にいくと左にワープ

タイマー自動落下

 

でもまぁ ここまでサンプルがあるとほぼテトリスは見えてきた

// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//
	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);
		x = 0;
		y = 0;

		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;
	BOOL run;
	int x;
	int y;
	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));
		run = true;
		int rc;
		// メイン メッセージ ループ:
		while (run)
		{
			DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL,  100 , QS_PAINT| QS_ALLEVENTS,0);
			if (obj <= WAIT_OBJECT_0)
			{
				while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&msg);
					}
					if (msg.message == WM_QUIT) {
						run = FALSE;
					}
					if (msg.message == WM_CLOSE) {
						run = FALSE;
					}

				}
			}
			else if (obj == WAIT_TIMEOUT)
			{
				y++;
				PAINTSTRUCT ps;
				HDC hdc = BeginPaint(hWnd, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48*9,48 * 8 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}


		return TRUE;

	}

	BOOL OnPaint(PAINTSTRUCT &ps)
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));
		RECT Rect = { 0,0,48,48 };
		Rect.left = 48 * x;
		Rect.right = 48 * (x+1);
		Rect.top = 48 * y;
		Rect.bottom = 48 * (y+1);
		if (x > 8) {
			x = 0;
		}
		if (x <0) {
			x = 8;
		}
		if (y > 8) {
			y = 0;
		}
		BOOL ret = FillRect(ps.hdc, &Rect, hBrush);
		DeleteObject(hBrush);

		return TRUE;
	}

	BOOL OnKey()
	{
		x++;
		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
		break;
	case WM_KEYDOWN:
		{
			MyWindow *target = MyWindow::find(hWnd);
			target->OnKey();
		}
	break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

2019-01-01

anond:20190101172100

タイマーを使ったアニメーションを付けた

// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//
	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);
		y = 0;

		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;
	BOOL run;
	int y;
	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));
		run = true;
		int rc;
		// メイン メッセージ ループ:
		while (run)
		{
			DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL,  100 , QS_PAINT| QS_ALLEVENTS,0);
			if (obj <= WAIT_OBJECT_0)
			{
				while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&msg);
					}
					if (msg.message == WM_QUIT) {
						run = FALSE;
					}
					if (msg.message == WM_CLOSE) {
						run = FALSE;
					}

				}
			}
			else if (obj == WAIT_TIMEOUT)
			{
				y++;
				PAINTSTRUCT ps;
				HDC hdc = BeginPaint(hWnd, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48,48 * 8 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}


		return TRUE;

	}

	BOOL OnPaint(PAINTSTRUCT &ps)
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));
		RECT Rect = { 0,0,48,48 };
		Rect.top = 48 * y;
		Rect.bottom = 48 * (y+1);
		if (y > 8) {
			y = 0;
		}
		BOOL ret = FillRect(ps.hdc, &Rect, hBrush);
		DeleteObject(hBrush);

		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
        break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

anond:20190101162210

やすいように フルソー

青い■を表示するだけ

// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//
	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);


		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;

	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));

		// メイン メッセージ ループ:
		while (GetMessage(&msg, nullptr, 0, 0))
		{
			if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
			{
				TranslateMessage(&msg);
				DispatchMessage(&msg);
			}
		}


		return TRUE;

	}

	BOOL OnPaint(PAINTSTRUCT &ps)
	{
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));
		RECT Rect = { 0,0,48,48 };
		BOOL ret = FillRect(ps.hdc, &Rect, hBrush);
		DeleteObject(hBrush);

		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
        break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

anond:20181231104029

// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//
	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);


		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;

	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));

		// メイン メッセージ ループ:
		while (GetMessage(&msg, nullptr, 0, 0))
		{
			if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
			{
				TranslateMessage(&msg);
				DispatchMessage(&msg);
			}
		}


		return TRUE;

	}

	BOOL OnPaint()
	{
		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
        break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint();


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}


Windowsシステムは基本 グローバル関数なので

グローバル関数<>クラス化されたメソッド

ブリッジ関数を書いた

2018-12-31

anond:20181228211250

// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);


class MyWindow
{
public:

	HWND hWnd;

	MyWindow()
		:hWnd(NULL)
	{

	}


	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//
	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);


		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;

	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));

		// メイン メッセージ ループ:
		while (GetMessage(&msg, nullptr, 0, 0))
		{
			if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
			{
				TranslateMessage(&msg);
				DispatchMessage(&msg);
			}
		}


		return TRUE;

	}



};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
        break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);
            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

こんなかんじ。クラス化した

2018-12-28

とりあえず、Visual Studioが作ってくれるテンプレ

//
//  関数: MyRegisterClass()
//
//  目的: ウィンドウ クラス登録します。
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEXW wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);

    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
    wcex.hCursor        = LoadCursor(nullptr, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

    return RegisterClassExW(&wcex);
}

これ意味がわからない人が多いと思うけど

Windowマネージャーに 自分アプリ登録とかおもっておけばいい。

必須

とはいえ自動コード生成だから 問題がない

2018-07-30

100字超えたのでこっちで。

id:houjiT

お前(受け取り拒否見たの)初めてか?力抜けよ。

当方の主張は「左のいつもの手口」。であるから左の類似事例を挙げてるわけよ。受け取れないように受け取れないようにやって、相手のせいにするプロパガンダ、もういつもの手口ですわ。

過去アポなしで持ち込むと未来永劫その人はアポなしでやって戦略的に利用するとでも?違うでしょう。

「その人」じゃなくて、左系はそういう行動をしばしば(100%ではないぞ)とるよね、様式だよね、という話なわけ。で、様式であることを示すために、ちゃらっと調べて出てきたのを張ってるわけ。チョコの奴は記憶から曖昧だがね。どっかにいい無料ニュースアーカイバねぇかね。

今回通告してるし

んじゃ、今回の「抗議文」どうやって渡したんでしょうね。まず抗議集会の開始は、はい、「午後7時」。普通企業団体ならもうとっくに店じまいだわ。そんな時間判断がいるモノ受け取れるわけないでしょう。夜間警備の警備員しかいねぇんだから婚姻届ぐらいだわそんな時受け取るのは。ちなみにご本尊ツイッターだと渡し損ねて記念写真が午後8時ごろですわ。そりゃ絵図が当たってニッコニコエビス顔で記念写真も撮ろうってなるわな。

え、特級市民にして偉大なるLGBT様のためならカス自民党職員共は居残りでも残業でもしろと?そのために事前連絡しましたと? さすが特級市民の皆様、ブラックだねぇ、下々にはそんな発想できねぇね。その事前連絡いつよ?それ、リスケできるタイミングじゃないでしょ?

で、この行動のどこに、真摯相手方に文書を手交しようという意図があるの?

一方的電話で通告するのが真摯なの? 時間外に呼びつけるのが真摯なの? 衆の力を借りて暴力的に囲むことが真摯なの? 判断もできない現場警備員いじめ散らかすのが真摯なの? すげぇな、偉大なる領導であらせられるるLGBT様って奴は。

大体「連絡した」っつってるの、片側の主張じゃね?それ丸呑みして相手のせいだっての、すでにプロパガンダの丸のみなわけよ。

で、絵図かいてはめた連中がいろんなところで「我々の聖なる抗議文を極悪なジミンは拒否した!特級市民様の声を聴かないジミンを成敗せよ!」とかやる。低能支援者とか間抜けブクマカとかが「まあ自民党やっぱり感じ悪い!1!!」ってなる。そりゃお左さまにしてみりゃウハウハ、低能釣りのために飽きもせず繰り返しますわ。左Aがやれば左Bがぱくって、それと連帯する左Cがコピッて、その団体から崩れたやつが流れ着いた左Dでもチャレンジして・・・・ってやってるうちに行動様式として定着するわけよ。

ちなみに、例えば、じゃあ45分後におまえんちか、お前の関係先に抗議文渡すからちゃんと受け取れよ、罪状は無断IDコールによる心的外傷で謝罪と賠償要求するからな? と言ったらどうするんだよ?受け取るのか?得体も知れねぇ野郎(or尼orその他な有象無象)を近寄せようとするか?

以下追伸

http://b.hatena.ne.jp/entry/s/anond.hatelabo.jp/20180730024721

よくあることについてはご理解頂けたようで何より。

「片側」と言えど発信源は区議信頼性一定程度認められるべきでは

遺憾ながら左派はいいかなる時でも虚偽を言う事当然(ex.放射脳共が意図的にふりまくデマ国会におけるイラク外交官殺害米軍陰謀説を唱えた民主党)況やほかの状況においておや。

大体「通告」なるモノの内容時間はだれか公開してましたっけ?

それに党員が出ろとは言ってないよね?時間が遅いか最初から警備員に渡しててそこは問題にしてない。しかも最終的に受け取られたし

関係ない業者が受け取っていいものかどうかわからんのに押し付けようとする行為が是なんだ、ふーん。業者いじめやね。政治家なら、政治的文章の取り扱い位どうすべきか知ってるのにわざわざ末端が困るように行動して恥じないわけだ。さすが特級市民にして偉大なるLGBT様はちげぇね

さらに言えば

https://twitter.com/KamikawaAya/status/1022910260418207749

いないこと知っててやってるわけですよ? これでイノセントだって言い張るんだ。さすL

以下再追伸

http://b.hatena.ne.jp/entry/b.hatena.ne.jp/entry/s/anond.hatelabo.jp/20180730024721

公開され無くても自民が通告に抗議しない以上、常識的だったと理解すべきだ。警備員関係ないというが、受け取り自体業務内で行えて後に渡してるから自民から事前に話を回せばいいだけでは。

なんの証拠もなく、受け渡し側の言い分を丸呑みするという信仰告白であると受け止めますしかし、こちらはそのような宗教を信じているわけではないので、説得には全く寄与しない言説でした。なお、相手側に強弱はあれ負担を強いるのはすでにして失礼な行為では。

その他にご異存はないようなのでまとめると

という点で一致を見ることが出来、大変有意義ものでした。

以下再々追伸

http://b.hatena.ne.jp/entry/b.hatena.ne.jp/entry/b.hatena.ne.jp/entry/s/anond.hatelabo.jp/20180730024721

最後にという事なのでこちからはお呼び立て致しませんが為念

1、一方の言い分でも身元の明らかな議員根拠抜きに否定宗教未満の偏見

信じる根拠身分だけ、というのは些か前近代的は御発想で素晴らしい奴隷根性であると申し上げたいと思います。懐疑の心ってやつは"身内"に向かんもんですな。議員がどのようなウソをつくのか、まさかご存知ではありますまいに。

2、最初から警備員に渡す事で両者合意してるので、不誠実の根拠不明

合意していたら、そもそも騒ぎなぞにはならんでしょう。それほど

常識的だったと理解すべき

常識を振りかざすのであれば、人の留守中-就中夜分に-強訴をするような奴のどこが誠実なのでしょうねぇ

2018-06-24

A社運営の違法同人誌サイト

同人誌ならグレーだから訴えられない」「駿河屋で買って自社で裁断」 被害続く“違法同人誌サイト”、法人運営の悪質手口を関係者に聞いた (1/2)

http://nlab.itmedia.co.jp/nl/articles/1806/30/news002.html

増田情報とかもまとめて

同人あっぷっぷ

ttp://d-upp.com/

moemax

ttp://moemax.net

同人ラボ

ttp://doujin-labo.com/mainindex.php

BL同人801

ttp://bl-doujin801.com

ビーシェアリング

ttp://b-share.net

BLマガジン

ttp://blmagazine.net

バラ本舗

ttp://comic-doujin.com

ボーイズライブラリー

ttp://animoe123.com/bl/

どこでもどうじん

ttp://d-doujin.com

家畜まんこ

ttp://kachikumanko.black

鬼畜ちんこ

ttp://kichikuchinko.com

他にもあるのかも

同人ラボ鬼畜ちんこツイッターもあった

差別に関する利用規約を調べてみた

大雑把なまとめ

差別」や「ヘイト」などの表現が出てこないのは モバゲーNAVERniconicoYahoo!JAPAN ※すべて「他者権利侵害禁止」などの記載のみ

差別」の具体例が出てこないのは AbemaTVLivedoor小説家になろう

差別」の具体例が一番多いのが Facebookはてな11種 ☆はてな優秀!えらい!

ユニーク差別の具体例

Facebookの「移民ステータス」(移民の滞留資格のことでいいのかな?)

はてなの「収入

YouTubeの「従軍経験

メジャーサイト利用規約から差別に関する部分のみ抜粋ドメインアルファベット順)

対象にしたサイトはてなによく上がってきてコメント機能などがあるサイトをできるだけ網羅したつもりです。

URLがいっぱいあると投稿できないみたいなのでh抜きで書いてます

AbemaTV

ttps://abema.tv/about/terms

第8条(禁止事項)

(5)当社または第三者を不当に差別しまたは誹謗中傷する行為、当社または本サービス名誉・信用を毀損する行為

Ameba

ttp://helps.ameba.jp/rules/post_104.html

第13条(禁止事項)

4.本条第1項に定める禁止事項とは以下に定めるとおりとします。

(2) 他の会員や利用者、当社、その他第三者中傷したり、名誉を傷つけたりするもの権利侵害するもの

人種民族性別信条社会的身分居住地身体的特徴、病歴、教育財産等による差別につながる表現・内容の送信

Facebook

ttps://www.facebook.com/communitystandards/objectionable_content/

12. ヘイトスピーチ

Facebookが考えるヘイトスピーチとは、人種民族国籍信仰性的指向性別ジェンダー、性同一性、重度の病気や障がいなど、保護特性と呼ばれるもの理由に人々を直接攻撃することです。Facebookでは、移民ステータスに関する保護提供しています

GREE

ttps://pid.gree.net/?action=term_generic&page=terms_pc

9. 禁止行為について

(1) 反社会的行為

i. 民族人種性別・年齢等等による差別につながる表現掲載行為

はてな

ttp://www.hatena.ne.jp/rule/rule

第6条(禁止事項)

2. ユーザーは、本サービスを利用するに際し、以下のような社会的不適切行為を行ってはなりません。

b. 人種民族信条性別社会的身分居住場所身体的特徴、病歴、教育財産及び収入等を根拠にする差別表現行為

Livedoor

ttp://www.livedoor.com/rules/

1.4 禁止行為

1.4.1 禁止事由

3.他者差別もしくは誹謗中傷し、他者名誉もしくは信用を毀損侮辱し、もしくは業務妨害する行為、または、そのおそれのある行為

モバゲー

ttp://www.mbga.jp/www/kiyaku.html

第5条 モバゲー会員記述情報について

1.~前略~モバゲー会員は以下の情報記述することはできません。

d. 特許権実用新案権意匠権商標権著作権肖像権その他の他人権利侵害するもの

NAVER

ttps://help.naver.jp/rules/

第3条(禁止事項)

(2) 公の秩序または善良の風俗を害するおそれのある行為(過度に暴力的表現露骨性的表現、その他反社会的な内容を含み他人不快感を与える表現投稿掲載、公開、送信する行為などを含みます。)。

(3) 当社または第三者権利著作権商標権特許権等の知的財産権名誉権、プライバシー権、その他法令上または契約上の権利を広く含みます。)を侵害する行為

niconico

ttp://ex.nicovideo.jp/base/guideline

3.コンテンツによる表現の自由は無制限ではありません

他者権利侵害する行為

例)

他者名誉社会的信用、評判、プライバシー侵害する内容

他者基本的人権著作権等の知的財産権、その他の権利侵害する内容

note

ttps://note.mu/terms

8.禁止事項

差別につながる民族宗教人種性別・年齢等に関するもの

小説家になろう

ttps://syosetu.com/site/rule/

第14条 禁止事項

3. 当グループもしくは他者を不当に差別もしくは誹謗中傷し、他者への不当な差別助長し、又はその名誉もしくは信用を毀損する行為

Togetter

ttps://togetter.com/info/terms

第6条 禁止行為について

4. トゥギャッター若しくは第三者を不当に差別若しくは誹謗中傷し、又はトゥギャッター若しくは第三者の信用若しくは名誉プライバシー権パブリシティ権肖像権若しくはその他一切の権利侵害する行為若しくは侵害するおそれのある行為

7. 国籍民族人種社会的身分性別思想、信教、又は年齢等に関する差別的な表現一般ユーザーが感じ得る行為

Twitter

ttps://help.twitter.com/ja/rules-and-policies/twitter-rules

攻撃的な行為ヘイト行為

ヘイト行為: 人種民族出身地信仰している宗教性的指向性別、性同一性、年齢、障碍、深刻な疾患を理由とした他者への暴力行為脅迫嫌がらせ助長する投稿を禁じます

Yahoo! JAPAN

ttps://about.yahoo.co.jp/docs/info/terms/chapter1.html

第1章 総則

7. サービス利用にあたっての順守事項

(2) 社会規範公序良俗に反するものや、他人権利侵害し、または他人迷惑となるようなものを、投稿掲載、開示、提供または送信(以下これらを総称して「投稿など」といいます)したりする行為

YouTube

ttps://support.google.com/youtube/answer/2801939?hl=ja

悪意のある表現とは、次のような特性に基づいて個人集団に対する暴力助長したり差別扇動したりするようなコンテンツを指します。

人種または民族出自

宗教

身体障がい

性別

・年齢

従軍経験

性的指向性 / 性同一性

2018-06-15

anond:20180615145520

具体的に知りたいことがあるのなら「また来てもいい感じ?」とか聞きゃいいんじゃねーか

単なる会話の相槌にそこまで厳密なラインを引かない方が普通は会話は楽しいものだし。

逆に、なにがしか情報を取得したいのなら、取得したい情報ex.また来たいと思うぐらい良かったか)を取りやす言葉を投げかける方がよい。ただしその手の質問会話を多用すると、会話としての楽しみが減って尋問風味が感じられてあんまり楽しくないので注意。

2018-06-01

anond:20180601164816

実際には、こっから先は自分たちも美味しい思いができるわけじゃない、というのが、老化とともに身に迫ってきてるのが大きいんだろうなと思う。

若者向けのサービスやりたいんだけどと相談をされて、そんな市場はありませんよ?だって~~だから(ex.子育て世代にそんなヒマ&金あるかいな、あなた方がボリュームがあると思い込んでいる団塊Jr.世代はもう中年だし金もない など)をデータと共に説明すると、なんていうか、ピリピリっとする。

んで、大抵は若者ターゲットにすることを諦めて、バブル世代以上をターゲットに据えて「親子二代で!」とかお茶を濁したりすることが多い。

まぁでも全員ではないけどね。

こないだ会った人は50代半ばだったけど、まさに「若者向けのつもりで企画したけど市場がないかシニア向けに切り替えようか」という会議で、初めて説明を遮って「年寄り共が手をこまねいてるからこんな辛気臭い話ばっかりになるんだよ!」って怒ってて、まともなバランス感覚のある人も居るんだなぁ、とは思ったけど。あとで聞いたら出来るけどかなり変わり者だって話だったので、まぁ少数派ではあるんだろうなぁ。

2018-05-26

若手男性アイドル知名度低すぎ問題

 女子ドルは細かいことはわからないけどグループ名だけは知ってる、って場合結構あるのですが(ex.仮面女子東京女子流夢見るアドレセンス)、男子アイドル知名度がほぼありません。

 なぜだ。よく言われているジャニーズテレビ支配のせいなのか。それとも女子ドルには女性ファンもつくけど男子ドルにはまず男性ファンがつかないせいか

 その辺の事情はわかりませんが、せっかくなので知ってる限りの近年デビューした知名度が低い男性アイドルを紹介します。

 こないだ話題になっていた特典会でベタベタする地下男アイドルみたいなのだけが男性アイドルではないですからね! 『男性ファンと違って女性ファン過激ものを求める』ってコメントを見て驚愕したんですよ私は! そんなわけあるか! しかしこんなとんちんかん意見が出てくるのも超トップ知名度ジャニーズと超過激地下ドルしか知られてないせいだと思うので、ぜひ若手で頑張ってるレベルの高い子たちをご覧ください。

King&Prince

https://www.youtube.com/watch?v=j9dHcSlVL4c

 ちょっと前に書いたので詳細はそちらで。

https://anond.hatelabo.jp/20180322225112

 ジャニーズですがデビューしたてということで一応入れました。

 総合的に大変完成されたアイドルです。

 ただ惜しむらくは、キャラマジでいいんですけど、激しく踊りながら歌える人がいないっぽい……。

 デビュー曲の披露、完全被せだったり岸くんだけ生歌だったり平野くんだけ生歌だったりと様々なバージョンがありましたが、緊張してるのを差し引いても見ててハラハラしてしまう。

 本人たちの言う『世界を目指す』を真に受けてる者としてはもうちょっと頑張ってほしいです。

battle boys

https://www.youtube.com/watch?v=rx7_YMMCxKw

 スタダのアイドル流動的過ぎてよくわからない!

 この子達固定グループじゃないらしいんですが、CD出すからにはデビュー扱いでいいですよね?

 ご覧のとおり歌もダンスも上手いし飾り気がない少年っぽさがかっこいいです。

●祭nine

https://www.youtube.com/watch?v=85te9TMwteY

 踊りながら歌いながらアクロもする滅茶苦茶タフな人たち。事務所鬼のようリリースイベントを組むのでこれ踊ったときにはかなり疲弊してたはず……。そのわりには大変クオリティが高いです。恐ろしいことに生歌なんですよ。

 赤・紫・黄色の子特に歌が上手くてこの曲では彼らしか歌ってませんが、ほかの曲は全員参加します。

 

●ANTIME

https://www.youtube.com/watch?v=eKhlNQe8qDs

 メンバー三人が元ジャニーズジュニアジュニア時代からわりと人気のある子たちだったので最初から一定ファンがいました。

 落ち着いて聴ける『いい曲』をよく出していますが、ダンスもできる方なのでわりと動きます

●XOX

https://www.youtube.com/watch?v=jsYTtgVaFq8

 読者モデル出身で結成。ひたすらお洒落さとメンバーの顔の良さを堪能するグループ

 歌とダンスは期待してはいけない。ファンの方によると上達してはいるらしいんですが、いいんです、そこが目玉ではないので。

 最近中心だったとまんくんが抜けて雰囲気が若干変わりました。新加入の二人もモデルの子


 多少なりとも知っているグループはこのぐらいでした。

 あとはスタダのSUPER★DRAGONとかLINEオーディションで勝ち上がったFlowbackとか、いろいろほかにもいるんですけどコメントつけられるほど詳しくないので控えます

 そして力の入れ方に差はあるにせよ皆さん特典会どんどんやってらっしゃいます個人的にはアイドル偶像でいてくれれば満足なので接触はそんなに求めてないんですが、一番手っ取り早くファンを獲得できる手法であることは確かなんですよね。当然事務所ちゃんとしてるところは、握手トーク・ツーショ以上のことはさせません。

 もうそれなりに知名度あるなと思った超特急DISH//m!lkは抜きました。m!lkは正直微妙なとこだったんですけど、佐野くん最近俳優活躍してるから広がってるかなって。

 男性アイドルも魅力的な人沢山いるから、みんながんがん推しみつけてこーね!

2018-05-17

3大インド人発見発明したモノって。

やっぱり、インド人凄いな。

今、日本流行っているモノばかりだ。

2018-05-05

はてなB層といえばいいのか

はてブの人気コメントがひどい。いやサービス当初からひどいけど、最近は読むに耐えない内容のものが多すぎる。


昔 (2012年) の人気コメント

2012年くらいまではまだよかったと思う。支持政党思想に偏る事なく(ないとは言わないが)、記事に対して要旨をまとめていたりきちんとした反駁をしているものが人気コメントに上がってきていた。

はてなブックマーク - 「ルーピー鳩山に怒り心頭だったオバマ大統領 アジア政策を支えた側近の回顧で明らかに (2012/03/21)
http://b.hatena.ne.jp/entry/jbpress.ismedia.jp/articles/-/34803

  • 筆者をみて眉に唾を。もしアメリカを怒らせたなら、それって結構すごいことではないかと。
  • あんな男が首相をやっていた、ということが今だに信じられないよ

当時不人気であった鳩山首相記事なのでさぞ同意コメントが、と思いきや「この記事おかしい」「筆者がおかしい」「記事を読んでの意見」とかもきちんと上がってきている。

こういう状態だと、それぞれの立場から意見があり公平な視点で読むことがしやすい。

(賛成、反対の意見があった上で自分はどちらなのかまた第三の意見なのかという発想ができる)


最近の人気コメント

はてなブックマーク - 麻生財務相セクハラ罪という罪はない、殺人とは違う」:朝日新聞デジタル (2018年5月4日)
http://b.hatena.ne.jp/entry/s/www.asahi.com/articles/ASL547FDDL54ULFA00P.html

  • こういう奴を辞めさせようともしないんだからそりゃ衰退するよ

麻生氏はメディアブーストも相まっての失言メーカーである事は昔から知られているし、こういう意見も出るのは納得できる。
メディア発言しない方がいい人なんだけど、マイクを向けられちゃうんだろうな)


しかし、

こういうコメント最近上がってこない。(「全てのコメントから探してみるとある


ネトウヨネトサヨ意見に流されるB層になってしまっていないか

上記の 2 ページを見比べてもらえれば分かりますが、2012年当時と今ではブコメ数もスター数もかなり増加しています

昨今の TwitterFacebook などの SNS の影響により気軽にスターをつけたりコメントを書いたりする敷居が下がったのかなと思います。(スマホリアクションする人も当時と比べると相当に増えたんだろうな)


人が多ければ集まるリアクションコメントも多いし大衆化するのは仕方がない事ではあるのですが、もう少しどうにか、はてブシステム的な解決でもよいですし、スターコメントをつける方々に良識を持ってアクションしてもらいたいなと思います

ex. スターコメントをつけるその文章を、口に出して家族友人や学友同僚に言える意見なのかどうか。)


知性なきスターコメントあなたの知性をも下げかねないんじゃないかなと思います。お気をつけください。


また、自分が平常であるかどうかも気にした方が良いと思います2012年当時の自身ネトウヨ活動を自省した記事がありましたので引用しておきます

[雑記]かつてネトウヨであった「私」から、今ネトウヨであるあなた」への手紙 (2012-05-26)
https://megalodon.jp/2012-0608-0033-45/d.hatena.ne.jp/akio71/20120526/p1
http://b.hatena.ne.jp/entry/d.hatena.ne.jp/akio71/20120526/p1

自分と直接、関係のない人間


自分家族でもなければ、隣人でもない人間を、一方的侮蔑し、罵倒し、悪いことが起きれば彼等のせいにし、良い人間は「彼等ではない、自分達の同胞であるとする。


日本人」「親日」という、広すぎるくくりで、成果をあげた人間を褒め称え、自分達はなにも努力をせずに、自尊心を満たせること。

いっけん、まっとうに見えるニュースの裏を陰謀論で読み解き、「一足はやく真実に気付いた私達」同士で、悦にいること。

1999年も、2000年も何事もなく過ごしたくせをして、「いずれ来る、反日勢力による危機」という未来に楽しく怯え、「選ばれた私達の手によって、その危機回避できるのだ」「選ばれた私達だけが、その危機に備えられるのだ」と誇ること。


ネトウヨとは、なんとも楽しく、誇らしく、胸のすく、「溜飲の下がる」遊びでした。



これは、私の、ごく個人的事情ですが、ネトウヨだった頃の私は、職場で大きなストレスを抱えていました。


仕事場だけではなく、家庭内にも問題がありました。

ストレスの源をどうにかする方法は「会社を辞める」か「家を出る」しか、当時の私には思いつかず、ネトウヨとして誰か、自分とは縁もゆかりもないがゆえに、完全に自分正義の側に立てる相手を、あげつらい、笑い、糾弾し、いずれ彼等は滅びるのだと信じ、実際には自分の味方などしてもくれないような相手を「日本人」で「愛国」で「親日」だから信頼できるとすがり、どうにもできない自分の状況のかわりに、わかりやすい異国の弱者を助けたいと、思い上がっていました。


熱狂現実逃避ネット上だけの仲間。


ネトウヨであることに、当時、私は酩酊していた、と思います

2018-04-29

昔、dankogaiという人がいた

もう、老人会くらいの人か覚えてないと思うけど、昔dankogaiという人がいたんですよ。

perlハッカーでね、Encode.pm作ったりして貢献されていたんですよ。

すごく本を読むのが早くて、頭がいいもんで、書評ブログを書いていたんですよ。結果、最初の有名ブロガー(アルファブロガー)になったんですよ。

当然perlハッカーからperlソースを書かれてたんですけど、読みづらくてねぇ。perl = 読みづらいを加速させてくれたんじゃないかと思いますよ。

(ex. http://blog.livedoor.jp/dankogai/archives/50502585.html)

人気ブログだったので本とかも出されてね、2000年代インターネット重要人物だったんですよ。

毎日のようにホットエントリしてたくらいだから

それから、4、5年くらい前かなぁ?Twitterの波がグワーって来た頃から更新が減りましてTwitterにすっかり移っちゃったんですな。

さっきみたら去年の7月更新最後だったんですな。内容を見たらVALUリードエンジニアになったとの記事ですね。

サイト行って確認するまでなんのサービスだったかも忘れていました。

まぁ、そんなdankogaiさんなんですけどね、最近はおなじアルファブロガー池田ノビー先生同様、信者商売をされているようでしてニコニコ動画自分チャンネルをやっておられるようです。

さて、そんなdanさんなんですが、結構政権批判ツイートいいねしておりまして、別に個人思想なんて自由だとは思うのですが、「dan kogaiさんはこのツイートいいねしました」で入ってくるもんで、へぇそうなんだと思い、増田らせていただきました。

もう2018年なんですなぁ。

2018-04-06

anond:20180406143226

動物園みたくガラス張りになってて中が見えるアレかな?

それはそうとここ見てみたら?

ttp://www.kokusen.go.jp/ncac_index.html

国民生活センター

2018-04-04

沈黙は金

あるものに対する感想を抱く(ex. きのこの山うまいな~)

その感想対立する意見にも理があると思う(ex. まあたけのこの里もいいところがある)

俯瞰してみた場合どちらが妥当か考える(ex. 1個当たりチョコの量で考えたら、やはりきのこの山がお得ではないか

その俯瞰した視点そもそも偏っていることを自覚する(ex. チョコの量が多ければ良いとは限らない)

もう黙っているのが無難でないかと考えるが、それも無責任かもしれないと思う(ex.陣営からハブられてしまうかも…)

結局当たり障りがないことしか言えない(ex.どっちもそれぞれに美味しいよ)

 

 

最終的にはただ「何かを言いました」というアリバイを作るだけのことに、いちいちこのくらい考えるのしんどい。

喋らなくても平和に生きていけるようになりたい。

2018-02-18

昨今のアイドルソング

僕はアイドルオタクなのだが、、、

昨今のアイドルソング一般ピープルの思い描くような「童貞肯定し、彼らの妄想を膨らませる曲」が著しく減っていると感じる。

アイドル戦国時代終焉を迎え、アイドル混沌時代の今。ザ・制服!のようなグループはとても少ない。それぞれのグループがコンセプト(ex.ラップ祭り釣りneoetc...)を持って活動している。何でもあり。

からこそ!

一般ピープルも「アイドル」というだけで毛嫌いせず曲を聴いてほしい。ライブにも時間が合えば来てほしい!

地上の48G、ハロプロ系、スタダとかでも、地下のわけわからんグループでもいい。正直、どのグループでもいいから、曲を聴いて欲しい。どこかにあなたの好きな雰囲気の曲をやっているグループがあるから

youtubeとかで聞いて。

かにアイドルオタクには、気持ち悪い人も頭のおかしな人も日本語が通じない人もいる、だからといってアイドルソングを無下にしないで欲しい。

かに最近アイドルの中には、自己顕示欲の塊でスキルもないかわいくもないくせにワァーキャーされてイケメンとパコりたいだけの人もいる、だからといってアイドルソングまで下劣ものとして見ないで欲しい。

歌はすごいから。

今の技術音源であれば上手い下手とか無いから。

色々聞いてみて下さい。

2018-02-01

anond:20180201220014

描きたいものに対しての対症療法だけでいい。

ex.虫がもっと上手く描きたい→虫の図鑑画集を買う。実物を見に行く。

何かを描きたいのに描けなくて困る時がいつか来るから、その時に助けてあげられればいい。

ログイン ユーザー登録
ようこそ ゲスト さん