質問編集履歴

5

最後の完成形のコード

2018/12/16 08:06

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -445,3 +445,425 @@
445
445
  ![イメージ説明](58e5400eb9290b961bc77445e87ba5a5.jpeg)
446
446
 
447
447
  toolbar4.bmp
448
+
449
+
450
+
451
+ ##完成形
452
+
453
+ ```
454
+
455
+ #define _CRT_SECURE_NO_WARNINGS
456
+
457
+ #include <windows.h>
458
+
459
+ #include <tchar.h>
460
+
461
+ #include <commctrl.h>
462
+
463
+ #include "toolbar.h"
464
+
465
+ #define TITLE TEXT("Kitty on your lap")
466
+
467
+
468
+
469
+
470
+
471
+ HWND hToolBar; // ツールバーのウィンドウハンドル
472
+
473
+
474
+
475
+ char szClassName[] = "toolbar"; //ウィンドウクラス
476
+
477
+
478
+
479
+ #define TOOLBAR_FLAT 0x800
480
+
481
+
482
+
483
+ TBBUTTON tbb[] = {
484
+
485
+ {0, IDM_1, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
486
+
487
+ {1, IDM_2, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
488
+
489
+ {2, IDM_3, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
490
+
491
+ {3, IDM_4, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
492
+
493
+ {4, IDM_4, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
494
+
495
+ {5, IDM_4, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
496
+
497
+ {6, IDM_4, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
498
+
499
+ {8, IDM_4, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
500
+
501
+ {9, IDM_4, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
502
+
503
+ {10, IDM_4, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
504
+
505
+ {11, IDM_4, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
506
+
507
+
508
+
509
+
510
+
511
+ };
512
+
513
+ TBBUTTON tb = { 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0 };
514
+
515
+
516
+
517
+
518
+
519
+ int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
520
+
521
+ LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
522
+
523
+ BOOL InitApp(HINSTANCE, LPCTSTR);
524
+
525
+ BOOL InitInstance(HINSTANCE, LPCTSTR, int);
526
+
527
+
528
+
529
+
530
+
531
+
532
+
533
+ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,
534
+
535
+ LPSTR lpsCmdLine, int nCmdShow)
536
+
537
+ {
538
+
539
+
540
+
541
+ MSG msg;
542
+
543
+ LPCTSTR szClassName = _T("timer"); //ウィンドウクラス
544
+
545
+
546
+
547
+ if (!hPrevInst) {
548
+
549
+ if (!InitApp(hInstance, szClassName))
550
+
551
+ return 0;
552
+
553
+
554
+
555
+
556
+
557
+ }
558
+
559
+ if (!InitInstance(hInstance, szClassName, nCmdShow)) {
560
+
561
+ return 0;
562
+
563
+ }
564
+
565
+ while (GetMessage(&msg, NULL, 0, 0)) {
566
+
567
+ TranslateMessage(&msg);
568
+
569
+ DispatchMessage(&msg);
570
+
571
+ }
572
+
573
+ return (int)msg.wParam;
574
+
575
+ }
576
+
577
+
578
+
579
+
580
+
581
+ BOOL InitApp(HINSTANCE hInst, LPCTSTR szClassName)
582
+
583
+ {
584
+
585
+ WNDCLASS wc;
586
+
587
+ wc.style = CS_HREDRAW | CS_VREDRAW;
588
+
589
+ wc.lpfnWndProc = WndProc; //プロシージャ名
590
+
591
+ wc.cbClsExtra = 0;
592
+
593
+ wc.cbWndExtra = 0;
594
+
595
+ wc.hInstance = hInst; //インスタンス
596
+
597
+ wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
598
+
599
+ wc.hCursor = LoadCursor(NULL, IDC_ARROW);
600
+
601
+ wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
602
+
603
+ wc.lpszMenuName = NULL; //メニュー名
604
+
605
+ wc.lpszClassName = szClassName;
606
+
607
+ return (RegisterClass(&wc));
608
+
609
+ }
610
+
611
+
612
+
613
+ //ウィンドウの生成
614
+
615
+
616
+
617
+ BOOL InitInstance(HINSTANCE hInst, LPCTSTR szClassName, int nCmdShow)
618
+
619
+ {
620
+
621
+
622
+
623
+ HWND hWnd;
624
+
625
+
626
+
627
+ hWnd = CreateWindow(szClassName,
628
+
629
+ _T("toolbar"),//タイトルバーにこの名前が表示されます
630
+
631
+ WS_OVERLAPPEDWINDOW, //ウィンドウの種類
632
+
633
+ CW_USEDEFAULT, //X座標
634
+
635
+ CW_USEDEFAULT, //Y座標
636
+
637
+ CW_USEDEFAULT, //幅
638
+
639
+ CW_USEDEFAULT, //高さ
640
+
641
+ NULL, //親ウィンドウのハンドル、親を作るときはNULL
642
+
643
+ NULL, //メニューハンドル、クラスメニューを使うときはNULL
644
+
645
+ hInst, //インスタンスハンドル
646
+
647
+ NULL);
648
+
649
+ if (!hWnd)
650
+
651
+ return FALSE;
652
+
653
+ ShowWindow(hWnd, nCmdShow);
654
+
655
+ UpdateWindow(hWnd);
656
+
657
+ return TRUE;
658
+
659
+ }
660
+
661
+
662
+
663
+ //ウィンドウプロシージャ
664
+
665
+
666
+
667
+ //
668
+
669
+ //LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
670
+
671
+ //{
672
+
673
+ // PAINTSTRUCT ps;
674
+
675
+ // HDC hdc;
676
+
677
+ // TCHAR greeting[] = _T("Hello, World!");
678
+
679
+ // switch (msg)
680
+
681
+ // {
682
+
683
+ // case WM_PAINT:
684
+
685
+ // // 描画処理の開始
686
+
687
+ // hdc = BeginPaint(hWnd, &ps);
688
+
689
+ // // 文字列の出力。「Hello, World!」と出力する。
690
+
691
+ // TextOut(hdc,
692
+
693
+ // 5, 5,
694
+
695
+ // greeting, _tcslen(greeting));
696
+
697
+ // // ペイント処理の終了
698
+
699
+ // EndPaint(hWnd, &ps);
700
+
701
+ // break;
702
+
703
+ // case WM_DESTROY:
704
+
705
+ // PostQuitMessage(0);
706
+
707
+ // break;
708
+
709
+ // default:
710
+
711
+ // return DefWindowProc(hWnd, msg, wp, lp);
712
+
713
+ // break;
714
+
715
+ // }
716
+
717
+ //
718
+
719
+ // return 0;
720
+
721
+ //}
722
+
723
+ //
724
+
725
+
726
+
727
+
728
+
729
+ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
730
+
731
+ {
732
+
733
+ int id;
734
+
735
+ HINSTANCE hInst;
736
+
737
+ static HBITMAP hBitmap;
738
+
739
+
740
+
741
+ switch (msg) {
742
+
743
+ case WM_CREATE:
744
+
745
+ hInst = (HINSTANCE)GetWindowLong(hWnd, -6);
746
+
747
+ InitCommonControls();
748
+
749
+ hBitmap = LoadBitmap(
750
+
751
+ ((LPCREATESTRUCT)lp)->hInstance,
752
+
753
+ MAKEINTRESOURCE(ID_MYBMP)
754
+
755
+ );
756
+
757
+ hToolBar = CreateToolbarEx(
758
+
759
+ hWnd,
760
+
761
+ WS_CHILD | WS_VISIBLE,
762
+
763
+ ID_TOOLBAR, // コントロールID
764
+
765
+ 9, //イメージの数
766
+
767
+ NULL,
768
+
769
+ (UINT_PTR)hBitmap, //リソースかmakeintresource
770
+
771
+ tbb,
772
+
773
+ 9, // ボタンの数
774
+
775
+ 0, //ボタンの幅
776
+
777
+ 0, //ボタンの高さ
778
+
779
+ 16, //イメージの幅
780
+
781
+ 15, //イメージの高さ
782
+
783
+ sizeof(TBBUTTON));
784
+
785
+ //SendMessage(hToolBar, TB_INSERTBUTTON,3, (LPARAM)&tb); //toolbar(空白)をさらに追加
786
+
787
+ break;
788
+
789
+ case WM_SIZE:
790
+
791
+ SendMessage(hToolBar, WM_SIZE, wp, lp);
792
+
793
+ break;
794
+
795
+ case WM_COMMAND:
796
+
797
+ switch (LOWORD(wp)) {
798
+
799
+ case IDM_1:
800
+
801
+ MessageBox(hWnd,
802
+
803
+ _T("1"), _T("ボタンの反応"), MB_OK);
804
+
805
+ break;
806
+
807
+ case IDM_2:
808
+
809
+ MessageBox(hWnd,
810
+
811
+ _T("2"), _T("ボタンの反応"), MB_OK);
812
+
813
+ break;
814
+
815
+ case IDM_3:
816
+
817
+ MessageBox(hWnd,
818
+
819
+ _T("3"), _T("ボタンの反応"), MB_OK);
820
+
821
+ break;
822
+
823
+ case IDM_4:
824
+
825
+ MessageBox(hWnd,
826
+
827
+ _T("4"), _T("ボタンの反応"), MB_OK);
828
+
829
+ break;
830
+
831
+ }
832
+
833
+ break;
834
+
835
+ case WM_CLOSE:
836
+
837
+ id = MessageBox(hWnd,
838
+
839
+ _T("終了してもよいですか"),
840
+
841
+ _T("終了確認"),
842
+
843
+ MB_YESNO | MB_ICONQUESTION);
844
+
845
+ if (id == IDYES) {
846
+
847
+ DestroyWindow(hWnd);
848
+
849
+ }
850
+
851
+ break;
852
+
853
+ case WM_DESTROY:
854
+
855
+ PostQuitMessage(0);
856
+
857
+ break;
858
+
859
+ default:
860
+
861
+ return (DefWindowProc(hWnd, msg, wp, lp));
862
+
863
+ }
864
+
865
+ return 0L;
866
+
867
+ }
868
+
869
+ ```

