How to draw image on a window?
I have created a window with createwindow() api using VS2005 in C++ on Windows Vista
My requirement is to draw an image (of any format) on that window. I am not using any MFC in this application.
windows winapi createwindow
add a comment |
I have created a window with createwindow() api using VS2005 in C++ on Windows Vista
My requirement is to draw an image (of any format) on that window. I am not using any MFC in this application.
windows winapi createwindow
add a comment |
I have created a window with createwindow() api using VS2005 in C++ on Windows Vista
My requirement is to draw an image (of any format) on that window. I am not using any MFC in this application.
windows winapi createwindow
I have created a window with createwindow() api using VS2005 in C++ on Windows Vista
My requirement is to draw an image (of any format) on that window. I am not using any MFC in this application.
windows winapi createwindow
windows winapi createwindow
edited Jan 1 at 19:21
halfer
14.6k758113
14.6k758113
asked Nov 17 '09 at 12:17
Vinayaka KarjigiVinayaka Karjigi
53151030
53151030
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
not exactly sure what is your problem: draw a bitmap on the form, or you would like know how to work with various image formats, or both. Anyways below is an example of how you could load a bitmap and draw it on the form:
HBITMAP hBitmap = NULL;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
switch (message)
{
<...>
case WM_CREATE:
hBitmap = (HBITMAP)LoadImage(hInst, L"c:\test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
break;
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc;
BITMAP bitmap;
HDC hdcMem;
HGDIOBJ oldBitmap;
hdc = BeginPaint(hWnd, &ps);
hdcMem = CreateCompatibleDC(hdc);
oldBitmap = SelectObject(hdcMem, hBitmap);
GetObject(hBitmap, sizeof(bitmap), &bitmap);
BitBlt(hdc, 0, 0, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY);
SelectObject(hdcMem, oldBitmap);
DeleteDC(hdcMem);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
DeleteObject(hBitmap);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
LoadImage loads an icon, cursor, animated cursor, or bitmap. Details here
For working with various images formats you can use Windows Imaging Component (see IWICBitmapDecoder) or code from here Loading JPEG and GIF pictures or 3rd party tools like FreeImage or LeadTools
hope this helps, regards
Hi Serge, it solved my problem of drawing image on window. thanks for the help. but as this takes only bmp,cur and ico files, i need to work on converting png to bmp and then i will pass that bmp to this function
– Vinayaka Karjigi
Nov 19 '09 at 4:40
can anybody guide me in putting png image on window without using any MFC
– Vinayaka Karjigi
Nov 23 '09 at 5:42
2
If I can save someone a few minutes of searching around, I tried using this answer but it didn't work. After a while of poking I tried to change the sizeof(bitmap) to sizeof(BITMAP) and the code worked. I'm using Visual Studio 2015 on Windows 10. Heres the full line : GetObject(hBitmap, sizeof(BITMAP), &bitmap);
– Tristan Dubé
Aug 2 '16 at 1:34
add a comment |
void LoadScreen(HWND hWnd) {
RECT rect;
HDC hdc = GetDC(hWnd);
HBRUSH brush = CreatePatternBrush((HBITMAP)LoadImage(NULL, L"file.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
GetWindowRect(hWnd, &rect);
FillRect(hdc, &rect, brush);
DeleteObject(brush);
ReleaseDC(hWnd, hdc);
}
2
And the leaked HDC that was never released upon function exit? Windows GDI rules 101: If you Get it, then Release it; if you Create it, then Delete it. You did this correctly with your brush (Create/Delete), but failed to do so with your client DC (Get/Release).
– WhozCraig
May 1 '17 at 22:46
1
Ah, thanks :) I resolved it. Just added one line before closing the curly bracket. ReleaseDC(hWnd, hdc);
– Ahmed Hussein
May 1 '17 at 23:36
Functionality wise, how does this compare to serge_gubenko's answer?
– Steven M. Vascellaro
Aug 2 '18 at 14:46
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f1748470%2fhow-to-draw-image-on-a-window%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
not exactly sure what is your problem: draw a bitmap on the form, or you would like know how to work with various image formats, or both. Anyways below is an example of how you could load a bitmap and draw it on the form:
HBITMAP hBitmap = NULL;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
switch (message)
{
<...>
case WM_CREATE:
hBitmap = (HBITMAP)LoadImage(hInst, L"c:\test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
break;
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc;
BITMAP bitmap;
HDC hdcMem;
HGDIOBJ oldBitmap;
hdc = BeginPaint(hWnd, &ps);
hdcMem = CreateCompatibleDC(hdc);
oldBitmap = SelectObject(hdcMem, hBitmap);
GetObject(hBitmap, sizeof(bitmap), &bitmap);
BitBlt(hdc, 0, 0, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY);
SelectObject(hdcMem, oldBitmap);
DeleteDC(hdcMem);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
DeleteObject(hBitmap);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
LoadImage loads an icon, cursor, animated cursor, or bitmap. Details here
For working with various images formats you can use Windows Imaging Component (see IWICBitmapDecoder) or code from here Loading JPEG and GIF pictures or 3rd party tools like FreeImage or LeadTools
hope this helps, regards
Hi Serge, it solved my problem of drawing image on window. thanks for the help. but as this takes only bmp,cur and ico files, i need to work on converting png to bmp and then i will pass that bmp to this function
– Vinayaka Karjigi
Nov 19 '09 at 4:40
can anybody guide me in putting png image on window without using any MFC
– Vinayaka Karjigi
Nov 23 '09 at 5:42
2
If I can save someone a few minutes of searching around, I tried using this answer but it didn't work. After a while of poking I tried to change the sizeof(bitmap) to sizeof(BITMAP) and the code worked. I'm using Visual Studio 2015 on Windows 10. Heres the full line : GetObject(hBitmap, sizeof(BITMAP), &bitmap);
– Tristan Dubé
Aug 2 '16 at 1:34
add a comment |
not exactly sure what is your problem: draw a bitmap on the form, or you would like know how to work with various image formats, or both. Anyways below is an example of how you could load a bitmap and draw it on the form:
HBITMAP hBitmap = NULL;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
switch (message)
{
<...>
case WM_CREATE:
hBitmap = (HBITMAP)LoadImage(hInst, L"c:\test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
break;
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc;
BITMAP bitmap;
HDC hdcMem;
HGDIOBJ oldBitmap;
hdc = BeginPaint(hWnd, &ps);
hdcMem = CreateCompatibleDC(hdc);
oldBitmap = SelectObject(hdcMem, hBitmap);
GetObject(hBitmap, sizeof(bitmap), &bitmap);
BitBlt(hdc, 0, 0, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY);
SelectObject(hdcMem, oldBitmap);
DeleteDC(hdcMem);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
DeleteObject(hBitmap);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
LoadImage loads an icon, cursor, animated cursor, or bitmap. Details here
For working with various images formats you can use Windows Imaging Component (see IWICBitmapDecoder) or code from here Loading JPEG and GIF pictures or 3rd party tools like FreeImage or LeadTools
hope this helps, regards
Hi Serge, it solved my problem of drawing image on window. thanks for the help. but as this takes only bmp,cur and ico files, i need to work on converting png to bmp and then i will pass that bmp to this function
– Vinayaka Karjigi
Nov 19 '09 at 4:40
can anybody guide me in putting png image on window without using any MFC
– Vinayaka Karjigi
Nov 23 '09 at 5:42
2
If I can save someone a few minutes of searching around, I tried using this answer but it didn't work. After a while of poking I tried to change the sizeof(bitmap) to sizeof(BITMAP) and the code worked. I'm using Visual Studio 2015 on Windows 10. Heres the full line : GetObject(hBitmap, sizeof(BITMAP), &bitmap);
– Tristan Dubé
Aug 2 '16 at 1:34
add a comment |
not exactly sure what is your problem: draw a bitmap on the form, or you would like know how to work with various image formats, or both. Anyways below is an example of how you could load a bitmap and draw it on the form:
HBITMAP hBitmap = NULL;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
switch (message)
{
<...>
case WM_CREATE:
hBitmap = (HBITMAP)LoadImage(hInst, L"c:\test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
break;
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc;
BITMAP bitmap;
HDC hdcMem;
HGDIOBJ oldBitmap;
hdc = BeginPaint(hWnd, &ps);
hdcMem = CreateCompatibleDC(hdc);
oldBitmap = SelectObject(hdcMem, hBitmap);
GetObject(hBitmap, sizeof(bitmap), &bitmap);
BitBlt(hdc, 0, 0, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY);
SelectObject(hdcMem, oldBitmap);
DeleteDC(hdcMem);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
DeleteObject(hBitmap);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
LoadImage loads an icon, cursor, animated cursor, or bitmap. Details here
For working with various images formats you can use Windows Imaging Component (see IWICBitmapDecoder) or code from here Loading JPEG and GIF pictures or 3rd party tools like FreeImage or LeadTools
hope this helps, regards
not exactly sure what is your problem: draw a bitmap on the form, or you would like know how to work with various image formats, or both. Anyways below is an example of how you could load a bitmap and draw it on the form:
HBITMAP hBitmap = NULL;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
switch (message)
{
<...>
case WM_CREATE:
hBitmap = (HBITMAP)LoadImage(hInst, L"c:\test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
break;
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc;
BITMAP bitmap;
HDC hdcMem;
HGDIOBJ oldBitmap;
hdc = BeginPaint(hWnd, &ps);
hdcMem = CreateCompatibleDC(hdc);
oldBitmap = SelectObject(hdcMem, hBitmap);
GetObject(hBitmap, sizeof(bitmap), &bitmap);
BitBlt(hdc, 0, 0, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY);
SelectObject(hdcMem, oldBitmap);
DeleteDC(hdcMem);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
DeleteObject(hBitmap);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
LoadImage loads an icon, cursor, animated cursor, or bitmap. Details here
For working with various images formats you can use Windows Imaging Component (see IWICBitmapDecoder) or code from here Loading JPEG and GIF pictures or 3rd party tools like FreeImage or LeadTools
hope this helps, regards
answered Nov 19 '09 at 2:43
serge_gubenkoserge_gubenko
17.2k24455
17.2k24455
Hi Serge, it solved my problem of drawing image on window. thanks for the help. but as this takes only bmp,cur and ico files, i need to work on converting png to bmp and then i will pass that bmp to this function
– Vinayaka Karjigi
Nov 19 '09 at 4:40
can anybody guide me in putting png image on window without using any MFC
– Vinayaka Karjigi
Nov 23 '09 at 5:42
2
If I can save someone a few minutes of searching around, I tried using this answer but it didn't work. After a while of poking I tried to change the sizeof(bitmap) to sizeof(BITMAP) and the code worked. I'm using Visual Studio 2015 on Windows 10. Heres the full line : GetObject(hBitmap, sizeof(BITMAP), &bitmap);
– Tristan Dubé
Aug 2 '16 at 1:34
add a comment |
Hi Serge, it solved my problem of drawing image on window. thanks for the help. but as this takes only bmp,cur and ico files, i need to work on converting png to bmp and then i will pass that bmp to this function
– Vinayaka Karjigi
Nov 19 '09 at 4:40
can anybody guide me in putting png image on window without using any MFC
– Vinayaka Karjigi
Nov 23 '09 at 5:42
2
If I can save someone a few minutes of searching around, I tried using this answer but it didn't work. After a while of poking I tried to change the sizeof(bitmap) to sizeof(BITMAP) and the code worked. I'm using Visual Studio 2015 on Windows 10. Heres the full line : GetObject(hBitmap, sizeof(BITMAP), &bitmap);
– Tristan Dubé
Aug 2 '16 at 1:34
Hi Serge, it solved my problem of drawing image on window. thanks for the help. but as this takes only bmp,cur and ico files, i need to work on converting png to bmp and then i will pass that bmp to this function
– Vinayaka Karjigi
Nov 19 '09 at 4:40
Hi Serge, it solved my problem of drawing image on window. thanks for the help. but as this takes only bmp,cur and ico files, i need to work on converting png to bmp and then i will pass that bmp to this function
– Vinayaka Karjigi
Nov 19 '09 at 4:40
can anybody guide me in putting png image on window without using any MFC
– Vinayaka Karjigi
Nov 23 '09 at 5:42
can anybody guide me in putting png image on window without using any MFC
– Vinayaka Karjigi
Nov 23 '09 at 5:42
2
2
If I can save someone a few minutes of searching around, I tried using this answer but it didn't work. After a while of poking I tried to change the sizeof(bitmap) to sizeof(BITMAP) and the code worked. I'm using Visual Studio 2015 on Windows 10. Heres the full line : GetObject(hBitmap, sizeof(BITMAP), &bitmap);
– Tristan Dubé
Aug 2 '16 at 1:34
If I can save someone a few minutes of searching around, I tried using this answer but it didn't work. After a while of poking I tried to change the sizeof(bitmap) to sizeof(BITMAP) and the code worked. I'm using Visual Studio 2015 on Windows 10. Heres the full line : GetObject(hBitmap, sizeof(BITMAP), &bitmap);
– Tristan Dubé
Aug 2 '16 at 1:34
add a comment |
void LoadScreen(HWND hWnd) {
RECT rect;
HDC hdc = GetDC(hWnd);
HBRUSH brush = CreatePatternBrush((HBITMAP)LoadImage(NULL, L"file.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
GetWindowRect(hWnd, &rect);
FillRect(hdc, &rect, brush);
DeleteObject(brush);
ReleaseDC(hWnd, hdc);
}
2
And the leaked HDC that was never released upon function exit? Windows GDI rules 101: If you Get it, then Release it; if you Create it, then Delete it. You did this correctly with your brush (Create/Delete), but failed to do so with your client DC (Get/Release).
– WhozCraig
May 1 '17 at 22:46
1
Ah, thanks :) I resolved it. Just added one line before closing the curly bracket. ReleaseDC(hWnd, hdc);
– Ahmed Hussein
May 1 '17 at 23:36
Functionality wise, how does this compare to serge_gubenko's answer?
– Steven M. Vascellaro
Aug 2 '18 at 14:46
add a comment |
void LoadScreen(HWND hWnd) {
RECT rect;
HDC hdc = GetDC(hWnd);
HBRUSH brush = CreatePatternBrush((HBITMAP)LoadImage(NULL, L"file.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
GetWindowRect(hWnd, &rect);
FillRect(hdc, &rect, brush);
DeleteObject(brush);
ReleaseDC(hWnd, hdc);
}
2
And the leaked HDC that was never released upon function exit? Windows GDI rules 101: If you Get it, then Release it; if you Create it, then Delete it. You did this correctly with your brush (Create/Delete), but failed to do so with your client DC (Get/Release).
– WhozCraig
May 1 '17 at 22:46
1
Ah, thanks :) I resolved it. Just added one line before closing the curly bracket. ReleaseDC(hWnd, hdc);
– Ahmed Hussein
May 1 '17 at 23:36
Functionality wise, how does this compare to serge_gubenko's answer?
– Steven M. Vascellaro
Aug 2 '18 at 14:46
add a comment |
void LoadScreen(HWND hWnd) {
RECT rect;
HDC hdc = GetDC(hWnd);
HBRUSH brush = CreatePatternBrush((HBITMAP)LoadImage(NULL, L"file.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
GetWindowRect(hWnd, &rect);
FillRect(hdc, &rect, brush);
DeleteObject(brush);
ReleaseDC(hWnd, hdc);
}
void LoadScreen(HWND hWnd) {
RECT rect;
HDC hdc = GetDC(hWnd);
HBRUSH brush = CreatePatternBrush((HBITMAP)LoadImage(NULL, L"file.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
GetWindowRect(hWnd, &rect);
FillRect(hdc, &rect, brush);
DeleteObject(brush);
ReleaseDC(hWnd, hdc);
}
edited Sep 8 '17 at 9:18
Bja
13717
13717
answered May 1 '17 at 21:13
Ahmed HusseinAhmed Hussein
3181622
3181622
2
And the leaked HDC that was never released upon function exit? Windows GDI rules 101: If you Get it, then Release it; if you Create it, then Delete it. You did this correctly with your brush (Create/Delete), but failed to do so with your client DC (Get/Release).
– WhozCraig
May 1 '17 at 22:46
1
Ah, thanks :) I resolved it. Just added one line before closing the curly bracket. ReleaseDC(hWnd, hdc);
– Ahmed Hussein
May 1 '17 at 23:36
Functionality wise, how does this compare to serge_gubenko's answer?
– Steven M. Vascellaro
Aug 2 '18 at 14:46
add a comment |
2
And the leaked HDC that was never released upon function exit? Windows GDI rules 101: If you Get it, then Release it; if you Create it, then Delete it. You did this correctly with your brush (Create/Delete), but failed to do so with your client DC (Get/Release).
– WhozCraig
May 1 '17 at 22:46
1
Ah, thanks :) I resolved it. Just added one line before closing the curly bracket. ReleaseDC(hWnd, hdc);
– Ahmed Hussein
May 1 '17 at 23:36
Functionality wise, how does this compare to serge_gubenko's answer?
– Steven M. Vascellaro
Aug 2 '18 at 14:46
2
2
And the leaked HDC that was never released upon function exit? Windows GDI rules 101: If you Get it, then Release it; if you Create it, then Delete it. You did this correctly with your brush (Create/Delete), but failed to do so with your client DC (Get/Release).
– WhozCraig
May 1 '17 at 22:46
And the leaked HDC that was never released upon function exit? Windows GDI rules 101: If you Get it, then Release it; if you Create it, then Delete it. You did this correctly with your brush (Create/Delete), but failed to do so with your client DC (Get/Release).
– WhozCraig
May 1 '17 at 22:46
1
1
Ah, thanks :) I resolved it. Just added one line before closing the curly bracket. ReleaseDC(hWnd, hdc);
– Ahmed Hussein
May 1 '17 at 23:36
Ah, thanks :) I resolved it. Just added one line before closing the curly bracket. ReleaseDC(hWnd, hdc);
– Ahmed Hussein
May 1 '17 at 23:36
Functionality wise, how does this compare to serge_gubenko's answer?
– Steven M. Vascellaro
Aug 2 '18 at 14:46
Functionality wise, how does this compare to serge_gubenko's answer?
– Steven M. Vascellaro
Aug 2 '18 at 14:46
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f1748470%2fhow-to-draw-image-on-a-window%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown