11WinDlg 对话框一

  1. #include <windows.h>
  2. #include <iostream>
  3. #include "resource.h"
  4. CHAR szText[256] = { 0 };
  5. #define PrintLog(x) WriteConsole(g_hStdout, x, strlen(x), NULL, NULL)
  6. HINSTANCE g_hInst = NULL; //窗口句柄
  7. HANDLE g_hStdout = NULL; //控制台句柄
  8. //Dlg Proc
  9. BOOL CALLBACK SettingDialogProc(
  10. HWND hwndDlg,
  11. UINT nMsg,
  12. WPARAM wParam,
  13. LPARAM lParam
  14. ){
  15. PrintLog("SettingDialogProc\n");
  16. //return DefDlgProc(hwndDlg, nMsg, wParam, lParam);
  17. switch (nMsg)
  18. {
  19. case WM_SYSCOMMAND:
  20. {
  21. switch(wParam)
  22. case SC_CLOSE:
  23. EndDialog(hwndDlg, 2);
  24. }
  25. break;
  26. }
  27. return 0;
  28. }
  29. //Setting
  30. void Setting(HWND hWnd)
  31. {
  32. //创建对话框,这里的返回值和EndDialog的第二个参数相同
  33. int nRet = DialogBox(g_hInst, MAKEINTRESOURCE(IDD_SETTING), hWnd, SettingDialogProc);
  34. sprintf_s(szText, 256, "Setting:%d\n", nRet);
  35. PrintLog(szText);
  36. }
  37. //OnCommand
  38. void OnCommand(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
  39. {
  40. int hCommandID = LOWORD(wParam);
  41. sprintf_s(szText, 256, "%d\n", hCommandID);
  42. PrintLog(szText);
  43. switch (hCommandID)
  44. {
  45. case ID_SETTING:
  46. Setting(hWnd);
  47. break;
  48. case ID_EXIT:
  49. PostQuitMessage(0);
  50. break;
  51. }
  52. }
  53. LRESULT CALLBACK WndProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
  54. {
  55. switch (nMsg)
  56. {
  57. case WM_COMMAND:
  58. OnCommand(hWnd, nMsg, wParam, lParam);
  59. break;
  60. case WM_DESTROY:
  61. PostQuitMessage(0);
  62. break;
  63. }
  64. return DefWindowProc(hWnd, nMsg, wParam, lParam);
  65. }
  66. BOOL RegisterWnd(LPSTR pszClassName)
  67. {
  68. WNDCLASSEX wce = { 0 };
  69. wce.cbSize = sizeof(wce);
  70. wce.cbClsExtra = 0;
  71. wce.cbWndExtra = 0;
  72. wce.hbrBackground = HBRUSH(COLOR_BTNFACE + 1);
  73. wce.hCursor = NULL;
  74. wce.hIcon = NULL;
  75. wce.hIconSm = NULL;
  76. wce.hInstance = g_hInst;
  77. wce.lpfnWndProc = WndProc;
  78. wce.lpszClassName = pszClassName;
  79. wce.lpszMenuName = NULL;
  80. wce.style = CS_HREDRAW | CS_VREDRAW;
  81. ATOM atom = RegisterClassEx(&wce);
  82. if (atom == NULL)
  83. {
  84. return FALSE;
  85. }
  86. else
  87. {
  88. return TRUE;
  89. }
  90. }
  91. HWND CreateWnd(LPSTR pszClassName)
  92. {
  93. HMENU hMenu = LoadMenu(g_hInst, MAKEINTRESOURCE(IDR_MENU1));
  94. HWND hWnd = CreateWindowEx(0, pszClassName, "灭天", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
  95. CW_USEDEFAULT, NULL, hMenu, g_hInst, 0);
  96. return hWnd;
  97. }
  98. void ShowWnd(HWND hWnd)
  99. {
  100. ShowWindow(hWnd, SW_SHOW);
  101. UpdateWindow(hWnd);
  102. }
  103. void Msg()
  104. {
  105. MSG msg = { 0 };
  106. while (GetMessage(&msg, NULL, 0, 0))
  107. {
  108. TranslateMessage(&msg);
  109. DispatchMessage(&msg);
  110. }
  111. }
  112. void ConsoleWnd()
  113. {
  114. AllocConsole();
  115. g_hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
  116. CHAR szText[] = "Debug start:\n";
  117. WriteConsole(g_hStdout, szText, strlen(szText), NULL, NULL);
  118. }
  119. int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd)
  120. {
  121. g_hInst = hInstance;
  122. ConsoleWnd();
  123. RegisterWnd("oooo");
  124. HWND hWnd = CreateWnd("oooo");
  125. ShowWnd(hWnd);
  126. Msg();
  127. return 0;
  128. }

