回答編集履歴

3

tcharの扱いについてちょっとミスがあったため修正

2018/11/22 00:35

投稿

asm
asm

スコア15147

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  TCHAR buf[80];
8
8
 
9
- _tcsftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", bar);
9
+ _tcsftime(buf, sizeof(buf)/sizeof(TCHAR), "%Y-%m-%d %H:%M:%S", bar);
10
10
 
11
11
  ```
12
12
 
@@ -48,11 +48,11 @@
48
48
 
49
49
  TCHAR buf[80];
50
50
 
51
- _tcsftime(buf, sizeof(buf), _T("%Y-%m-%d %H:%M:%S"), bar);
51
+ _tcsftime(buf, sizeof(buf)/sizeof(TCHAR), _T("%Y-%m-%d %H:%M:%S"), bar);
52
52
 
53
53
 
54
54
 
55
- draw_text(buf, sizeof(buf));
55
+ draw_text(buf, sizeof(buf)/sizeof(TCHAR));
56
56
 
57
57
  }
58
58
 

2

追記

2018/11/22 00:35

投稿

asm
asm

スコア15147

test CHANGED
@@ -9,3 +9,63 @@
9
9
  _tcsftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", bar);
10
10
 
11
11
  ```
12
+
13
+
14
+
15
+ ---
16
+
17
+
18
+
19
+ ```C++
20
+
21
+ #include <windows.h>
22
+
23
+ #include <tchar.h>
24
+
25
+ #include <ctime>
26
+
27
+
28
+
29
+ void draw_text(TCHAR str[], size_t len){
30
+
31
+ HWND desktop = GetDesktopWindow();
32
+
33
+ HDC hdc = GetWindowDC(desktop);
34
+
35
+ TextOut(hdc, 0,0, str, _tcsnlen(str, len));
36
+
37
+ UpdateWindow(desktop);
38
+
39
+ }
40
+
41
+
42
+
43
+ void draw_asdf(time_t x){
44
+
45
+ time_t foo = 946728000 + x;
46
+
47
+ tm *bar = gmtime(&foo);
48
+
49
+ TCHAR buf[80];
50
+
51
+ _tcsftime(buf, sizeof(buf), _T("%Y-%m-%d %H:%M:%S"), bar);
52
+
53
+
54
+
55
+ draw_text(buf, sizeof(buf));
56
+
57
+ }
58
+
59
+
60
+
61
+ int main(){
62
+
63
+ draw_asdf(100);
64
+
65
+ }
66
+
67
+ ```
68
+
69
+
70
+
71
+ `gcc version 8.2.0 (Rev3, Built by MSYS2 project)`にて動作確認しました。

1

修正

2018/11/22 00:30

投稿

asm
asm

スコア15147

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ```c
6
6
 
7
- tchar buf[80];
7
+ TCHAR buf[80];
8
8
 
9
9
  _tcsftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", bar);
10
10