4

gazou

2018/12/16 08:06

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -441,3 +441,7 @@
441
441
  ID_MYBMP BITMAP DISCARDABLE "toolbar.bmp"
442
442
 
443
443
  ```
444
+
445
+ ![イメージ説明](58e5400eb9290b961bc77445e87ba5a5.jpeg)
446
+
447
+ toolbar4.bmp

3

削除

2018/12/10 13:38

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -441,7 +441,3 @@
441
441
  ID_MYBMP BITMAP DISCARDABLE "toolbar.bmp"
442
442
 
443
443
  ```
444
-
445
- ![イメージ説明](ffe0231e461662560ff11eb2f4c97ce1.jpeg)
446
-
447
- toolbar.bmpのファイルの詳細を示した図

2

画像追加

2018/12/10 13:36

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -442,6 +442,6 @@
442
442
 
443
443
  ```
444
444
 
445
- ![イメージ説明](e308ef37bbf9ea3e8407ab69ba3f88e8.jpeg)
445
+ ![イメージ説明](ffe0231e461662560ff11eb2f4c97ce1.jpeg)
446
446
 
447
447
  toolbar.bmpのファイルの詳細を示した図

1

画像追加

2018/12/10 09:02

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -441,3 +441,7 @@
441
441
  ID_MYBMP BITMAP DISCARDABLE "toolbar.bmp"
442
442
 
443
443
  ```
444
+
445
+ ![イメージ説明](e308ef37bbf9ea3e8407ab69ba3f88e8.jpeg)
446
+
447
+ toolbar.bmpのファイルの詳細を示した図