来自为知笔记(Wiz)

时间: 2024-11-10 08:08:47

11WinDlg 对话框一的相关文章

用dialog在前台实现一个简单的UI对话框

<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>对话框部件(Dialog Widget)演示</title> <link rel="stylesheet" href="//apps.bdimg.com/libs/jqueryui/1.10.4/css/jquery-ui.m

bootstrap中的对话框-dialog

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" /> <meta http-

bootstrap中的对话框-dialog-2

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" /> <meta http-

C#WebBrowrse拦截下载对话框

为了实现这个功能,可算是折腾不少时间,网上搜素出来的结果基本都是如何屏蔽警告对话框.后来请教一个技术大牛(程序员之窗的主要作者Starts_2000),他用C++实现了,他尝试了下C#也没有解决,就忙其他的去,大牛时间一般都比较宝贵,后来我就将就用那个C++动态库,那个时候我测试环境是 win7 64位 +vs2013,后来系统环境变化成 win10 +vs2015,突然就不好使了,赶紧重新编译C++源码,各种错误,感觉怎么这么不稳定. 怎么办?总不能再让别人帮忙,下次环境变化了继续问别人? 

Webdriver实现下载功能,屏蔽掉windows弹出的对话框,FireFox下设置浏览器的属性,两种实现方式:

一.使用一个全新的FireFox浏览器打开Web应用,浏览器不带任何插件,也未对浏览器做任何默认配置,但需要对浏览器属性进行配置 // 获取浏览器的所有配置文件 ProfilesIni allProfiles = new ProfilesIni(); // "Selenium" 是之前创建的profile,不带任何插件,也未对浏览器做任何默认配置 FirefoxProfile profile = allProfiles.getProfile("selenium");

Android 对话框 Dialog

对话框 Dialog 什么是对话框 对话框是在当前的页面之上弹出的小窗口, 用于显示一些重要的提示信息, 提示用户的输入,确认信息, 或显示某种状态.如 :  显示进度条对话框, 退出提示. 对话框的特点: 1, 当前界面弹出的小窗口. 2, 用户要与它进行交互, 可以接收用户输入的信息, 也可以反馈信息给用户. 常用对话框: 1, 普通对话框 AlertDialog 2, 进度条对话框  ProgressDialog 3, 日期对话框    DatePickerDialog 4, 时间对话框

QT笔记之模态对话框及非模态对话框

模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在.又有叫法是称为模式对话框,无模式对话框等.所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭.对于非模态对话框,当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互. 在Qt中,显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以模态来显示对话框:另一种是使用show()方法

Android新手入门2016(13)--阻塞对话框PopupWindow

上两章都说了非阻塞的对话框,今天说一下阻塞的对话框--PopupWindow 那么什么是阻塞什么是非阻塞呢?PopupWindow和AlertDialog有什么不同呢? 先说AlertDialog,弹出来之后,背面会变灰,并没有阻塞后台的进程,如果没特殊控制,点击后面灰暗处,弹框会消失掉的. 至于PopupWindow,则是弹出来,后面没有任何变化,并且阻塞该应用的进程,如果一直没退出,应用汇一直等待,点击后面也是没有反应的. 不知道为什么现在上传不了图,就不上传了,其实跟AlertDialog

第6章(3) AlertDialog(警告对话框)

分类:C#.Android.VS2015: 创建日期:2016-02-08 一.简介 AlertDialog也是Android系统当中常用的对话框之一. 在一个AlertDialog中,可以有一个Button.两个Button.3个Button.另外,还可以自定义对话框的样式,比如带有单选按钮的对话框.带有复选框的对话框等. 1.基本用法 一般通过AlertDialog.Builder.Create()方法来构造该对话框,然后就可以通过dialog调用对应的方法.常用方法如下: SetTitle