teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

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

2018/11/22 00:35

投稿

asm
asm

スコア15149

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ```c
4
4
  TCHAR buf[80];
5
- _tcsftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", bar);
5
+ _tcsftime(buf, sizeof(buf)/sizeof(TCHAR), "%Y-%m-%d %H:%M:%S", bar);
6
6
  ```
7
7
 
8
8
  ---
@@ -23,9 +23,9 @@
23
23
  time_t foo = 946728000 + x;
24
24
  tm *bar = gmtime(&foo);
25
25
  TCHAR buf[80];
26
- _tcsftime(buf, sizeof(buf), _T("%Y-%m-%d %H:%M:%S"), bar);
26
+ _tcsftime(buf, sizeof(buf)/sizeof(TCHAR), _T("%Y-%m-%d %H:%M:%S"), bar);
27
27
 
28
- draw_text(buf, sizeof(buf));
28
+ draw_text(buf, sizeof(buf)/sizeof(TCHAR));
29
29
  }
30
30
 
31
31
  int main(){

2

追記

2018/11/22 00:35

投稿

asm
asm

スコア15149

answer CHANGED
@@ -3,4 +3,34 @@
3
3
  ```c
4
4
  TCHAR buf[80];
5
5
  _tcsftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", bar);
6
- ```
6
+ ```
7
+
8
+ ---
9
+
10
+ ```C++
11
+ #include <windows.h>
12
+ #include <tchar.h>
13
+ #include <ctime>
14
+
15
+ void draw_text(TCHAR str[], size_t len){
16
+ HWND desktop = GetDesktopWindow();
17
+ HDC hdc = GetWindowDC(desktop);
18
+ TextOut(hdc, 0,0, str, _tcsnlen(str, len));
19
+ UpdateWindow(desktop);
20
+ }
21
+
22
+ void draw_asdf(time_t x){
23
+ time_t foo = 946728000 + x;
24
+ tm *bar = gmtime(&foo);
25
+ TCHAR buf[80];
26
+ _tcsftime(buf, sizeof(buf), _T("%Y-%m-%d %H:%M:%S"), bar);
27
+
28
+ draw_text(buf, sizeof(buf));
29
+ }
30
+
31
+ int main(){
32
+ draw_asdf(100);
33
+ }
34
+ ```
35
+
36
+ `gcc version 8.2.0 (Rev3, Built by MSYS2 project)`にて動作確認しました。

1

修正

2018/11/22 00:30

投稿

asm
asm

スコア15149

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  `_tcsftime`を用いてください。
2
2
 
3
3
  ```c
4
- tchar buf[80];
4
+ TCHAR buf[80];
5
5
  _tcsftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", bar);
6
6
  ```